1. <tr id='6yy0'><strong id='6yy0'></strong><small id='6yy0'></small><button id='6yy0'></button><li id='6yy0'><noscript id='6yy0'><big id='6yy0'></big><dt id='6yy0'></dt></noscript></li></tr><ol id='6yy0'><table id='6yy0'><blockquote id='6yy0'><tbody id='6yy0'></tbody></blockquote></table></ol><u id='6yy0'></u><kbd id='6yy0'><kbd id='6yy0'></kbd></kbd>

      <ins id='6yy0'></ins>
    2. <i id='6yy0'></i>

      1. <fieldset id='6yy0'></fieldset>

        <span id='6yy0'></span>
        <acronym id='6yy0'><em id='6yy0'></em><td id='6yy0'><div id='6yy0'></div></td></acronym><address id='6yy0'><big id='6yy0'><big id='6yy0'></big><legend id='6yy0'></legend></big></address>

          <code id='6yy0'><strong id='6yy0'></strong></code>

          <i id='6yy0'><div id='6yy0'><ins id='6yy0'></ins></div></i>
          <dl id='6yy0'></dl>

          Linux Nginx VPS下简单解决CC攻击

          • 时间:
          • 浏览:24
          • 来源:124软件资讯网

            一 ,准备事情

            1  ,登录进VPS控制面板  ,准备好随时重启VPS 。

            2 ,关闭Web Server先  ,过高的负载会导致后面的操作很难举行  ,甚至直接无法登录SSH 。

            3  ,以防万一  ,把设置的Web Server系统启动后自动运行去掉  。

            (若是已经无法登录进系统  ,而且重启后负载过高导致刚刚开机就已经无法登录 ,可联系治理员在母机上封掉VPS的IP或80端口  ,在母机上用虚拟控制台登录进系统 ,然后举行2&3的操作  ,之后解封)

            二  ,找出攻击者IP

            1  ,在网站根目录建设文件ip.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之后 ,把所有的网站设置恢复正常  ,站点可以继续正常运行了  。

            五 ,一些细节

            为保持对操作历程的形貌只管简练  ,没有在上面的内容中加入过多的诠释 ,留在这段统一讲述  。

            1  ,关于“署理服务器”的一些本质

            两个与TCP&HTTP协议相关的值 ,REMOTE_ADDR和HTTP_X_FORWARDED_FOR 。

            (1)REMOTE_ADDR总是取离Web服务器最靠近的一台主机的IP  ,若是没有使用署理  ,这个值就是会见者自己的IP ,若是使用了署理 ,这个值就是 署理服务器的IP ,若是通过多个署理服务器举行的毗连 ,这个值就是到达Web服务器前最后一台署理服务器的IP  。

            REMOTE_ADDR是由TCP/IP层决议的 ,不能修改不能伪造  。

            (2)HTTP_X_FORWARDED_FOR  ,由于这个值是属于HTTP部门  ,而不是TCP/IP  ,以是这个值不管是什么  ,都不影响数据的传输  。事实 上  ,一样平常情形下  ,若是是会见者直接会见Web服务器 ,这个值为空;通过透明署理的时间  ,这个值会被署理服务器设置为会见者的IP;通过匿名署理毗连时  ,这 个值可能为署理服务器的IP也可能是空的也有可能是随机的  。

            HTTP_X_FORWARDED_FOR可以被恣意修改  。大多数署理服务器都是透明署理  ,也就是说 ,会把这个值设置为最原始会见者的IP  。

            2  ,关于解决CC攻击的层面问题

            按处置惩罚效率从高到低排列  。

            (由于本文是针对VPS服务器所写  ,而VPS简朴来说就是服务器的低端替换品  ,内存和CPU等资源普遍偏低 ,固然是处置惩罚效率越高越好  。)

            (1)网络传输层  。也就是本文所用的iptables ,这个工具自己是事情于系统内核  ,在建设网络毗连时直接把攻击者的毗连给否了  。在这一层面上将攻击源处置惩罚掉后  ,消耗掉的资源险些可以忽略不计 。

            (2)Web Server层  ,大多数Web Server都可以设置克制会见的IP 。在这一层上解决的意义和上面的差不多  ,可是效率要差些  。

            (3)剧本层  ,从剧本法式上制订适合于自己的计谋过滤掉攻击源 。网络上有许多撒播的在这一层面的解决方案  ,可是不太适用于VPS  ,而且设置难度可能要增添几倍或者几十倍 。

            3  ,为什么不是从日志网络IP  ?

            主要是思量两点 ,一是大多数VPS使用者都由于硬盘空间过小  ,经常扫除日志很贫苦  ,而直接克制了日志  。

            二是若是从日志网络IP  ,剧本庞大水平要高许多  ,而且可能要凭据情形做些调整  ,思量到将要读到本文的人大多数都未必掌握更多的手艺  ,本文的目的就是按部就班的依本文举行操作  ,即可解决问题 。