Linux Nginx VPS下简单办理CC攻击[Linux安全]
本文“Linux Nginx VPS下简单办理CC攻击[Linux安全]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
一,预备工作
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之后,把全部的网站设置恢复正常,站点可以持续正常运行了.
五,一些细节
为保持对操作历程的描写尽大概简便,没有在上面的内容中加入过量的注释,留在这段统一报告.
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,脚本复杂程度要高很多,并且大概要按照情形做些调整,考虑到将要读到本文的人大大都都未必掌握更多的技术,本文的目的就是循序渐进的依本文举行操作,便可办理问题
以上是“Linux Nginx VPS下简单办理CC攻击[Linux安全]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |