1.解决DOS攻击生产案例:根据web日志或者或者网络连接数,监控当某个IP 并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP,监控频 率每隔5分钟。防火墙命令为:iptables -A INPUT -s IP -j REJECT
#!/bin/bash
LINK=100
while true;do
ss -nt | awk -F"[[:space:]]+|:" '/^ESTAB/{print $(NF-2)}' | sort | tr "]" " " | uniq -c | while read count ip;do
# 使用read将标准输出的值赋予给count和ip变量。
if [ $count -gt $LINK ];then
iptables -A INPUT -s $ip -j REJECT
echo "$ip 被拒绝访问\ " >> /root/test.txt
fi
done
done
执行crontab -e,设置每5分钟执行一次
*/5 * * * * /bin/bash /test/shellstudy/netstatip.sh
2.描述密钥交换的过程
**前提**
* 非对称加密
* 公私钥能相互解开,但是对于被嵌套的公私钥,相当于嵌套的锁,一定要将外层的锁解开之后才能解开内层的锁
* 有一个公证人,即证书中心,CA
**过程**
* 服务器产生公私钥
* 将公私钥发送给CA
* CA生成客户端浏览器公私钥
* CA使用客户端浏览器的私钥对共服务器的公钥进行加密,得到证书,返回给服务器
* CA将证书发给客户端
* 服务器发送公钥与证书给客户端
* 客户端利用公钥对证书解密,对比服务端公钥,确认来源无误
* 客户端生成随机密码,保存在本地,然后使用服务端公钥加密
* 将加密的密码返回给服务端
* 服务端使用私钥解密得到客户端密码
* 此时完成了密码交换工作
* 此后进行的所有数据交换都会事先使用这个密码进行对称加密,如DES,3DES。
* 总结:对密钥进行非对称加密,后使用密钥进行对称加密
3、https的通信过程
第一步:客户端向服务端发起请求
(1)客户端生成随机数R1 发送给服务端;
(2)告诉服务端自己支持哪些加密算法;
第二步:服务器向客户端发送数字证书
(1)服务端生成随机数R2;
(2)从客户端支持的加密算法中选择一种双方都支持的加密算法(此算法用于后面的会话密钥生成);
(3)服务端生成把证书、随机数R2、会话密钥生成算法,一同发给客户端;
第三步:客户端验证数字证书。
(1)验证证书的可靠性,先用CA的公钥解密被加密过后的证书,能解密则说明证书没有问题,然后通过证书里提供的摘要算法进行对数据进行摘要,然后通过自己生成的摘要与服务端发送的摘要比对。
(2)验证证书合法性,包括证书是否吊销、是否到期、域名是否匹配,通过后则进行后面的流程
(3)获得证书的公钥、会话密钥生成算法、随机数R2
(4)生成一个随机数R3。
(5)根据会话秘钥算法使用R1、R2、R3生成会话秘钥。
(6)用服务端证书的公钥加密随机数R3并发送给服务端。
第四步:服务器得到会话密钥
(1)服务器用私钥解密客户端发过来的随机数R3
(2)根据会话秘钥算法使用R1、R2、R3生成会话秘钥
第五步:客户端与服务端进行加密会话
(1)客户端发送加密数据给服务端
发送加密数据:客户端加密数据后发送给服务端。
(2)服务端响应客户端
解密接收数据:服务端用会话密钥解密客户端发送的数据;
加密响应数据:用会话密钥把响应的数据加密发送给客户端。
(3)客户端解密服务端响应的数据
解密数据:客户端用会话密钥解密响应数据
4、使用awk以冒号分隔获取/ettc/passwd文件第一列
[root@localhost ~]#cat /etc/passwd |awk -F":" '{print $1}'
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
dbus
systemd-coredump
systemd-resolve
tss
polkitd
geoclue
rtkit
pipewire
pulse
libstoragemgmt
qemu
usbmuxd
unbound