目录:
- 安全机制
- 安全算法
- gpg
- PKI和CA
- openssl
- 证书管理
- ssh服务和dropbear
- aide
- Sudo
- TCP Wrappers
- PAM模块。
1--[安全机制]
信息安全防护的目标 保密性 Confidentiality 完整性 Integrity 可用性 Usability 可控制性Controlability 不可否认性 Non-repudiation
安全防护环节 物理安全:各种设备/主机、机房环境
系统安全:主机或设备的操作系统
应用安全:各种网络服务、应用程序
网络安全:对网络访问的控制、防火墙规则 数据安全:信息的备份与恢复、加密解密
管理安全:各种保障性的规范、流程、方
安全设计原则:使用成熟的安全系统 以小人之心度输入数据 外部系统是不安全的 最小授权 减少外部接口 缺省使用安全模式 安全不是似是而非 从STRIDE思考 在入口处检查 从管理上保护好你的系统
2--[安全算法]
常用安全技术
认证
授权
安全通信
审计
密码算法和协议: 对称加密 公钥加密 单向加密 认证协议
Linux系统:OpenSSL, gpg(pgp协议的实现)
不安全的传统协议 ? telnet、FTP、POP3等等;
不安全密码 ? http、smtp、NFS等等;
不安全信息 ? Ldap、NIS、rsh等等;不安全验证
对称加密:加密和解密使用同一个密钥
DES:Data Encryption Standard,56bits 3DES:
AES:Advanced (128, 192, 256bits) Blowfish,Twofish IDEA,RC6,CAST5
特性: 1、加密、解密使用同一个密钥,效率高 2、将原始数据分割成固定大小的块,逐个进行加密
缺陷: 1、密钥过多 2、密钥分发 3、数据来源无法确认
公钥加密:密钥是成对出现
公钥:公开给所有人;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))
结合签名和加密
分离签名
单向散列:将任意数据缩小成固定大小的“指纹”
密钥交换:IKE( Internet Key Exchange )公钥加密: DH (Deffie-Hellman):生成会话密钥
DH:
- 1、A: a,p 协商生成公开的整数a, 大素数p
- B: a,p
- 2、A:生成隐私数据 :x (x<p ),计算得出 a^x%p,发送给B
- B:生成隐私数据 :y,计算得出 a^y%p,发送给A
- 3、A:计算得出 [(a^y%p)^x] %p = a^xy%p,生成为密钥
- B:计算得出 [(a^x%p)^y] %p = a^xy%p,生成为密钥
3--[gpg]
1.使用gpg实现对称加密:gpg -c file ;输入密码;
2.在另一台主机上解密:gpg -o file -d file.gpg
3.使用gpg实现公钥加密:在hostB主机上用公钥加密,在hostA主机上解密
- 在hostA主机上生成公钥/私钥对 gpg --gen-key
- 在hostA主机上查看公钥 gpg --list-keys
- 在hostA主机上导出公钥root.pubkey gpg -a --export -o root.pubkey
- 从hostA主机上复制公钥文件到需加密的B主机上 scp root.pubkey hostB:
- 在需加密数据的hostB主机上生成公钥/私钥对 gpg --list-keys gpg --gen-key
- 在hostB主机上导入公钥 gpg --import root.pubkey gpg --list-keys
- 用从hostA主机导入的公钥,加密hostB主机的文件file,生成 file.gpg gpg -e -r mima file file file.gpg
- 复制加密文件到hostA主机 scp fstab.gpg hostA:
- 在hostA主机解密文件 gpg -d file.gpg gpg -o file -d file.gpg
- 删除公钥和私钥 gpg --delete-keys mima gpg --delete-secret-keys mima
4--[PKI和CA]
PKI: Public Key Infrastructure
- 签证机构: CA(Certificate Authority)
- 注册机构:RA
- 证书吊销列表:CRL
X.509:定义了证书的结构以及认证协议标准、 版本号、 序列号、 签名算法 、颁发者 、有效期限 、主体名称。
证书类型: 证书授权机构的证书 、服务器、 用户证书
获取证书两种方法:
? 使用证书授权机构 生成签名请求(csr ) 将csr发送给CA 从CA处接收签名
? 自签名的证书 自已签发自己的公钥
5--[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
生成用户密码: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
公钥加密:
算法:RSA, ELGamal
工具:gpg, openssl rsautl(man rsautl)
数字签名:
算法:RSA, DSA, ELGamal
密钥交换:
算法:dh
DSA: Digital Signature Algorithm
DSS:Digital Signature Standard
RSA:生成密钥对儿:
生成私钥 openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS (umask 077; openssl genrsa –out test.key –des 2048)
从私钥中提取出公钥 openssl rsa -in PRIVATEKEYFILE –pubout –out PUBLICKEYFILE Openssl rsa –in test.key –pubout –out test.key.pub
6--[证书管理]
创建私有CA: openssl的配置文件:/etc/pki/tls/openssl.cnf
三种策略:匹配、支持和可选
匹配指要求申请填写的信息跟CA设置信息必须一致,支持指必 须填写这项申请信息,可选指可有可无
1、创建所需要的文件 touch /etc/pki/CA/index.txt 生成证书索引数据库文件 echo 01 > /etc/pki/CA/serial 指定第一个颁发证书的序列号
2、 CA自签证书 生成私钥 cd /etc/pki/CA/ (umask 066; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
3、生成自签名证书 openssl req -new -x509 –key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem -new:
生成新证书签署请求 -x509: 专用于CA生成自签证书
-key: 生成请求时用到的私钥文件
-days n:证书的有效期限
-out /PATH/TO/SOMECERTFILE: 证书的保存路径
4、颁发证书
? A 在需要使用证书的主机生成证书请求 给web服务器生成私钥 (umask 066; openssl genrsa -out /etc/pki/tls/private/test.key 2048) 生成证书申请文件 openssl req -new -key /etc/pki/tls/private/test.key -days 365 -out etc/pki/tls/test.csr
? B 将证书请求文件传输给CA
? C CA签署证书,并将证书颁发给请求者 openssl ca -in /tmp/test.csr –out /etc/pki/CA/certs/test.crt -days 365 注意:默认国家,省,公司名称三项必须和 CA一致
? D 查看证书中的信息: openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|issuer|subject|serial|dates openssl ca -status SERIAL 查看指定编号的 证书状态
5、吊销证书
? A 在客户端获取要吊销的证书的serial openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject
? B 在CA上,根据客户提交的serial与subject信息,对比检验是 否与index.txt文件中的信息一致,吊销证书:openssl ca -revoke /etc/pki/CA/newcerts
/SERIAL.pem
? C 指定第一个吊销证书的编号 注意:第一次更新证书吊销列表前,才需要执行 echo 01 > /etc/pki/CA/crlnumber
? D 更新证书吊销列表 openssl ca -gencrl -out /etc/pki/CA/crl/crl.pem 查看crl文件: openssl crl -in /etc/pki/CA/crl/crl.pem -noout -text
7--[ssh服务和dropbear]
ssh: secure shell, protocol, 22/tcp, 安全的远程登录
具体的软件实现: OpenSSH: ssh协议的开源实现,CentOS默认安装
dropbear:另一个开源实现
两种方式的用户登录认证: 基于password
基于key
基于用户名口令登录验证原理:
基于key认证原理:
(1) 在客户端生成密钥对 ssh-keygen -t rsa [-P ‘‘] [-f “~/.ssh/id_rsa"]
(2) 把公钥文件传输至远程服务器对应用户的家目录 ssh-copy-id [-i [identity_file]] [[email protected]]host
(3) 测试
(4) 在SecureCRT或Xshell实现基于key验证 在SecureCRT工具—>创建公钥—>生成Identity.pub文件 转化为openssh兼容格式(适合SecureCRT,Xshell不需要转化 格式),并复制到需登录主机上相应文件authorized_keys中, 注意权限必须为600,在需登录的ssh主机上执行: ssh-keygen -i -f Identity.pub >> .ssh/authorized_keys 47 基于key认证
(5)重设私钥口令: ssh-keygen –p
(6)验证代理(authentication agent)保密解密后的密钥 ? 这样口令就只需要输入一次 ? 在GNOME中,代理被自动提供给root用户 ? 否则运行ssh-agent bash
(7)钥匙通过命令添加给代理 ssh-add
ssh客户端组件:ssh, 配置文件:/etc/ssh/ssh_config
Host PATTERN StrictHostKeyChecking no 首次登录不显示检查提示
格式:ssh [[email protected]]host [COMMAND] ssh [-l user] host [COMMAND]
-p port:远程服务器监听的端口
-b:指定连接的源IP
-v:调试模式
-C:压缩方式
-X:支持x11转发
-Y:支持信任x11转发 ForwardX11Trusted yes
-t: 强制伪tty分配 ssh -t remoteserver1 ssh remoteserver2