信息安全防护的目标
保密性 Confidentiality
完整性 Integrity
可用性 Usability
可控制性 Controlability
不可否认性 Non-repudiation
安全防护环节
物理安全:各种设备/主机、机房环境
系统安全:主机或设备的操作系统
应用安全:各种网络服务、应用程序
网络安全:对网络访问的控制、防火墙规则
数据安全:信息的备份与恢复、加密解密
管理安全:各种保障性的规范、流程、方法
安全攻击: STRIDE
Spoofing 假冒
[root@centos7 ~]# yum install telnet #安装
[root@centos7 ~]# telnet 127.0.0.1 25 #冒充发邮件
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
220 centos7.localdomain ESMTP Postfix
hello
502 5.5.2 Error: command not recognized
mail from: mayun@alibaba.com #邮寄发送人
250 2.1.0 Ok
rcpt to: wangzhipeng #邮件接收人
250 2.1.5 Ok
data #输入内容
354 End data with <CR><LF>.<CR><LF>
hi,wang #内容
I am mayun
welcome to alibab
. #结束
250 2.0.0 Ok: queued as 7652F4239442
quit #退出
221 2.0.0 Bye
Connection closed by foreign host.
[root@centos7 ~]# su - wangzhipeng #切换用户
Last login: Thu Jun 4 13:05:13 CST 2020 on pts/0
[wangzhipeng@centos7 ~]$ mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/wangzhipeng": 1 message 1 new #邮件
>N 1 mayun@alibaba.com Thu Jun 4 13:02 15/491
& 1 #查看内容
Message 1:
From mayun@alibaba.com Thu Jun 4 13:02:05 2020
Return-Path: <mayun@alibaba.com>
X-Original-To: wangzhipeng
Delivered-To: wangzhipeng@centos7.localdomain
Date: Thu, 4 Jun 2020 13:00:48 +0800 (CST)
From: mayun@alibaba.com
Status: R
hi,wang
I am mayun
welcome to alibab
Tampering 篡改
Repudiation 否认
Information Disclosure 信息泄漏
[root@centos7 ~]# yum install telnet-server
[root@centos7 ~]# systemctl start telnet.socket
[root@CentOS6 ~]# telnet 192.168.8.40
Denial of Service 拒绝服务
Elevation of Privilege 提升权限
对称加密
对称加密:加密和解密使用同一个密钥
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
特点:用公钥加密数据,只能使用与之配对的私钥解密;反之亦然
功能:
数字签名:主要在于让接收方确认发送方身份
对称密钥交换:发送方用对方的公钥加密一个对称密钥后发送给对方
实现数字签名:
•发送者
生成公钥/密钥对:P和S
公开公钥P,保密密钥S
使用密钥S来加密消息M
发送给接收者S(M)
•接收者
使用发送者的公钥来解密M=P(S(M))
数据加密:适合加密较小数据
实现加密:
•接收者
生成公钥/密钥对:P和S
公开公钥P,保密密钥S
•发送者
使用接收者的公钥来加密消息M
将P(M)发送给接收者
•接收者
使用密钥S来解密:M=S(P(M))
缺点:密钥长,加密解密效率低下
算法:
RSA(加密,数字签名)
DSA(数字签名)
ELGamal
实现数字签名和加密
A–Pb(Sa(M))----B-Pa(Sb(Pb(Sa(M))))
单向散列
将任意数据缩小成固定大小的“指纹”
•任意长度输入
•固定长度输出
•若修改数据,指纹也会改变(“不会产生冲突”)
•无法从指纹中重新生成数据(“单向”)
功能:数据完整性
常见算法
md5: 128bits、sha1: 160bits、sha224 、sha256、sha384、sha512
常用工具
•md5sum | sha1sum [ --check ] file
•openssl、gpg
•rpm -V
md5sum/sha1sum
[root@centos6 ~]#md5sum /etc/passwd
092d54e226b787a4230d235a8bc2f798 /etc/passwd
[root@centos6 ~]#md5sum /etc/fstab
7c44bfc46698657debaf15d1a8ef1770 /etc/fstab
[root@centos6 ~]#md5sum /etc/fstab >md5.log
[root@centos6 ~]#md5sum -c md5.log
/etc/fstab: OK
[root@centos6 ~]#echo >>/etc/fstab
[root@centos6 ~]#md5sum -c md5.log
/etc/fstab: FAILED
md5sum: WARNING: 1 of 1 computed checksum did NOT match
[root@centos6 ~]#vim /etc/fstab
[root@centos6 ~]#md5sum -c md5.log
/etc/fstab: OK
对原文加密一次,解密还是会花费大量时间,不经常使用
对称加密与非对称加密结合使用
gpg实现对称加密
##A电脑
[root@centos6 ~]# gpg -c passwd
[root@centos6 ~]# scp passwd.gpg 192.168.20.20:/data
##B电脑
[root@centos6 ~]# gpg -d passwd.gpg #只输出屏幕
[root@centos6 ~]# gpg -o passwd -d passwd.gpg #解密到passwd
gpg实现非对称加密
##host A
[root@centos6 ~]# gpg --gen-key #生成wangge公钥
[root@centos6 ~]# gpg --list-keys #列出密钥
/root/.gnupg/pubring.gpg
------------------------
pub 2048R/B1E4F768 2020-06-04
uid wangge
sub 2048R/E845C612 2020-06-04
[root@centos6 ~]#ll /root/.gnupg
total 24
drwx------. 2 root root 4096 Jun 4 20:13 private-keys-v1.d
-rw-------. 1 root root 1165 Jun 4 20:23 pubring.gpg #公钥
-rw-------. 1 root root 1165 Jun 4 20:23 pubring.gpg~
-rw-------. 1 root root 600 Jun 4 20:23 random_seed
-rw-------. 1 root root 2543 Jun 4 20:23 secring.gpg #私钥
-rw-------. 1 root root 1280 Jun 4 20:23 trustdb.gpg
[root@centos6 ~]#gpg -a --export -o wangge.pubkey #生成公钥
root@centos6 ~]#ls
anaconda-ks.cfg install.log install.log.syslog md5.log passwd wangge.pubkey
[root@centos6 ~]#scp wangge.pubkey 192.168.20.14:/data #把公钥发给host B
root@centos6 ~]#gpg -o passwd -d /root/passwd.gpg #解密
##host B
[root@centos6 ~]# gpg --gen-key #生成zhang公钥
[root@centos6 ~]# gpg --list-keys
[root@centos6 ~]# gpg --list-keys
[root@centos6 ~]# gpg --import /data/wangge.pubkey #导入wangge公钥
gpg: key B1E4F768: public key "wangge" imported
gpg: key DBCE41FE: public key "admin" imported
gpg: Total number processed: 2
gpg: imported: 2 (RSA: 2)
[root@centos6 ~]# gpg --list-keys #查看
[root@centos6 ~]# gpg -e -r wangge passwd #用gongge公钥加密
[root@centos6 ~]# ls
anaconda-ks.cfg install.log install.log.syslog passwd passwd.gpg
[root@centos6 ~]# scp passwd.gpg 192.168.20.20:/root #发送给host A
[root@centos6 ~]# gpg --delete-secret-keys zhang #删除私钥
[root@centos6 ~]# gpg --delete-keys wangge #删除公钥
openssl
[root@localhost ~]# rpm -q openssl
openssl-1.0.2k-19.el7.x86_64
[root@localhost ~]# rpm -ql openssl
/usr/bin/openssl
对称加密
[root@localhost /data]# cp /etc/passwd passwd
[root@localhost /data]# openssl enc -e -des3 -a -in passwd -out passwd.enc
enter des-ede3-cbc encryption password:
Verifying - enter des-ede3-cbc encryption password:
[root@localhost /data]# ls
passwd passwd.enc
[root@localhost /data]# openssl enc -e -des3 -a -in passwd -out passwd.enc
enter des-ede3-cbc encryption password:
bad password read
[root@localhost /data]# openssl enc -d -des3 -a -in passwd.enc -out passwd.log
enter des-ede3-cbc decryption password:
[root@localhost /data]# ls
passwd passwd.enc passwd.log
[root@localhost /data]# md5sum passwd passwd.log
b60622a951744b710cdcfbf35495d0d1 passwd
b60622a951744b710cdcfbf35495d0d1 passwd.log
用户密码
md5sum, sha1sum, sha224sum,sha256sum,sha512sum
[root@localhost /data]# md5sum passwd
b60622a951744b710cdcfbf35495d0d1 passwd
[root@localhost /data]# md5sum passwd.log
b60622a951744b710cdcfbf35495d0d1 passwd.log
[root@localhost /data]# md5sum passwd
b60622a951744b710cdcfbf35495d0d1 passwd
[root@localhost /data]# openssl dgst -md5 passwd
MD5(passwd)= b60622a951744b710cdcfbf35495d0d1
###同一文件hash值一样,容易破解,加点salt后hash值改变
[root@localhost /data]# openssl passwd -1 -salt wang #对输入密码进行hash
Password:
$1$wang$.4i2cdKzZ4iuygULQQqbR1
[root@localhost /data]# openssl passwd -1 -salt wang #salt一样hash一样
Password:
$1$wang$.4i2cdKzZ4iuygULQQqbR1
[root@localhost /data]# openssl passwd -1 -salt wan
Password:
$1$wan$u7jA2OGE14aAvEvp8LLgD0
随机数
NUM: 表示字节数,使用-hex,每个字符为十六进制,相当于4位二进制,出现的字符数为NUM*2
[root@localhost /data]# openssl rand -base64 12
XDdxAuQm4KWaabBQ
[root@localhost /data]# openssl rand -base64 4
PqiGmQ==
[root@localhost /data]# openssl rand -base64 3
S4mj
[root@localhost /data]# openssl rand -base64 6
unp31v48
[root@localhost /data]# openssl rand -base64 5
Ilxbf6I=
[root@localhost /data]# echo ab |base64
YWIK
[root@localhost /data]# echo abc |base64
YWJjCg==
###当为3的倍数时,没有=,=为补齐 随机数3位(8字节/位)24字节,base64编码6字节为一位,24字节为4位数,只有6和8字节的公约数24字节(3位)的倍数时,不需不全,其余数不够时在最后补0,显示=
[root@localhost /data]# openssl rand -hex 12
75511ae27b7608118daee1d8
[root@localhost /data]# openssl rand -hex 4
93f881b6
###-hex 十六进制,四字节为1位,是数字12的两倍
非对称加密
[root@localhost /data]# (umask 066;(umask 066;openssl genrsa -out test.key -des 2048)
Generating RSA private key, 2048 bit long modulus
...+++
...+++
e is 65537 (0x10001)
Enter pass phrase for test.key:
Verifying - Enter pass phrase for test.key:
# 加密,生成2048位私钥 用des加密
[root@localhost /data]# openssl rsa -in test.key -out test1.key #解密
Enter pass phrase for test.key:
writing RSA key
[root@localhost /data]# (umask 066;openssl genrsa -out test2.key 2048) #直接生成私钥
Generating RSA private key, 2048 bit long modulus
..