Gateway未来科技

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 182|回复: 0

Linux 下如何简单的防止CC攻击

[复制链接]

258

主题

270

帖子

819

积分

超级版主

Rank: 8Rank: 8

积分
819
发表于 2017-3-1 01:41:07 | 显示全部楼层 |阅读模式

  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 ~ ^/blog/(index|forumdisplay|viewthread).php$ {
  limit_conn   myzone_bbs  3;
  limit_req zone=bbs burst=2 nodelay;
  ...
  }
  应用这条规则后,blog目录下的index.php、forumdisplay.php和viewthread.php这些页面同一个IP只许建立3个连接,并且每秒只能有1个请求(突发请求可以达到2个)。
  另外我们可以找个脚本来封攻击者的IP.访问者通过浏览器正常访问网站,与服务器建立的连接一般不会超过20个,我们可以通过脚本禁止连接数过大的IP访问
  以下脚本通过netstat命令列举所有连接,将连接数最高的一个IP如果连接数超过150,则通过 iptables 阻止访问:
  建立脚本
  vi stop.sh
  #!/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 IPIP is over $NUM, BAN IT!
  /sbin/iptables -I INPUT -s $IP -j DROP
  fi
  运行crontab -e,将上述脚本添加到crontab每分钟自动运行:
  */1 * * * * /root/stop.sh
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Comsenz Inc.

GMT+8, 2024-12-23 12:56 , Processed in 0.043511 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc. Templated By 【未来科技 www.veikei.com】设计

快速回复 返回顶部 返回列表