linux之网络安全技术

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

一、网络安全基本概念

信息安全防护的目标

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

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

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

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

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

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

安全防护环节

  • 物理安全:各种设备/主机、机房环境
  • 系统安全:主机或设备的操作系统
  • 应用安全:各种网络服务、应用程序
  • 网络安全:对网络访问的控制、防火墙规则
  • 数据安全:信息的备份与恢复、加密解密
  • 管理安全:各种保障性的规范、流程、方法

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

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

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

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

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

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

安全设计基本原则

  • 使用成熟的安全系统
  • 以小人之心度输入数据
  • 外部系统是不安全的
  • 最小授权
  • 减少外部接口
  • 缺省使用安全模式
  • 安全不是似是而非
  • 从STRIDE思考
  • 在入口处检查
  • 从管理上保护好你的系统

常用安全技术

  • 认证
  • 授权
  • 审计
  • 安全通信

二、网络加密技术

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

加密技术分为两类:
1. 对称加密技术
2. 非对称加密技术

对称加密

对称加密:加密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 ?
    

非对称加密

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

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

Alice —> Bob

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

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

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

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

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

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

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

非对称算法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
    

数字签名

数字签名:对数据进行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)

数字证书

数字证书是一个经证书授权中心(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申请证书

  1. 建立Root CA

    • 生成私钥

       vim /etc/pki/tls/openssl.conf
      
      (umask 066;openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)
      
    • 自签名证书

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

      -new: 生成新证书签署请求
      -x509: 专用于CA生成自签证书,向自己申请证书
      -key: 生成请求时用到的私钥文件
      -days n:证书的有效期限
      -out / PATH/TO/SOMECERTFILE : 证书的保存路径
      
    • 交互式填写:

      国家:CN

      省份:beijing

      城市:beijing

      公司名称:magedu

      部门:N30

      Common name:Magedu.com

    • 查看生成的签名证书

       openssl x509 -in cacert.pem  -noout -text
      
  2. 用户或服务器

    .1. 生成私钥

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

    . 2. 生成证书申请

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

    3.交互式填写:

    国家:CN
    
    省份:beijing
    
    城市:beijing
    
    公司名称:magedu
    
    部门:M30
    
    Common name:app.Magedu.com
    
    注:国家,省份,公司必须一致才能申请成功
    
  3. 将申请文件发给CA

    scp app.csr CA:IP

  4. 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
    
  5. 证书发送给客户端

     scp app.crt   Client:IP
    
  6. 应用软件使用证书

阅读更多
换一批

没有更多推荐了,返回首页