网络安全初探
1、解决DOS攻击生产案例:根据web日志或者网络连接数,监控当某个IP并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP,监控频 率每隔5分钟。防火墙命令为:iptables -A INPUT -s IP -j REJECT
实验环境:目标主机:ubuntu 18.04;攻击主机:Kali Linux;攻击工具:hping3;测试主机:centos7.9;目的:解决并发连接数超过100的IP,使用防火墙封掉对应的IP
1).dos探查脚本
#!/bin/bash
#
for i in `netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c |tr -s ' ' | cut -d' ' -f2`;do
IP=`netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c |tr -s ' ' | sort -b -nr -k1 | cut -d' ' -f3 | head -1`
if [ $i -gt 100 ];then
iptables -A INPUT -s $IP -j REJECT
echo "$IP is refused!!!"
fi
done
2).启动dos攻击
gw@lab:~$ sudo hping3 -c 10000 -d 120 -S -w 64 -p 22 --flood 192.0.2.20
3).查看测试主机情况
大约一分钟后,测试主机开始丢包。
From 192.0.2.21 icmp_seq=43 Destination Host Unreachable
From 192.0.2.21 icmp_seq=44 Destination Host Unreachable
From 192.0.2.21 icmp_seq=45 Destination Host Unreachable
From 192.0.2.21 icmp_seq=46 Destination Host Unreachable
From 192.0.2.21 icmp_seq=47 Destination Host Unreachable
^C
--- 192.0.2.20 ping statistics ---
53 packets transmitted, 19 received, +12 errors, 64% packet loss, time 52015ms
rtt min/avg/max/mdev = 0.129/0.247/0.392/0.078 ms, pipe 4
4).运行脚本
root@node2:/data/scripts# bash defendos.sh
192.168.0.22 is refused!!!
5).运行结果
大约40秒,测试主机ping包恢复正常,1分钟左右,攻击主机彻底断掉链接。
6).设置每5分钟探测一次
root@node2:~# crontab -e
*/5 * * * * /bin/bash /data/scripts/defendos.sh
注:iptables清除所有被封掉IP: iptables --flush
2、描述密钥交换的过程
-
客户端连上服务端
-
服务端发送 CA 证书给客户端
-
客户端验证该证书的可靠性
-
客户端从 CA 证书中取出公钥
-
客户端生成一个随机密钥 k,并用这个公钥加密得到 k’
-
客户端把 k’ 发送给服务端
-
服务端收到 k’ 后用自己的私钥解密得到 k
-
此时双方都得到了密钥 k,协商完成。
参考链接:https://www.cnblogs.com/yungyu16/p/13332882.html
3、https的通信过程
1).客户端发起SSL通信,报文中包含客户端支持的SSL的指定版本,加密组件列表(加密算法及密码长度)
2).服务端通过SSL通信,将SSL版本及加密算法版本中的一组发送至客户端.
3).服务端发送客户端Certificate报文,报文中包含公开密钥证书.
4).客户端验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等) ,如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示;
如果证书受信任,或者用户接受了不受信的证书,客户端会生成一个Pre-master secret的随机密码串,并且通过接受到公钥加密.
5).服务端会通过私钥解密出Pre-master sercret随机密码串,通过Pre-master sercret解密密发来的握手信息,并验证Hash是否与浏览器发来的一致.之后通过密码加密一段握手信息,发给客户端.
6).客户端解密并计算握手信息的Hash,如果与Server发来的Hash一致,此时握手过程结束,利用对称加密算法进行加密.
参考链接:https://www.jianshu.com/p/1c2b4bbb4e50
4、使用awk以冒号分隔获取/ettc/passwd文件第一列
gw@node2:~$ awk -F ':' '{print $1}' /etc/passwd
root
daemon
bin
sys
sync
games
man
lp
mail
news
uucp
proxy
······