CentOS系统下的DDOS攻击防范 .,centosddos如果上升到 time


squid主要是利用其端口映射的功能,可以将80端口转换一下,其实一般的DDOS攻击可以修改/proc/sys/net/ipv4 /tcp_max_syn_backlog里的参数就行了,默认参数一般都很小,设为8000以上,一般的DDOS攻击就可以解决了。如果上升到 timeout阶段,可以将/proc/sys/net/ipv4/tcp_fin_timeout设小点。

大家都在讨论DDOS,个人认为目前没有真正解决的方法,只是在缓冲和防御能力上的扩充,跟黑客玩一个心理战术,看谁坚持到最后,网上也有很多做法,例如syncookies等,就是复杂点。

sysctl -w net.ipv4.icmp_echo_ignore_all=1


echo 1 > /proc/sys/net/ipv4/tcp_syncookies


sysctl -w net.ipv4.tcp_max_syn_backlog=”2048″


sysctl -w net.ipv4.tcp_synack_retries=”3″


iptables -A INPUT -i eth0 -p tcp –syn -j syn-flood


# Limit 12 connections per second (burst to 24)


iptables -A syn-flood -m limit –limit 12/s –limit-burst 24 -j RETURN

可以试着该该:

iptbales -A FORWARD -p tcp –syn -m limit –limit 1/s -j ACCEPT

虚拟主机服务商在运营过程中可能会受到黑客攻击,常见的攻击方式有SYN,DDOS等。

通过更换IP,查找被攻击的站点可能避开攻击,但是中断服务的时间比较长。比较彻底的解决方法是添置硬件防火墙。不过,硬件防火墙价格比较昂贵。可以考虑利用Linux系统本身提供的防火墙功能来防御。

1.抵御SYN

SYN攻击是利用TCP/IP协议3次握手的原理,发送大量的建立连接的网络包,但不实际建立连接,最终导致被攻击服务器的网络队列被占满,无法被正常用户访问。

Linux内核提供了若干SYN相关的配置,用命令:

sysctl -a | grep syn

看到:

net.ipv4.tcp_max_syn_backlog = 1024


net.ipv4.tcp_syncookies = 0


net.ipv4.tcp_synack_retries = 5


net.ipv4.tcp_syn_retries = 5


tcp_max_syn_backlog是SYN队列的长度,tcp_syncookies是一个开关,是否打开SYN Cookie

功能,该功能可以防止部分SYN攻击。tcp_synack_retries和tcp_syn_retries定义SYN的重试次数。

加大SYN队列长度可以容纳更多等待连接的网络连接数,打开SYN Cookie功能可以阻止部分SYN攻击,降低重试次数也有一定效果。

调整上述设置的方法是:

增加SYN队列长度到2048:

sysctl -w net.ipv4.tcp_max_syn_backlog=2048

打开SYN COOKIE功能:

sysctl -w net.ipv4.tcp_syncookies=1

降低重试次数:

sysctl -w net.ipv4.tcp_synack_retries=3

sysctl -w net.ipv4.tcp_syn_retries=3

为了系统重启动时保持上述配置,可将上述命令加入到/etc/rc.d/rc.local文件中

netstat 工具来检测SYN攻击


# netstat -n -p -t


tcp0 0 10.11.11.11:23124.173.152.8:25882 SYN_RECV-


tcp0 0 10.11.11.11:23236.15.133.204:2577 SYN_RECV-


tcp0 0 10.11.11.11:23127.160.6.129:51748 SYN_RECV-



LINUX系统中看到的,很多连接处于SYN_RECV状态(在WINDOWS系统中是SYN_RECEIVED状态),


源IP地址都是随机的,表明这是一种带有IP欺骗的SYN攻击。


# netstat -n -p -t | grep SYN_RECV | grep :80 | wc -l


324


查看在LINUX环境下某个端囗的未连接队列的条目数,显示TCP端囗22的未连接数有324个,


虽然还远达不到系统极限,但应该引起管理员的注意。


[root@pub wxjsr]# netstat -na | grep SYN_RECV


tcp 0 0 58.193.192.20:80 221.0.108.162:32383 SYN_RECV


tcp 0 0 58.193.192.20:80 125.85.118.231:2601 SYN_RECV


tcp 0 0 58.193.192.20:80 222.242.171.215:2696 SYN_RECV


tcp 0 0 58.193.192.20:80 116.52.10.51:2629 SYN_RECV


tcp 0 0 58.193.192.20:80 218.171.175.157:1117


[root@pub wxjsr]# netstat -na | grep SYN_RECV |wc


11 66 979


查看系统SYN相关的配置


Linux内核提供了若干SYN相关的配置,用命令: sysctl -a | grep syn


[root@metc apache2]# /sbin/sysctl -a | grep syn


net.ipv6.conf.default.max_desync_factor = 600


net.ipv6.conf.all.max_desync_factor = 600


net.ipv6.conf.eth0.max_desync_factor = 600


net.ipv6.conf.lo.max_desync_factor = 600


net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv = 60


net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent = 120


net.ipv4.tcp_max_syn_backlog = 1280


net.ipv4.tcp_syncookies = 1


net.ipv4.tcp_synack_retries = 2


net.ipv4.tcp_syn_retries = 5


fs.quota.syncs = 18


防范SYN攻击设置


#缩短SYN- Timeout时间:


iptables -A FORWARD -p tcp –syn -m limit –limit 1/s -j ACCEPT


iptables -A INPUT -i eth0 -m limit –limit 1/sec –limit-burst 5 -j ACCEPT


#每秒 最多3个 syn 封包 进入 表达为 :


iptables -N syn-flood


iptables -A INPUT -p tcp –syn -j syn-flood


iptables -A syn-flood -p tcp –syn -m limit –limit 1/s –limit-burst 3 -j RETURN


iptables -A syn-flood -j REJECT


#设置syncookies:


sysctl -w net.ipv4.tcp_syncookies=1


/sbin/sysctl -w net.ipv4.tcp_max_syn_backlog=3000


/sbin/sysctl -w net.ipv4.tcp_synack_retries=1


/sbin/sysctl -w net.ipv4.tcp_syn_retries=1


sysctl -w net.ipv4.conf.all.send_redirects=0


sysctl -w net.ipv4.conf.all.accept_redirects=0


sysctl -w net.ipv4.conf.all.forwarding=0


/sbin/sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1


/sbin/sysctl -w net.ipv4.conf.default.accept_source_route=0 # 禁用icmp源路由选项


/sbin/sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 # 忽略icmp ping广播包,应开启


/sbin/sysctl -w net.ipv4.icmp_echo_ignore_all=1 # 忽略所有icmp ping数据,覆盖上一项

相关内容

    暂无相关文章