Linux下通过配置防火墙iptables可以有效地抵挡常见的DDOS攻击。
首先怎么判断Linux服务器被攻击了呢?
Linux服务器被攻击的几个表象:
1.从外部ping延迟高
2.从内部ping网关延迟高
3.内存和CPU占用居高不下
4.通过netstat查看到的状态为SYN_RECV的请求多,且刷新慢
抵挡攻击的方法:
1.设置防火墙规则
1
2
3 iptables -A FORWARD -p tcp --syn -m limit --limit 1/s-j ACCEPT
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s-j ACCEPT
iptables -A FORWARD -p icmp --icmp-typeecho-request -m limit --limit 1/s-j ACCEPT
2.封ip和ip段
1
2
3
4
5 iptables -I INPUT -s 49.116.15.23 -j DROP #封单个ip
iptables -I INPUT -s 49.116.15.23/32-j DROP #和上一个效果一样,封单个IP
iptables -I INPUT -s 49.116.15.0/24-j DROP #封ip段,指定前三段
iptables -I INPUT -s 49.116.0.0/16-j DROP #封ip段,只指定前两段
iptables -I INPUT -s 49.0.0.0/8-j DROP #封ip段,只指定第一段
在这里有个问题:如何知道该封哪些个ip呢?
答案是 netstat 命令。
通过 netstat查看当前请求,频繁出现且状态为SYN_RECV的ip多是恶意攻击的。
两个方法要结合起来用才能起来显著的效果,这是本人在维护高并发和高流量的投票网站中实践得出的经验。