Linux网络安全技术

网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭受到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断。

本节索引:

一、网络安全基本概念

二、加密技术

1.对称加密

2.非对称加密

三、认证技术

1.数字签名

2.数字证书

四、安全套接层协议SSL与OpenSSL

五、操作:搭建私有根CA,并向CA申请证书

 

timg_image&quality=80&size=b9999_10000&sec=1527255144&di=c4ac117860363314d306f8e

一、网络安全基本概念

信息安全防护的目标有:

保密性 Confidentiality

信息不泄露给非授权用户、实体或过程,或供其利用的特性。

完整性 Integrity

数据未经授权不能进行改变的特性。即信息在存储或传输过程中保持不被修改、不被破坏和丢失的特性。

可用性 Usability

可被授权实体访问并按需求使用的特性。即当需要时能否存取所需的信息。例如网络环境下拒绝服务、破坏网络和有关系统的正常运行等都属于对可用性的攻击;

可控制性Controlability

对信息的传播及内容具有控制能力。

不可抵赖性 Non-repudiation

不可抵赖性包括对自己行为的不可抵赖及对行为发生的时间的不可抵赖。通过进行身份认证和数字签名可以避免对交易行为的抵赖,通过数字时间戳可以避免对行为发生的抵赖。

 

对于运维工程师最关键的两个工作职责:保证数据安全性、保证高可用性

 

 

安全防护环节

物理安全:各种设备/主机、机房环境

系统安全:主机或设备的操作系统

应用安全:各种网络服务、应用程序

网络安全:对网络访问的控制、防火墙规则

数据安全:信息的备份与恢复、加密解密

管理安全:各种保障性的规范、流程、方法

 

生产环境中可能遇到的安全攻击

Spoofing 假冒

假冒指的是某个实体(人或系统)发出含有其他实体身份信息的数据信息,假扮成其他实体,从而以欺骗方式获取一些合法用户的权利和特权。

Tampering 篡改

篡改消息是指一个合法消息的某些部分被改变、删除,消息被延迟或改变顺序,通常用以产生一个未授权的效果。如修改传输消息中的数据,将“允许甲执行操作”改为“允许乙执行操作”。

Repudiation 否认

Information Disclosure 信息泄漏

窃听是网络攻击中最常用的手段。目前应用最广泛的局域网上的数据传送是基于广播方式进行的,这就使一台主机有可能受到本子网上传送的所有信息。

Denial of Service 拒绝服务

拒绝服务即常说的DoS(Deny of Service),会导致对通讯设备正常使用或管理被无条件地终端。通常是对整个网络实施破坏,以达到降低性能、终端服务的目的。这种攻击也可能有一个特定的目标,如到某一特定目的地(如安全审计服务)的所有数据包都被组织。

Elevation of Privilege 提升权限

黑客可能通过一些漏洞来执行一些远程代码,来在你的系统中得到权限,当黑客得到管理者权限之后,就会通过一些特权命令或者提全程序来得到root权限。来达到控制你的系统的目的。

 

 

二、加密技术

加密技术是电子商务采取的基本安全措施,交易双方可根据需要在信息交换的阶段使用。加密技术分为两

类,即对称加密非对称加密

1.对称加密

对称加密:加密key1与解密key2用的是用一把密钥

优势:速度快、效率高,适合加密大量的数据

特性:将原始数据分割成固定大小的块,逐个进行加密

缺点:密钥过多;密钥分发;数据来源无法确认

算法:DES、3DES、AES、Blowfish、Twofish、IDEA、RC6、CAST5等

 

对称加密命令:

1)gpg命令:

对称加密file文件

         gpg -c file

         ls file.gpg

在另一台主机上解密file

       gpg -o file -d file.gpg

 

2)openssl命令:

对称加密:

工具:openssl enc, gpg

算法:3des, aes, blowfish, twofish

enc命令:

帮助:man enc

加密:

         openssl enc -e -des3 -a -salt -in testfile

                  -out testfile.cipher

解密:

         openssl enc -d -des3 -a -salt –in testfile.cipher

                  -out testfile

         openssl ?

 

 

 

2.非对称加密

使用一对密钥来分别完成加密和解密操作,其中一个公开发布(即公钥),另一个由用户自己秘密保存(即私钥

举例来讲,Alice要与Bob进行通信:

Alice —> Bob

Alice:public-A(公钥),secret-A(私钥)

Bob:public-B(公钥),secret-B(私钥)

公钥公开,私钥不可公开,只有自己有

公钥加密—>需要对应私钥解密

优点:解决了对称加密无法确认数据来源,密钥过多的缺点

缺点:加密效率低、速度慢、密码长,适合加密较小的数据

算法:RSA(加密、数字签名),DSA(数字签名),ELGamal

 

data—加密Pb(data)—解密Sb{Pb(data)}—data    加密功能

data—加密Sa(data)—解密Pa{Sa(data)}—data     数据来源功能

 

非对称算法DES对称算法RSA和大概对应关系:

加密算法  文件大小  加密后大小  加密所需时间  解密所需时间

DES           1G               2G                    4m                   8m

RSA           1G               1G                    1m                 64hour

 

非对称加密命令:

1)gpg命令:

在hostB主机上用公钥加密,在hostA主机上解密

在hostA主机上生成公钥/私钥对

注:此步骤必须在图形界面下进行

         gpg –gen-key          rng_tools

在hostA主机上查看公钥

       gpg –list-keys

在hostA主机上导出公钥到wang.pubkey

         gpg -a –export -o wang.pubkey

从hostA主机上复制公钥文件到需加密的B主机上

         scp wang.pubkey hostB:

在需加密数据的hostB主机上生成公钥/私钥对

         gpg –list-keys

         gpg –gen-key

在hostB主机上导入公钥

         gpg –import wang.pubkey

         gpg –list-keys

用从hostA主机导入的公钥,加密hostB主机的文件file,生成file.gpg

       gpg -e -r wangx file

         file file.gpg

复制加密文件到hostA主机

         scp fstab.gpg hostA:

在hostA主机解密文件

         gpg -d file.gpg

         gpg -o file -d file.gpg

删除公钥和私钥

         gpg –delete-keys wangx

         gpg –delete-secret-keys wangx

 

2)openssl命令:

生成密钥对:man genrsa

生成私钥

         openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS

         (umask 077; openssl genrsa –out test.key –des 2048)

openssl rsa -in test.key –out test2.key 将加密key解密

从私钥中提取出公钥

         openssl rsa -in PRIVATEKEYFILE –pubout –out PUBLICKEYFILE

         openssl rsa –in test.key –pubout –out test.key.pub

 

 

三、认证技术

认证技术是用电子手段证明发送者和接收者身份及其文件完整性的技术,即确认双方的身份信息在传送或存储过程中未被篡改过。

 

要想解释数字签名的原理,先来了解hash单向散列digest摘要概念:

单向散列:将任意数据缩小成固定大小的“指纹”

特性:

任意长度输入

固定长度输出

若修改数据,指纹也会改变(“不会产生冲突”)

法从指纹中重新生成数据(“单向”)

功能:数据完整性

常见hash算法:

md5: 128bits、sha1: 160bits、sha224

sha256、sha384、sha512

常用工具:

md5sum | sha1sum [ –check ] file

openssl、gpg

rpm -V

 

 

digest摘要=hash(data)

经过hash算法得出的结果我们称为摘要,摘要单向不可推,即只拿到摘要digest是无法反推出数据的

特性:数据不变,摘要不变;数据有小变化,则摘要完全改变,雪崩效应

digest长度固定大小

md5:128

shal:160

 

1.数字签名

数字签名:对数据进行hash计算后的摘要进行私钥加密。

也称电子签名,如同出示手写签名一样,能起到电子文件认证、核准和生效的作用。

即:Sa{hash(data)}

数字证书完整流程:

数字证书流程客户端:

1.对原文进行hash运算得到摘要digest

hash(data)

2.将摘要用本方私钥加密得到数字签名

Sa{hash(data)}

3.连同原文同签名一起发送

data+Sa{hash(data)}

服务器端:

1.接收到原文与签名后,用客户端公钥解锁摘要

pa–>hash(data)

2.再对原文进行hash计算

hash(data)

3.计算后的摘要与解锁摘要对比;如相同,则未被篡改;如不同,则发生过篡改

pa–>hash(data)对比 hash(data)

 

2.数字证书

数字证书是一个经证书授权中心(CA)数字签名的包括公钥拥有者信息以及公钥的文件。

数字证书的最主要构成包括一个用户公钥,加上密钥所有者的用户身份标识符,以及用户信任的证书权威机构(CA)签名

 

数字证书相关概念:

签证机构:CA(Certificate Authority)

注册机构:RA

证书吊销列表:CRL

 

X.509:定义了证书的结构以及认证协议标准

版本号

序列号

签名算法

颁发者

有效期限

主体名称

 

根CA:普通CA上端还有其他CA认证,一个CA认证链的最顶端称为根CA或Root CA,Root CA自己给自己签名。

 

数字证书类型:

普通域名证书:www.tmall.com 只签名一个网站地址

泛域名证书:*.tmall.com            签名一类网站地址

 

 

数字证书获取:

a)使用证书授权机构

生成签名请求(csr)

将csr发送给CA

从CA处接收签名

b)自签名的证书

自己签发自己的公钥

适用于公司内部网络加密,互联网中不认可

 

 

 

四、安全套接层协议SSL与OpenSSL

SSL协议位于传输层和应用层之间,由SSL记录协议、SSL握手协议和SSL警报协议组成的。

SSL握手协议被用来在客户与服务器真正传输应用层数据之前建立安全机制。当客户与服务器第一次通信时,双方通过握手协议在版本号、密钥交换算法、数据加密算法和Hash算法上达成一致,然后互相验证

对方身份,最后使用协商好的密钥交换算法产生一个只有双方知道的秘密信息,客户和服务器各自根据此秘密信息产生数据加密算法和Hash算法参数。

SSL记录协议根据SSL握手协议协商的参数,对应用层送来的数据进行加密、压缩、计算消息鉴别码MAC,然后经网络传输层发送给对方。

SSL警报协议用来在客户和服务器之间传递SSL出错信息。

 

Record 协议:包括对消息的分段、压缩、消息认证和完整性保护、加密等

HTTPS 协议:就是“HTTP 协议”和“SSL/TLS 协议”的组合。HTTP over

SSL”或“HTTP over TLS”,对http协议的文本数据进行加密处理后,成为二

进制形式传输

 

OpenSSL:

OpenSSL 是一个安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。

三个组件:

openssl:多用途的命令行工具,包openssl

libcrypto:加密算法库,包openssl-libs

libssl:加密模块应用库,实现了ssl及tls,包nss

 

openssl命令:

两种运行模式:交互模式和批处理模式

openssl version:程序版本号

标准命令、消息摘要命令、加密命令

标准命令:

enc, ca, req, …

对称加密与非对称加密命令上面已经提到,介绍下openssl的其他功能:

单向加密:

工具:md5sum, sha1sum, sha224sum,sha256sum…

openssl dgst

dgst命令:

帮助:man dgst

         openssl dgst -md5 [-hex默认] /PATH/SOMEFILE

         openssl dgst -md5 testfile

         md5sum /PATH/TO/SOMEFILE

MAC: Message Authentication Code,单向加密的一种延伸应用,用于实现

网络通信中保证所传输数据的完整性机制

CBC-MAC

HMAC:使用md5或sha1算法

生成用户密码:

passwd命令:

帮助:man sslpasswd

         openssl passwd -1 -salt SALT(最多8位)

         openssl passwd -1 –salt centos

生成随机数:

帮助:man sslrand

         openssl rand -base64|-hex NUM

NUM: 表示字节数;-hex时,每个字符为十六进制,相当于4位二进制,出现的字符数为NUM*2

 

随机数生成器:伪随机数字

键盘和鼠标,块设备中断

/dev/random:仅从熵池返回随机数;随机数用尽,阻塞

/dev/urandom:从熵池返回随机数;随机数用尽,会利用软件生成伪随机数,非阻塞

 

 

五、操作:搭建私有根CA,并向CA申请证书

一、建立Root CA

1.生成私钥

         vim /etc/pki/tls/openssl.conf

        (umask 066;openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)

2.自签名证书

        openssl   req   -new   -x509   -key   /etc/pki/CA/private/cakey.pem   -out   /etc/pki/CA/cacert.pem -days   3650

-x509代表自己给自己前面

交互式填写:

国家:CN

省份:beijing

城市:beijing

公司名称:magedu

部门:M30

Common name:Magedu.com

 

查看生成的签名证书

         openssl x509 -in cacert.pem  -noout -text

        

二、用户或服务器

1.生成私钥

         (umask 066;openssl genrsa -out app.key 1024)

2.生成证书申请

         openssl req -new -key app.key -out app.csr

交互式填写:

国家:CN

省份:beijing

城市:beijing

公司名称:magedu

部门:M30

Common name:app.Magedu.com

注:国家,省份,公司必须一致才能申请成功

3.将申请文件发给CA

         scp app.csr   CA:IP

三、CA颁发证书

touch /etc/pki/CA/index.txt               建立已颁发证书信息列表文件;V:生效;R:吊销;

echo 0F > /etc/pki/CA/serial      建立证书序列号

openssl ca -in app.csr -out /etc/pki/CA/certs/app.crt -days 100

 

四、证书发送给客户端

         scp app.crt   Client:IP

 

五、应用软件使用证书

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/98805

(0)
wangxczwangxcz
上一篇 2018-05-18
下一篇 2018-05-19

相关推荐

  • tomcat2 memarche

    会话集群复制

    2018-07-18
  • liunx 基础

    简单命令:如图是

    Linux笔记 2018-04-01
  • MYSQL数据库

    MYSQL数据库 数据的时代 涉及的数据量大 数据不随程序的结束而消失 数据被多个应用程序共享 大数据   数据库的发展史: 萌芽阶段—–文件系统: 使用磁盘文件来存储数据 初级阶段—–第一代数据库: 出现了网状模型、层次模型的数据库 中级阶段—–第二代数据库: …

    Linux笔记 2018-06-18
  • LAMP架构实现

    LAMP是一组Web应用软件的组合,Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,所有组成产品均是开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。

    2018-06-23
  • Linux中的练习题

    Linux文本查看和处理练习题
    Linux用户和组管理类命令的使用方法及练习题

    Linux笔记 2018-07-08
  • 用户管理练习

    用户管理练习: 1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@localhost ~]# who | cut -d’ ‘ -f1 | sort -u liulian root 2、取出最后登录到当前系统的用户的相关信息。 [root@localhost ~]# last | h…

    2018-05-28