• <ins id='0efo'></ins>

        <acronym id='0efo'><em id='0efo'></em><td id='0efo'><div id='0efo'></div></td></acronym><address id='0efo'><big id='0efo'><big id='0efo'></big><legend id='0efo'></legend></big></address>
      1. <fieldset id='0efo'></fieldset>

      2. <i id='0efo'><div id='0efo'><ins id='0efo'></ins></div></i>
      3. <tr id='0efo'><strong id='0efo'></strong><small id='0efo'></small><button id='0efo'></button><li id='0efo'><noscript id='0efo'><big id='0efo'></big><dt id='0efo'></dt></noscript></li></tr><ol id='0efo'><table id='0efo'><blockquote id='0efo'><tbody id='0efo'></tbody></blockquote></table></ol><u id='0efo'></u><kbd id='0efo'><kbd id='0efo'></kbd></kbd>

        <code id='0efo'><strong id='0efo'></strong></code>

        <span id='0efo'></span>

          <dl id='0efo'></dl>
            <i id='0efo'></i>

            Linux VPS下简单解决CC攻击的方法

            • 时间:
            • 浏览:16
            • 来源: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  ,剧本庞大水平要高许多  ,而且可能要凭据情形做些调整 ,思量到将要读到本文的人大多数都未必掌握更多的手艺  ,本文的目的就是按部就班的依本文举行操作  ,即可解决问题  。