Linux_加密和安全详细介绍

本文深入探讨了Linux系统的安全机制,包括对称和非对称加密算法,如RSA和DSA,以及散列算法的应用。介绍了使用gpg进行加密,PKI和CA的概念,openssl软件及其SSL/TLS协议。此外,还详细阐述了SSH服务的安全性,包括公钥交换、认证方式以及端口转发,以及自动化运维工具如pssh。文章还提到了系统完整性检查工具aide和sudo的配置与使用,以及TCP Wrappers和PAM模块在访问控制中的作用。
摘要由CSDN通过智能技术生成

一.安全机制

  • 安全攻击的几种典型方式: STRIDE
Spoofing                假冒  
Tampering               篡改  
Repudiation             否认  
Information Disclosure  信息泄漏 
Denial of Service       拒绝服务 
Elevation of Privilege  提升权限 
  • 安全设计基本原则

    • 使用成熟的安全系统
    • 以小人之心度输入数据
    • 部系统是不安全的
    • 小授权
    • 少外部接口
    • 省使用安全模式
    • 全不是似是而非
    • STRIDE思考
    • 入口处检查
    • 管理上保护好你的系统
  • 常见加密算法和协议

    • 对称加密
    • 公钥加密
    • 单向加密
    • 认证协议

二.对称和非对称加密

1.对称加密算法:加密和解密使用同一个密钥

DES:Data Encryption Standard,56bits 
3DES: 
AES:Advanced (128, 192, 256bits) 
Blowfish,Twofish,IDEA,RC6,CAST5 
  • 特性:
    1、加密、解密使用同一个密钥,效率高
    2、将原始数据分割成固定大小的块,逐个进行加密
  • 缺陷:
    1、密钥过多
    2、密钥分发
    3、数据来源无法确认

2.非对称加密算法

  • 公钥加密:密钥成对出现

    • 公钥:公开给所有人;public key
    • 私钥:自己留存,必须保证其私密性;secret key
  • 特点:用公钥加密数据,只能使用与之配对的私钥解密;反之亦然

  • 功能:

    • 数字签名:主要在于让接收方确认发送方身份对称密钥交换:发送方用对方的公钥加密一个对称密钥后发送给对方
    • 数据加密:适合加密较小数据
  • 缺点:密钥长,加密解密效率低下

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

  • 基于一对公钥/密钥对
    •用密钥对中的一个加密,另一个解密

  • 实现加密:
    •接收者
    生成公钥/密钥对:P和S
    公开公钥P,保密密钥S
    •发送者
    使用接收者的公钥来加密消息M
    将P(M)发送给接收者
    •接收者
    使用密钥S来解密:M=S(P(M))

  • 实现数字签名:
    •发送者
    生成公钥/密钥对:P和S
    公开公钥P,保密密钥S
    使用密钥S来加密消息M
    发送给接收者S(M)
    •接收者
    使用发送者的公钥来解密M=P(S(M))
    结合签名和加密
    分离签名

3.RSA和DSA

  • RSA:公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在
    (美国麻省理工学院)开发的,RSA取名来自开发他们三者的名字,后成立RSA
    数据安全有限公司。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目
    前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA算法基于
    一个十分简单的数论事实:将两个大素数相乘十分容易,但想要对其乘积进行因式
    分解却极其困难,因此可以将乘积公开作为加密密钥
  • DSA (Digital Signature Algorithm):1991年7月26日提交,并归属于David
    W. Kravitz前NSA员工,DSA是Schnorr和ElGamal签名算法的变种,被美国
    NIST作为SS(DigitalSignature Standard), DSA是基于整数有限域离散对数难
    题的,其安全性与RSA相比差不多。DSA只是一种算法,和RSA不同之处在于
    它不能用作加密和解密,也不能进行密钥交换,只用于签名,它比RSA要快很多

三.散列算法

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

•任意长度输入
•固定长度输出
•若修改数据,指纹也会改变(“不会产生冲突”)
•无法从指纹中重新生成数据(“单向”)

  • 功能:保护数据完整性

  • 常见算法:md5: 128bits、sha1: 160bits、sha224 、sha256、sha384、sha512

  • 常用工具
    •md5sum | sha1sum [ --check ] file
    •openssl、gpg
    •rpm -V

  • 数字签名图解
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bdR3z9Ge-1573386467794)(png/2019-11-07-11-10-09.png)]

2.密钥交换:IKE(Internet Key Exchange)

DH (Deffie-Hellman):生成会话密钥,由惠特菲尔德·迪菲(Bailey Whitfield Diffie)和
马丁·赫尔曼(Martin Edward Hellman)在1976年发表. 
DH: 
A: g,p 协商生成公开的整数g, 大素数p 
B: g,p 
A:生成隐私数据 :a (a<p ),计算得出 gâ%p,发送给B 
B:生成隐私数据 :b,计算得出 g^b%p,发送给A 
A:计算得出 [(g^b%p)â] %p = gâb%p,生成为密钥 
B:计算得出 [(gâ%p)^b] %p = gâb%p,生成为密钥 

四.gpg

1.使用gpg实现对称加密file文件

gpg -c file 
ls file.gpg 
  • 在另一台主机上解密file

gpg -o file -d file.gpg

2.使用gpg工具实现公钥加密

在hostB主机上用公钥加密,在hostA主机上解密 
在hostA主机上生成公钥/私钥对 
    gpg --gen-key 
在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 wangxiaochun file  
    file file.gpg 
复制加密文件到hostA主机  
    scp fstab.gpg hostA: 
在hostA主机解密文件 
    gpg -d file.gpg   
    gpg -o file  -d file.gpg  
删除公钥和私钥 
    gpg --delete-keys  wangxiaochun 
    gpg --delete-secret-keys  wangxiaochun 
  • 中间人攻击
    在这里插入图片描述

五.PKI和CA

  • PKI:Public Key Infrastructure

  • CA和证书

签证机构:CA(Certificate Authority) 
注册机构:RA(registration authority )
证书吊销列表:CRL(Certificate Revoke List)
证书存取库:Certificate access library
  • X.509:定义了证书的结构以及认证协议标准
版本号
序列号 
签名算法 
颁发者 
有效期限 
主体名称 
主体公钥 
CRL分发点 
扩展信息 
发行者签名 
  • 证书类型
证书授权机构的证书
服务器证书
用户证书
  • 获取证书两种方法:

    • 使用证书授权机构授权的证书
   生成证书请求(csr)(The certificate request)
   将证书请求csr发送给CA
   CA签名颁发证书
  • 自签名的证书:自已签发自己的公钥

六.openssl

1.SSL:Secure Socket Layer,TLS: Transport Layer Security

1995:SSL 2.0 Netscape 
1996:SSL 3.0 
1999:TLS 1.0  
2006:TLS 1.1 IETF(Internet工程任务组) RFC 4346 
2008:TLS 1.2 当前使用 
2015:TLS 1.3  
  • 功能:机密性,认证,完整性,重放保护
  • 两阶段协议,分为握手阶段和应用阶段
    • 握手阶段(协商阶段):客户端和服务器端认证对方身份(依赖于PKI体系,利用数字
      证书进行身份认证),并协商通信中使用的安全参数、密码套件以及主密钥。后续通信使
      用的所有密钥都是通过MasterSecret生成
    • 应用阶段:在握手阶段完成后进入,在应用阶段通信双方使用握手阶段协商好的密钥进行安全通信

在这里插入图片描述

SSL/TLS协议在四层网络模型中的位置及模块
  • Handshake协议:包括协商安全参数和密码套件、服务器身份认证(客户端身
    份认证可选)、密钥交换
  • ChangeCipherSpec 协议:一条消息表明握手协议已经完成
  • Alert 协议:对握手协议中一些异常的错误提醒,分为fatal和warning两个级别,
  • fatal类型错误会直接中断SSL链接,而warning级别的错误SSL链接仍可继续,
    只是会给出错误警告
  • Record 协议:包括对消息的分段、压缩、消息认证和完整性保护、加密等
  • HTTPS协议:就是"HTTP协议"和"SSL/TLS协议"的组合。HTTP over
    SSL”或“HTTP over TLS”,对http协议的文本数据进行加密处理后,成为二
    进制形式传输

在这里插入图片描述

HTTPS结构

在这里插入图片描述

HTTPS工作过程

2.openssl软件

  • openssl命令包括三个组件:

    • openssl:多用途的命令行工具,包openssl
    • libcrypto:加密算法库,包openssl-libs
    • libssl:加密模块应用库,实现了ssl及tls,包nss
  • openssl命令用法

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

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

    • 标准命令:enc, ca, req, …
    • 对称加密:
工具:openssl enc, gpg 
算法:3des, aes, blowfish, twofish 
  • openssl的enc子命令

    • 加密:
      openssl enc -e -des3 -a -salt -in testfile -out testfile.cipher
    • 解密:
      openssl enc -d -des3 -a -salt –in testfile.cipher -out testfile
  • 单向加密:

    • 工具:md5sum, sha1sum, sha224sum,sha256sum… ,openssl dgst
  • dgst命令
    openssl dgst -md5 [-hex默认] /PATH/SOMEFILE
    openssl dgst -md5 testfile
    md5sum /PATH/TO/SOMEFILE

  • MAC: Message Authentication Code,单向加密的一种延伸应用,用于实现网络通信
    中保证所传输数据的完整性机制

  • CBC-MAC

  • HMAC:使用md5或sha1算法
    生成用户密码:

  • openssl的passwd命令
    openssl passwd -1 -salt SALT(最多8位)
    openssl passwd -1 –salt centos

  • 生成随机数:
    openssl rand -base64|-hex NUM

    • NUM: 表示字节数,使用-hex,每个字符为十六进制,相当于4位二进制,出现的字符数为NUM*2
  • 公钥加密:

算法:RSA, ELGamal 
工具:gpg, openssl rsautl(man rsautl) 
  • 数字签名:
算法:RSA, DSA, ELGamal 
  • 密钥交换:
算法:dh 
DSA:Digital Signature Algorithm 
DSS:Digital Signature Standard 
  • 生成密钥对儿: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
  • 随机数生成器:伪随机数字
    • 键盘和鼠标,块设备中断
      /dev/random:仅从熵池返回随机数;随机数用尽,阻塞
      /dev/urandom:从熵池返回随机数;随机数用尽,会利用软件生成伪随机数,非阻塞

七.CA创建和管理

1.PKI:Public Key Infrastructure

CA 
RA 
CRL 
证书存取库 
  • 建立私有CA一般使用工具:
OpenCA 
openssl 
  • 证书申请及签署步骤:
1、生成申请请求
2、RA核验
3、CA签署
4、获取证书

3.创建私有CA、证书申请和管理

创建私有CA

  • openssl的配置文件:/etc/pki/tls/openssl.cnf
  • 三种策略:match匹配、optional可选、supplied提供
match:要求申请填写的信息跟CA设置信息必须一致
optional:可有可无,跟CA设置信息可不一致
supplied:必须填写这项申请信息,

步骤

1、创建所需要的文件

touch /etc/pki/CA/index.txt 生成证书索引数据库文件 
echo 01 > /etc/pki/CA/serial 指定第一个颁发证书的序列号 

2、 CA自签证书

生成私钥 
    cd /etc/pki/CA/ 
    (umask 066; openssl genrsa -out  private/cakey.pem 2048)
生成自签名证书 
   openssl req -new -x509 -key   /etc/pki/CA/private/cakey.pem -days 3650 -out  /etc/pki/CA/cacert.pem 
  • 选项说明:
-new:生成新证书签署请求
-x509:专用于CA生成自签证书
-key:生成请求时用到的私钥文件
-days n:证书的有效期限
-out /PATH/TO/SOMECERTFILE: 证书的保存路径

3、颁发证书

3.1 在需要使用证书的主机生成证书请求
eg:给web服务器生成私钥
(umask 066; openssl genrsa –out   /data/test.key 2048)
3.2 生成证书申请文件
openssl req -new -key /data/test.key -out /data/test.csr
3.3 将证书请求文件传输给CA
3.4 CA签署证书,并将证书颁发给请求者
openssl ca -in /tmp/test.csr –out   /etc/pki/CA/certs/test.crt -days 100
注意:默认要求 国家,省,公司名称三项必须和CA一致
查看证书中的信息:
    openssl x509 -in /PATH/FROM/CERT_FILE -noout   -text|issuer|subject|
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值