Centos抵御DDOS的简单手法
| 1 sysctl -w net.ipv4.tcp_syncookies=1 #启用使用syncookies sysctl -w net.ipv4.tcp_synack_retries=1 #降低syn重试次数 sysctl -w net.ipv4.tcp_syn_retries=1 #降低syn重试次数 sysctl -w net.ipv4.tcp_max_syn_backlog=6000 #最大半连接数 sysctl -w net.ipv4.conf.all.send_redirects=0 sysctl -w net.ipv4.conf.all.accept_redirects=0 #不接受重定向的icmp數據包 sysctl -w net.ipv4.tcp_fin_timeout=30 sysctl -w net.ipv4.tcp_keepalive_time=60 sysctl -w net.ipv4.tcp_window_scaling=1 sysctl -w net.ipv4.icmp_echo_ignore_all=1 #禁止ICMP sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 #ICMP禁止广播 2.限制单位时间内连接数 如 iptables -N syn-flood iptables -A FORWARD -p tcp --syn -j syn-flood iptables -A INPUT -p tcp --syn -j syn-flood iptables -A syn-flood -p tcp --syn -m limit --limit 3/s --limit-burst 1 -j ACCEP iptables -A syn-flood -j DROP iptables -A INPUT -i eth0 -p tcp ! --syn -m state --state NEW -j DROP iptables -A INPUT -p tcp --syn -m state --state NEW -j DROP 3 如果还是不行, iptables -A INPUT -p tcp --dport 80 -m recent --name BAD_HTTP_ACCESS --update --seconds 60 --hitcount 30 -j REJECT iptables -A INPUT -p tcp --dport 80 -m recent --name BAD_HTTP_ACCESS --set -j ACCEP 如攻击过来的流量大于你的服务器的流量,那就没有什么办法了,如果流量不大,以上方法,可以暂时保证你的80可以访问 |
| 如果你的内核已经支持iptables connlimit可以使用, iptables 设定部份,也可以使用 iptables -I FORWARD -p tcp --syn -m connlimit --connlimit-above 5 -j DROP 或 iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 5 -j REJECT |
iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
echo 2048 > /proc/sys/net/ipv4/tcp_max_syn_backlog
echo 1 > /proc/sys/net/ipv4/tcp_synack_retries
echo 1 > /proc/sys/net/ipv4/tcp_syn_retries
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
我只这样做就解决掉了