通过清心醉

Linux 简单防DDOS攻击.

执行

#sysctl -a|grep net.ipv4.tcp_max_syn_backlog

在返回的”net.ipv4.tcp_max_syn_backlog=512″中显示 Linux队列的最大半连接容量是512

简单数量的DDOS分布式攻击就可以让网站打不开

可以修改其最大连接限制,如修改为2000;

# sysctl -w net.ipv4.tcp_max_syn_backlog=2000

这样就设置了最大的连接数,不会因为连接数量被占用导致网站打不开.

打开SYN COOKIE功能:

# sysctl -w net.ipv4.tcp_syncookies=1

还可以执行以下指令:

# sysctl -w net.ipv4.tcp_synack_retries=1

Linux中建立TCP连接时,在客户端和服务器之间创建握手过程中,当服务器未收到客户端的确认包时,会重发请求包,一直到超时才将此条目从未连接队列是删除,也就是说半连接存在一定的存活时间,超过这个时间,半连接就会自动断开.半连接存活时间实际上是系统所有重传次数等待的超时时间之和,这个值越大,半连接数占用的Backlog队列的时间就越长,系统能处理的 SYN请求就越少,因此,缩短超时时间就可以有效防御SYN攻击,这可以通过缩小重传超时时间和减少重传次数来实现.在Linux中默认的重传次数为5 次,总超时时间为3分钟

以上指令就是将重传次数改1,有效减少DDOS的攻击造成的服务器崩溃.

因为DDOS基本都是使用”肉鸡”实现TCP攻击,占用服务器资源,很难查找出发起点的IP,但被”肉鸡”的IP还是可以查看的

执行: netstat -atnp

查看当前连接的IP,使用kill命令来杀除

当然也可以记下IP,添加到APAPCHE或者.htaccess,进行拦截.

*********************************************

附加其他iptable指令的其他防御方法:

防止同步包洪水(Sync Flood)
# iptables -A FORWARD -p tcp –syn -m limit –limit 1/s -j ACCEPT

也可以写成:
#iptables -A INPUT -p tcp –syn -m limit –limit 1/s -j ACCEPT
–limit 1/s 限制syn并发数每秒1次,可以根据自己的需要修改

防止各种端口扫描
# iptables -A FORWARD -p tcp –tcp-flags SYN,ACK,FIN,RST RST -m limit –limit 1/s -j ACCEPT

Ping洪水攻击(Ping of Death)
# iptables -A FORWARD -p icmp –icmp-type echo-request -m limit –limit 1/s -j ACCEPT

iptables -A FORWARD -p icmp –icmp-type
echo-request -j DROP

**********************************************

针对更多apache查看连接数和并发数的相关方法:

查看apache当前并发访问数:
执行: # netstat -an | grep ESTABLISHED | wc -l
对比httpd.conf中MaxClients的数字差距多少。
查看现有进程数:
# ps aux|grep httpd|wc -l
218
统计httpd进程数,连个请求会启动一个进程,使用于Apache服务器。
以上数据表示Apache能够处理218个并发请求,这个值Apache可根据负载情况自动调整。
#netstat -nat|grep -i “80”|wc -l
netstat -nat会打印系统当前网络链接状态
而grep -i “80”是用来提取与80端口有关的连接的,wc -l进行连接数统计。
最终返回的数字就是当前所有80端口的请求总数。
#netstat -na|grep ESTABLISHED|wc -l
210
netstat -an会打印系统当前网络链接状态,而grep ESTABLISHED 提取出已建立连接的信息。 然后wc -l统计。
最终返回的数字就是当前所有80端口的已建立连接的总数。
netstat -nat||grep ESTABLISHED|wc – 可查看所有建立连接的详细记录
查看Apache的并发请求数及其TCP连接状态:
Linux命令:
netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’
执行: # ulimit -n 10240
可以将apache连接开启10240 个连接数

关于作者

清心醉 administrator

发表评论

请输入验证码: