centos防火墙中配置阻止80端口攻击的方法
时间:2014-11-13 13:40 来源:linux.it.net.cn 作者:IT
当服务器受到大量的SYN_RECV攻击,80端号占死,网站打不开时,通过配置iptables防火墙,以及修改系统参考,以保证网站可以正常访问的方法。
问题描述:
centos服务器中,接收到大量的SYN_RECV数据包,80端号占死,网站打不开。
有硬件防火墙的话,这些小规模的数据包攻击,根本不是问题。
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
对付SYN FLOOD的话,可以这样:
复制代码代码示例:
sysctl -w net.ipv4.tcp_syncookies=1 #启用使用syncookies
sysctl -w net.ipv4.tcp_synack_retries=1 #降低syn重试次数
其他IPTABLES的限制速度功能不能用来对付SYN FLOOD的(不能阻止拒绝服务,但是确实可以防止服务器CRASH)。
就介绍这些吧,在centos中适时运用iptables防火墙,以及做好相关系统参数的配置,以抵挡一些恶意的攻击。
(责任编辑:IT)
当服务器受到大量的SYN_RECV攻击,80端号占死,网站打不开时,通过配置iptables防火墙,以及修改系统参考,以保证网站可以正常访问的方法。
问题描述:
复制代码代码示例:
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
对付SYN FLOOD的话,可以这样:
复制代码代码示例:
sysctl -w net.ipv4.tcp_syncookies=1 #启用使用syncookies
sysctl -w net.ipv4.tcp_synack_retries=1 #降低syn重试次数
其他IPTABLES的限制速度功能不能用来对付SYN FLOOD的(不能阻止拒绝服务,但是确实可以防止服务器CRASH)。 |