始创于2000年 股票代码:831685
咨询热线:0371-60135900 注册有礼 登录
  • 挂牌上市企业
  • 60秒人工响应
  • 99.99%连通率
  • 7*24h人工
  • 故障100倍补偿
您的位置: 网站首页 > 帮助中心>文章内容

Linux VPS下简单解决CC攻击

发布时间:  2012/9/11 14:21:41
一,准备工作
 
1,登录进VPS控制面板,准备好随时重启VPS。
 
2,关闭Web Server先,过高的负载会导致后面的操作很难进行,甚至直接无法登录SSH。
 
3,以防万一,把设置的Web Server系统启动后自动运行去掉。
 
(如果已经无法登录进系统,并且重启后负载过高导致刚刚开机就已经无法登录,可联系管理员在母机上封掉VPS的IP或80端口,在母机上用虚拟控制台登录进系统,然后进行2&3的操作,之后解封)
 
二,找出攻击者IP
 
1,在网站根目录建立文件ip.php,写入下面的内容。
 
 <?php
 
    $real_ip = getenv(‘HTTP_X_FORWARDED_FOR’);
 
    if(isset($real_ip)){
 
    shell_exec("echo $real_ip > real_ip.txt");
 
    shell_exec("echo $_SERVER['REMOTE_ADDR']> proxy.txt”);
 
    }else{
 
    shell_exec("echo $_SERVER['REMOTE_ADDR'] > ips.txt”)"
 
    }
 
echo'服务器受到攻击,正在收集攻击源,请在5分钟后访问本站,5分钟内多次访问本站有可能会被当作攻击源封掉IP。谢谢合作!';
 
?>
 
2,设置伪静态,将网站下的所有访问都rewrite到ip.php。
 
Nginx规则:
 
    rewrite (.*) /ip.php;
 
    Lighttpd规则:
 
    url.rewrite = (
 
    “^/(.+)/?$" => "/ip.php”
 
   )
 
3,启动Web Server开始收集IP
 
进行完1和2的设置后,启动Web Server,开始记录IP信息。
 
收集时间建议为3到5分钟,然后再次关闭Web Server。
 
real_ip.txt,这个文件中保存的IP有80%以上都相同的,这个IP就是攻击者实施攻击的平台的IP。
 
proxy.txt,这个文件中保存的是攻击者调用的代理服务器的IP,需要封掉。
 
ips.txt,这里记录的是未表现出代理服务器特征的IP,根据访问次数判断是否为攻击源。
 
三,对上一段的补充
 
如果VPS上启用了WEB日志,可以查看日志文件的增长速度来判断是哪个站点被攻击。
 
如果没有启用日志,并且站点数量很少,临时启用日志也很方便 。
 
如果没有启用日志,并且站点数量过多,可以使用临时的Web Server配置文件,不绑定虚拟主机,设置一个默认的站点。然后在ip.php里加入下面一行
 
shell_exec("echo $_SERVER['HTTP_HOST’]>> domain.txt”);
domain.txt里将保存被访问过的域名,被CC攻击的站点将在里面占绝大多数。
 
四,开始封堵IP
 
建立文件ban.php
 
<?
 
    $threshold = 10;
 
    $ips = array_count_values(file('ips.txt’));
 
    $ban_num = 0;
 
    foreach($ips as $ip=>$num){
 
    if($num > $threshold){
 
    $ip = trim($ip);
 
    $cmd = “iptables -I INPUT -p tcp --dport 80 -s $ip -j DROP”;
 
    shell_exec($cmd);
 
    echo “$ip baned! ”;
 
    $ban_num ++;
 
    }
 
    }
 
    $proxy_arr = array_unique(file('ips.txt’))'
 
    foreach($proxy_arr as $proxy){
 
    $proxy = trim($proxy);
 
    $cmd = “iptables -I INPUT -p tcp --dport 80 -s $ip -j DROP”;
 
    shell_exec($cmd);
 
    echo “$ip baned! ”;
 
    $ban_num ++;
 
    }
 
    echo “total: $ban_num ips ”;
 
    ?>
 
用下面的命令执行脚本(确保php命令在PATH中)
 
php ban.php
 
这个脚本依赖于第二段中ips.txt里保存的结果,当其中记录的IP访问次数超过10次,就被当作攻击源给屏蔽掉。如果是代理服务器,则不判断次数直接 封掉。
 
封完IP之后,把所有的网站设置恢复正常,站点可以继续正常运行了。 
本文出自:亿恩科技【www.enkj.com】

服务器租用/服务器托管中国五强!虚拟主机域名注册顶级提供商!15年品质保障!--亿恩科技[ENKJ.COM]

  • 您可能在找
  • 亿恩北京公司:
  • 经营性ICP/ISP证:京B2-20150015
  • 亿恩郑州公司:
  • 经营性ICP/ISP/IDC证:豫B1.B2-20060070
  • 亿恩南昌公司:
  • 经营性ICP/ISP证:赣B2-20080012
  • 服务器/云主机 24小时售后服务电话:0371-60135900
  • 虚拟主机/智能建站 24小时售后服务电话:0371-60135900
  • 专注服务器托管17年
    扫扫关注-微信公众号
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 亿恩科技 版权所有  地址:郑州市高新区翠竹街1号总部企业基地亿恩大厦  法律顾问:河南亚太人律师事务所郝建锋、杜慧月律师   京公网安备41019702002023号
      0
     
     
     
     

    0371-60135900
    7*24小时客服服务热线