MENU

OpenVZ宿主机如何防止CT对外发包

• June 17, 2018 • Read: 506 • 瞎折腾

卖VPS的都懂防止VPS对外发包的重要性

下面给出一个 OpenVZ 宿主机防止小鸡对外发包的 PHP 脚本

<?php
ob_start();
passthru("vzlist -H");  //获取所有VPS
$vpslist = ob_get_contents();
ob_end_clean();
$vpslist = explode("\n",$vpslist);
array_pop($vpslist);
foreach($vpslist as $vps)
{
    $vps = explode(" ",trim($vps));
    $vps = array_values(array_filter($vps,function($v){
        return !empty($v);
    }));
    //print_r($vps);
    $ctid = $vps[0];
    $ipaddr = $vps[3];
    
    ob_start();
    passthru("vzctl exec".$ctid."'cat /proc/net/nf_conntrack | wc -l'");  //获取VPS的连接数
    $result = ob_get_contents();
    ob_end_clean();
    if($result > 10000) //如果连接数超过10000
    {
        echo $ctid." ";
        echo $result;
        passthru('vzctl exec'.$ctid."halt"); //执行halt命令
        echo "\n";
    }
}
?>

脚本原理:

1、 获取所有的CTID
2、 在运行的CT上运行如下命令,以便获取连接数

cat /proc/net/nf_conntrack | wc -l

3、 判断连接数是否超过10000,一般情况下不会超过10000,超过10000均为可疑发包
4、 超过的CT运行 halt 命令以达到防止发包目的

脚本食用:

  1. 把脚本放到OpenVZ宿主机上(不会的就别玩了
  2. 配置cron定时任务
*/1 * * * * php /root/ddos_check.php

#每分钟执行一次脚本,脚本所在目录自行修改
Tags: OpenVZ
Archives QR Code
QR Code for this page
Tipping QR Code