xyaxlz 发表于 2011-12-21 08:43

应对synflood 攻击的方法

<DIV>判断synflood 攻击的方法(需要根据具体环境,灵活改变参数)<BR>#netstat –an |grep SYN_RECV |wc –l<BR>上面的结果如如大于400 有可能为synflood攻击。</DIV>
<DIV>1、首先开启syncookie 此为6 次握手才建立起来的TCP 连接。此种方法在10M以下的流量还可以。<BR>在redhat5.5以后是默认开启的<BR>#echo 1 &gt; /proc/sys/net/ipv4/tcp_syncookies</DIV>
<DIV><BR>2、把syn ack回应包有5改为3。<BR>#echo 2 &gt; /proc/sys/net/ipv4/synack_retries<BR>#echo 2 &gt; /proc/sys/net/ipv4/tcp_syn_retries</DIV>
<DIV>&nbsp;</DIV>
<DIV>3、增大半地址池:<BR>#echo 4096 &gt;/proc/sys/net/ipv4/tcp_max_syn_backlog = 4096</DIV>
<DIV>4、把配置加入配置文件,重启机器配置不会消失<BR>#vim /etc/sysctl.conf 加入下面的配置<BR>net.ipv4.tcp_syncookies = 1<BR>net.ipv4.tcp_max_syn_backlog = 4096<BR>net.ipv4.tcp_synack_retries = 2<BR>net.ipv4.tcp_syn_retries = 2<BR>net.ipv4.tcp_rmem = 32768<BR>net.ipv4.tcp_wmem = 32768</DIV>
<DIV>#sysctl -p</DIV>
<DIV><BR>5、加入防火墙规则 对Iptables 配置(限制接受包和回应包的速度)<BR>iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT</DIV>
<DIV>iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit<BR>1/s -j ACCEPT<BR>iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j<BR>ACCEPT </DIV>
<DIV>iptables -t filter -A INPUT -p tcp --syn -j DROP</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>6、</DIV>
<DIV>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="mso-hansi-font-family: 宋体; mso-bidi-font-family: 宋体"><FONT face=宋体>#!/bin/sh<BR>bip=`tail -n 100000<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>access.log | awk ' $9 ~ "/" ' | awk '$11 == "499" || $11 == "301" ' |awk '$12 == "0"|| $12 == "306" '|awk '$13 == "\"-\""'|awk '{print $2}'|sort -n|uniq -c |sort -n|tail -n 100|awk '{print $2}'|grep -vE "220.231.22.195|124.207.40.131"`<BR><BR>echo "$bip" &gt;&gt; /root/iptables2.txt<BR>for ip in $bip; do<BR><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>/sbin/iptables -A INPUT -s<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>$ip -j DROP; echo $ip<BR>done</FONT><BR>7、</SPAN></P><SPAN lang=EN-US style="mso-hansi-font-family: 宋体; mso-bidi-font-family: 宋体">
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="mso-hansi-font-family: 宋体; mso-bidi-font-family: 宋体"><FONT face=宋体>#!/bin/sh<BR>bip=`tail -n 1000<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>/usr/local/nginx-rewrite/logs/rewrite.xxx.com<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>| awk ' $9 ~ "/" ' | awk '$11 == "499"<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>' |awk '$12 == "0" '|awk '$13 == "\"-\""' | awk '{print $3}' | sort -nr | uniq -c | sort -nr |awk '$1 &gt; 4'<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>| awk '{print $2}'|grep -vE "220.231.22.195|124.207.40.131"`<BR>bip2=`tail -n 1000<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>/usr/local/nginx-rewrite/logs/rewrite.xxx.com<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>| awk ' $9 ~ "/" ' | awk '$11 == "301"<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>' |awk '$12 == "306" || $12 == "185" '|awk '$13 == "\"-\""' | awk '{print $3}' | sort -nr | uniq -c | sort -nr |awk '$1 &gt; 4'<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>| awk '{print $2}'|grep -vE "220.231.22.195|124.207.40.131"`<BR>echo "$bip2" &gt;&gt; /root/iptables2.txt<BR>echo "$bip" &gt;&gt; /root/iptables2.txt<BR>for ip in $bip; do<BR><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>/sbin/iptables -A INPUT -s<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>$ip -j DROP; echo $ip<BR>done<BR>for ip2 in $bip2; do<BR><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>/sbin/iptables -A INPUT -s<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>$ip2 -j DROP; echo $ip2<BR>done<BR><BR>sleep 15<BR>bip=`tail -n 1000<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>/usr/local/nginx-rewrite/logs/rewrite.xxxx.com<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>| awk ' $9 ~ "/" ' | awk '$11 == "499"<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>' |awk '$12 == "0" '|awk '$13 == "\"-\""' | awk '{print $3}' | sort -nr | uniq -c | sort -nr |awk '$1 &gt; 4'<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>| awk '{print $2}'|grep -vE "220.231.22.195|124.207.40.131"`<BR>bip2=`tail -n 1000<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>/usr/local/nginx-rewrite/logs/rewrite.xxxx.com<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>| awk ' $9 ~ "/" ' | awk '$11 == "301"<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>' |awk '$12 == "306" || $12 == "185" '|awk '$13 == "\"-\""' | awk '{print $3}' | sort -nr | uniq -c | sort -nr |awk '$1 &gt; 4'<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>| awk '{print $2}'|grep -vE "xxx.231.xxx.195|xxx.2xx.40.131"`<BR>echo "$bip2" &gt;&gt; /root/iptables2.txt<BR>echo "$bip" &gt;&gt; /root/iptables2.txt<BR>for ip in $bip; do<BR><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>/sbin/iptables -A INPUT -s<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>$ip -j DROP; echo $ip<BR>done<BR>for ip2 in $bip2; do<BR><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>/sbin/iptables -A INPUT -s<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>$ip2 -j DROP; echo $ip2<BR>done<BR><BR>sleep 15<BR>bip=`tail -n 1000<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>/usr/local/nginx-rewrite/logs/rewrite.xxxx.com<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>| awk ' $9 ~ "/" ' | awk '$11 == "499"<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>' |awk '$12 == "0" '|awk '$13 == "\"-\""' | awk '{print $3}' | sort -nr | uniq -c | sort -nr |awk '$1 &gt; 4'<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>| awk '{print $2}'|grep -vE "220.231.22.195|124.207.40.131"`<BR>bip2=`tail -n 1000<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>/usr/local/nginx-rewrite/logs/rewrite.xxxx.com<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>| awk ' $9 ~ "/" ' | awk '$11 == "301"<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>' |awk '$12 == "306" || $12 == "185" '|awk '$13 == "\"-\""' | awk '{print $3}' | sort -nr | uniq -c | sort -nr |awk '$1 &gt; 4'<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>| awk '{print $2}'|grep -vE "xx0.2xx.22.1xx|xx.2xx.xxx.131"`<BR>echo "$bip2" &gt;&gt; /root/iptables2.txt<BR>echo "$bip" &gt;&gt; /root/iptables2.txt<BR>for ip in $bip; do<BR><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>/sbin/iptables -A INPUT -s<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>$ip -j DROP; echo $ip<BR>done<BR>for ip2 in $bip2; do<BR><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>/sbin/iptables -A INPUT -s<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>$ip2 -j DROP; echo $ip2<BR>done</FONT><BR></SPAN></P></SPAN></DIV>
页: [1]
查看完整版本: 应对synflood 攻击的方法