目录
7、单向哈希加密:也称为散列算法,将任意数据缩小成固定大小的“指纹”,称为digest,即摘要
8、综合加密和签名:即实现数据加密,同时保证数据的可靠性,完整性和一致性。
9、CA和证书(所有人公共认识的权威机构及它颁发的凭证,充当中间人角色)解决公钥的可靠性
4、使用awk以冒号分隔获取/ettc/passwd文件第一列
1、解决DOS攻击生产案例:根据web日志或者或者网络连接数,监控当某个IP 并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP,监控频 率每隔5分钟。防火墙命令为:iptables -A INPUT -s IP -j REJECT
[15:38:58 root@Centos7 ~]#vim dos_attack.sh
[15:39:06 root@Centos7 ~]#cat dos_attack.sh
#!/bin/bash
# /#############################################################/
# Author: liuqixin
# Email: 450131xxx@qq.com
# Time: 2022-08-21 15:17:54
# Name: dos_attack.sh
# Version: The test script V1.0
# Description:
# /#############################################################/
Connect_number=100
while true;do
ss -nt | awk -F"[[:space:]]+|:" '/^ESTAB/{print $(NF-2)}' | sort | uniq -c | while read count ip;do
if [ $count -ge $Connect_number ];then
iptables -A INPUT -s $ip -j REJECT
echo "$ip has been rejected" >> /tmp/ipban.txt
fi
done
done
[15:39:18 root@Centos7 ~]#chmod +x dos_attack.sh
[15:39:25 root@Centos7 ~]#crontab -e
[15:39:40 root@Centos7 ~]#crontab -l
*/5 * * * * /root/dos_attach.sh
[15:39:43 root@Centos7 ~]#
2、描述密钥交换的过程
1、常见的安全攻击 STRIDE
Spoofing
假冒
Tampering
篡改
Repudiation
否认
Information Disclosure
信息泄漏
Denial of Service
拒绝服务
Elevation of Privilege
提升权限
2、安全设计基本原则
使用成熟的安全系统
以小人之心度输入数据
外部系统是不安全的
最小授权
减少外部接口
缺省使用安全模式
安全不是似是而非
从
STRIDE
思考
在入口处检查
从管理上保护好你的系统
3、常用的安全技术
认证,授权,审计,安全通道
4、加密算法
对称加密,非对称(公私钥对)加密,单向加密,认证协议
5、对称加密算法:加密和解密使用同一个密码。
特性:加密解密使用同一个秘钥,效率高。
将原始数据分割成固定大小的块,逐个进行加密。
缺陷:秘钥过多
秘钥分发
数据来源无法确定
常见对称加密算法:
DES:Data Encryption Standard,
56bits
3DES:
AES:Advanced (128, 192, 256bits)
Blowfish,Twofish
IDEA,RC6
,
CAST5
6、非对称加密算法:秘钥成对出现。
公钥:public key,公开给所有人,主要给别人加密使用
私钥:secret key,private key,自己留存,必须保证其私密性,用于自己加密签名
特点:用公钥加密数据,只能使用对应的私钥解密,反之亦然。
功能:
数据加密:适合加密较小数据,比如:加密对称秘钥
数字签名:主要在于让接手者确认发送方身份
缺点:
秘钥长,算法复杂
加密解密效率低下
常见算法:
RSA:由 RSA
公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的,
可实现加密和数字签名。
DSA(Digital Signature Algorithm
):数字签名算法,是一种标准的
DSS
(数字签名标准)。
ECC(Elliptic Curves Cryptography
):椭圆曲线密码编码学,比
RSA
加密算法使用更小的密钥,提供相当的或更高等级的安全。
实现加密:
接收者
生成公钥/密钥对:P
和
S
公开公钥P,保密密钥S
发送者
使用接收者的公钥来加密消息M
将P(M)发送给接收者
接收者
使用密钥S来解密:M=S(P(M))
实现数字签名:
发送者
生成公钥/密钥对:P
和
S
公开公钥P,保密密钥S
使用密钥S来加密消息M
发送给接收者S(M)
接收者
使用发送者的公钥来解密M=P(S(M))
7、单向哈希加密:也称为散列算法,将任意数据缩小成固定大小的“指纹”,称为digest,即摘要
特性:
任意长度输入,固定长度输出
若修改数据,指纹也会发生改变,且有雪崩效应,数据的微小变化,生成的指纹发生巨大变化。
无法从指纹中重新生成数据,即不要逆,具有单向性
常见算法:
md5: 128bits
、
sha1: 160bits
、
sha224
、
sha256
、
sha384
、
sha512
常用工具:
md5sum | sha1sum [ --check ] file
openssl、gpg
rpm -V
8、综合加密和签名:即实现数据加密,同时保证数据的可靠性,完整性和一致性。
方法一:Pb{Sa[hash(data)]+data}
加密:原文数据,通过hash计算得到指纹摘要,再经过a的私钥加密(数字签名),同时附上原文数据,再使用b的公钥加密,再发送给b。
解密:b收到数据后,使用自己的私钥解开外层的公钥,得出数据原文和a的私钥密文,再使用a的公钥解开a的私钥,得出原文数据的的指纹摘要。再使用同样的hash计算数据原文得出指纹摘要 并与a发送过来的指纹对比。即可得出数据的完整性和发送者身份。缺点是大文件时效率低下。
方法二:对称key{Sa[hash(data)]+data}+Pb(对称key)
加密:原文数据,通过hash计算得到指纹摘要,再经过a的私钥加密(数字签名),同时附上原文数据,再使用对称秘钥加密整体数据,同时使用b的公钥加密对称秘钥key,并打包都发送给b。
解密:b收到数据后,使用自己的私钥解开对称密文,得出对称秘钥key,再接着解开另外的对称密文,得出原始数据和数字签名的原始数据,再使用a公钥解开a私钥密文,得出hash指纹,再使用同样的hash计算原始数据,与a发送来的hash指纹对比是否一致,即可判断数据的完整性和发送者身份。同等情况下,效率比方法一高。
此两种方法有个缺陷即公钥不具备可靠性(权威性),可能被中间人攻击篡改。
9、CA和证书(所有人公共认识的权威机构及它颁发的凭证,充当中间人角色)解决公钥的可靠性
加密:a把自己公钥给CA签名认证即CA的私钥加密a公钥得到(Sca(Pa)),再辅助加上些有效期,CA机构,a的公钥,a/ca的描述等信息 即生成了a的证书(Sca(Pa)+CA+Pa),并返回给a,由a把证书发送给b。
解密:b收到证书后,使用ca的公钥解开a的证书,得出a的公钥 ca 等其他信息。同理b通过CA生成证书后发给a,由a解出b的公钥,完成双方公钥的可靠性认证。即完成秘钥的交换。
此间如有另外的中间人攻击篡改a/b发送给CA的公钥数据时,最终当a/b使用权威的CA公钥是解不开中间人的私钥密文。(CA的公钥只能解开CA的私钥)
3、https的通信过程

1. 客户端发起HTTPS请求
用户在浏览器里输入一个https
网址,然后连接到服务器的
443
端口
2. 服务端的配置
采用HTTPS
协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面。这套证书其实就是一对公钥和私钥
3. 传送服务器的证书给客户端
证书里其实就是公钥,并且还包含了很多信息,如证书的颁发机构,过期时间等等
4. 客户端解析验证服务器证书
这部分工作是由客户端的TLS
来完成的,首先会验证公钥是否有效,比如:颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随机值。然后用证书中公钥对该随机值进行非对称加密
5. 客户端将加密信息传送服务器
这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了
6. 服务端解密信息
服务端将客户端发送过来的加密信息用服务器私钥解密后,得到了客户端传过来的随机值
7. 服务器加密信息并发送信息
服务器将数据利用随机值进行对称加密,
再发送给客户端
8. 客户端接收并解密信息
客户端用之前生成的随机值解密服务段传过来的数据,于是获取了解密后的内容
4、使用awk以冒号分隔获取/ettc/passwd文件第一列
cat /etc/passwd
awk -F: '{print $1":"$3}' /etc/passwd
[22:28:48 root@Centos8 ~]#cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin
tss:x:59:59:Account used for TPM access:/dev/null:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin
sssd:x:996:993:User for sssd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
LQX:x:1000:1000:liuqixin:/home/LQX:/bin/bash
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
chrony:x:995:992::/var/lib/chrony:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
[22:28:51 root@Centos8 ~]#awk -F: '{print $1":"$3}' /etc/passwd
root:0
bin:1
daemon:2
adm:3
lp:4
sync:5
shutdown:6
halt:7
mail:8
operator:11
games:12
ftp:14
nobody:65534
dbus:81
systemd-coredump:999
systemd-resolve:193
tss:59
polkitd:998
unbound:997
sssd:996
sshd:74
LQX:1000
rpc:32
postfix:89
rpcuser:29
chrony:995
tcpdump:72