数据安全分为:
保密性:数据保密性、隐私性
完整性:数据完整性、系统完整性
可用性:数据有效性
安全攻击分为:
被动攻击:窃听
主动攻击:伪装、重放、消息篡改、拒绝服务
安全机制:
加密、数字签名、访问控制、数据完整性、认证交换机制、流量填充、路由控制、公证
安全服务:
认证:
访问控制:
数据保密性:连接、无连接、选择域、流量
数据完整性:
不可否认性:
linux系统:openssl、gpg(pgp协议)
常见密码算法和协议:
对称加密:加密数据流
算法:DES、3DES、AES、Blowfish、Twofish、IDEA、RC6、CASTS
特点:1、加密和解密使用同一个密钥;2、将原始数据分隔成固定大小的块,逐个进行加密;
缺陷:1、密钥过多;2、密钥分发;
公钥加密:密钥是成对儿出现
算法:RSA、DSA、ELGamal
公钥:公开给所有人;public key
私钥:自己留存,必须保证其私密性;secret key
用途:数字签名(主要在于让接收方确认发送方的身份。)、密钥交换(发送方用对方的公钥加密一个对称密钥,并发送给对方。)、数据加密;
特点:用公钥加密的数据,只能使用与之配对儿的私钥解密;反之亦然;
单向加密:只能加密,不能解密;提取数据指纹;保证数据的完整性。
算法:md5(128bit)、sha1(160bit)、sha224、sha256、sha384、sha512
特性:1、定长输出;2、雪崩效应;
密钥交换:IKE
1、公钥加密:缺陷:密钥在网络传输。
2、DH(Diffie-Hellman):密钥无需在网络传输。
PKI:公钥基础设施
签证机构:CA
注册机构:RA
证书吊销列表:CRL
证书存取库:
X.509:定义了证书的结构以及认证协议标准;组成格式如下
版本号
序列号
签名算法ID
发行者名称
有效期限
主体名称
主体公钥
发行者唯一标识
主体的唯一标识
扩展
发行者签名
SSL:安全的套接字层
TLS:传输层安全
openssl:开源项目;三个组件
openssl:多用途的命令行工具;
libcrypto:公共加密库;
libssl:库,实现了ssl及tls;
openssl命令:
openssl version:程序版本号
对称加密:
工具:enc、gpg
算法:3des、aes、blowfish、twofish
enc命令:
加密:# openssl enc -e -des3 -a -salt -in fstab -out fstab.ciphertext
解密:# openssl enc -d -des3 -a -salt -in fstab.ciphertext -out fstab
单向加密:
工具:md5sum、sha1sum、sha256sum、…openssl dgst
# md5sum /PATH/TO/SOMEFILE
# openssl dgst -md5 /PATH/TO/SOMEFILE
生成用户密码:
openssl passwd -1 -salt SALT
生成随机数:
openssl rand -base64|-hex NUM
NUM:表示字节数;-hex时,每个字符为4位,出现的字符数为NUM*2
随机数生成器:
/dev/random:仅从熵池返回随机数;随机数用尽,阻塞;
/dev/urandom:从熵池返回随机数;随机数用尽,会利用软件生成伪随机数,非阻塞;
生成密钥对儿:
openssl genrsa -out /path/to/privatekey.file NUM_BITS 生成私钥
openssl rsa -in /path/to/privatekey.file -pubout > /path/to/publickey.file 提取公钥
例子:
# (umask 077;openssl genrsa -out rsa.private 2048) 生成私钥
# openssl rsa -in rsa.private -pubout > rsa.public 从私钥提取出公钥
openssl:开源项目;三个组件
openssl:多用途的命令行工具;
libcrypto:公共加密库;
libssl:库,实现了ssl及tls;
PKI:公钥基础设施
签证机构:CA
注册机构:RA
证书吊销列表:CRL
证书存取库:
建立私有CA:
OpenCA
openssl
证书申请及签署步骤:
1、生成申请请求;
2、RA(注册机构)核验
3、CA(签证机构)签署
4、获取证书
创建私有CA:openssl的配置文件:/etc/pki/tls/openssl.cnf
(1)创建所需的文件
# touch index.txt
# echo 01 > serial
(2)CA自签证书(即生成私钥,签署证书时自动生成公钥,公钥封装为证书)
# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655
-new:生成新证书签署请求
-x509:专用于CA生成自签证书
-key:生成请求时用到的私钥文件
-days n:证书的有效期限
-out:证书的保存路径
(3)发证
(a)用到证书的主机生成证书请求;
# (umask 077;openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365
(b)把请求文件传输给CA;
# scp
(c)CA校验及签署,并将证书发还给请求者;
# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
# scp
(4)吊销证书
(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 thisca.crl
查看证书信息:
# openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|-subject|-serial
ssh:secure shell,protocol
openssh:ssh协议的开源实现
dropbear:另一个ssh协议的开源实现
ssh协议版本:
v1:基于CRC-32做mac,不安全,man-in-middle
v2:双方主机协议选择安全的mac方式,基于dh算法做密钥交换,基于rsa或dsa算法实现身份认证;
用户登录认证的两种方式:基于password,基于key。
openssh:C/S
C:ssh,scp,sftp
Windows客户端:xshell,putty,securecrt
S:sshd
客户端组件:
ssh,配置文件:/etc/ssh/ssh_config
ssh [-p port] [user@]host [command]
-X:开启x11转发
-Y:支持信任的x11转发
linux下基于密钥的认证:
(1)在客户端生成密钥对
# ssh-keygen -t rsa [-P ”] [-f output_keyfile]
(2)把公钥传输至远程服务器对应用户的家目录
# ssh-copy-id [-i [identity_file]] [-p port] [user@]hostname
(3)测试
windows下基于密钥的认证(xshell):
(1)生成客户端密钥对;
工具—》新建用户密钥生成向导—》生成私钥文件
(2)自行将公钥信息,复制到服务器端的对应用户的.ssh/authorized_keys文件中(该文件权限为600);
scp命令:
PULL:scp [options] [user@]host:/PATH/FROM/SOMEFILE /PATH/TO/SOMEWHERE
PUSH:scp [options] /PATH/FROM/SOMEFILE [user@]host:/PATH/TO/SOMEWHERE
常用option:
-r:递归复制
-p:保持源文件的属性信息
-q:静默模式
-P PORT:指明remote host的监听端口
sftp命令:
sftp [user@]host
sftp> help
服务器端组件:
sshd,配置文件:/etc/ssh/sshd_config
具体参考# man sshd_config
限制可登陆用户的办法:用户和组名空格分隔
AllowUsers user1 user2 …:用户白名单
AllowGroups:组白名单
DenyUsers:用户黑名单
DenyGroups:组黑名单
ssh服务的最佳实践:
1、不要使用默认端口;
2、禁止使用protocol version 1;
3、限制可登陆用户;
4、设定空闲会话超时时长;ClientAliveInterval
5、利用防火墙设置ssh的访问策略;
6、仅监听特定的IP地址;
7、基于口令认证时,使用强密码策略;最好基于密钥认证;
8、禁止使用空密码;
9、禁止root用户直接登录;PermitRootLogin no
10、限制ssh的访问频度和并发在线数; MaxAuthTries MaxSessions
11、做好日志,经常分析;
ssh协议的另一个实现方式:dropbear
1、# dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key
# dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key
2、# dropbear -p 172.20.120.4:22022 -F -E
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/89571