linux服务器cc防御,Linux下简单的防止CC攻击

Nginx 0.7开始提供了2个限制用户连接的模块:NginxHttpLimitZoneModule和NginxHttpLimitReqModule。

NginxHttpLimitZoneModule可以根据条件进行并发连接数控制。

NginxHttpLimitReqModule可以根据条件进行请求频率的控制。http {

limit_zone my_zone $binary_remote_addr 10m;

limit_req_zone $binary_remote_addr zone=my_req_zone:10m rate=1r/s;

}

server {

...

location ~ ^/bbs/(index|forumdisplay|viewthread).php$ {

limit_conn myzone_bbs 3;

limit_req zone=bbs burst=2 nodelay;

...

}

应用这条规则后,bbs目录下的index.PHP、forumdisplay.php和viewthread.php这些页面同一个IP只许建立3个连接,并且每秒只能有1个请求(突发请求可以达到2个)。

另外我们可以找个脚本来封攻击者的IP.访问者通过浏览器正常访问网站,与服务器建立的连接一般不会超过20个,我们可以通过脚本禁止连接数过大的IP访问。以下脚本通过netstat命令列举所有连接,将连接数最高的一个IP如果连接数超过150,则通过 iptables阻止访问:#!/bin/sh

status=`netstat -na|awk '$5 ~ /[0-9]+:[0-9]+/ {print $5}' |awk -F ":" -- '{print $1}' |sort -n|uniq -c |sort -n|tail -n 1`

NUM=`echo $status|awk '{print $1}'`

IP=`echo $status|awk '{print $2}'`

result=`echo "$NUM > 150" | bc`

if [ $result = 1 ]

then

echo IP:$IP is over $NUM, BAN IT!

/sbin/iptables -I INPUT -s $IP -j DROP

fi

运行crontab -e,将上述脚本添加到crontab每分钟自动运行:* * * * * /root/xxxx.sh

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值