1、解决DOS攻击生产案例:根据web日志或者或者网络连接数,监控当某个IP 并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP,监控频 率每隔5分钟。防火墙命令为:iptables -A INPUT -s IP -j REJECT
cat hostscan.sh
#!/bin/bash
ss -nt|awk -F"[[:space:]]+|:" '/^ESTAB/{count[$(NF-2)]++}END{for(i in count){if(count[i]>=100) {system(iptables -A INPUT -s i -j REJECT)}}}'
crontab -l
*/5 * * * * ./hostscan.sh
2、描述密钥交换的过程
一、RSA密钥交换过程(没有前向安全性,攻击者可以把前面交互的内容保存着,一旦拿到私钥,就可以得到主密钥):
1、客户端准备一个Client Random随机数,并将此随机数和协议版本号以及支持的加密方式一起发给服务端。
2、服务端收到Client Random后,将服务端CA证书和服务端准备的Sever Random随机数一起发给客户端。
3、客户端校验服务端证书后并通过解密证书得到服务端的公钥,同时客户端再生成一个新的46位的隐私参数SecPara,并用服务端公钥对这个隐私参数进行加密后,发给服务端,此时客户端已存有Client Random,Server Random,SecPara。
4、服务端对数据解密后,获得SecPara。此时服务端也存有了Client Random,Server Random,SecPara。
5、客户端和服务端根据之前约定好的加密方法,利用这三个参数生成一个新的对称密钥,此密钥即为主密钥。
6、双方验证完主密钥的有效性后,后续的数据交互即用此密钥进行对称加密。
二、ECDHE密钥交换过程(利用DH原理,避免了预备主密钥的泄露,即使私钥泄露,攻击者也无法得到主密钥):
1、客户端准备一个Client Random随机数,并将此随机数和协议版本号以及支持的加密方式一起发给服务端。
2、服务端收到Client Random后,将服务端CA证书和服务端准备的Sever Random随机数、利用DH算法原理算出来的服务端DH参数一起发给客户端。
3、客户端校验服务端证书后并通过解密证书得到服务端的公钥,并根据DH算法原理得到客户端DH参数,将此参数利用服务端公钥加密后传给服务端,然后利用DH算法原理和服务端的DH参数得到预备主密钥
4、服务端得到客户端DH参数后,利用DH算法原理和客户端DH参数得到预备主密钥,按照DH原理,服务端算出的预备主密钥和客户端算出的预备主密钥是一致的,这样避免了预备主密钥的泄露。
5、再根据原先约定好的加密方式,利用Client Random,Server Random,预备主密钥三个参数生成一个新的密钥即为主密钥
6、双方验证完主密钥的有效性后,后续的数据交互即用此密钥进行对称加密。
3、https的通信过程
1、客户端发起https连接请求,连接到服务器的443端口
2、服务端准备好ca证书(用于给客户端确认所用),并将证书传送给客户端
3、客户端收到服务端的ca证书后,核查证书的有效性,如颁发机构和有效时间等等,如果异常就会弹出告警窗。
4、确认证书无误后,客户端会产生一个随机值,然后利用证书里的服务端公钥对随机值进行加密后,将其发送给服务端。
5、服务端用私钥解密后,获得客户端发来的随机值,至此客户端和服务端都具有了这个随机值。
6、此后客户端服务端交互数据就利用这个随机值作为对称加密的密钥进行加密解密了。
7、客户端利用随机值作为密钥对数据进行对称加密,然后将加密后的数据发送给服务端
8、服务端收到后利用随机值进行解密,获得数据。