linux服务器并webbench攻击解决方案

首先我来说一下这个被攻击的网站的大概部署状况.这个网站主要是nginx+mysql+php,有两台服务器分别放了web和数据库,web只对外开启了80端口操作系统是centos,而数据库服务器则在内网,攻击者的手段其实很简单,用webbench网站压力测试工具发送大量的请求到服务器,之前的时候发送每一个请求之后数据库就会相应,然后读取内容最终显示,造成数据库和web之间大量的交换数据,甚至导致mysql达到连接数上限,请求被拒绝,而且攻击者时间挺多的,他不停地换浮动ip,因此直接用防火墙封锁ip没意义.

刚开始我的做法是,用php取得攻击者的agent头,判断是不是webbench来访,如果是就die掉,不在请求数据库,确实挺有效,数据库不会再超出限制了,但是对方频繁的发送请求过来,导致网络带宽被严重消耗,看来得想想其他办法,最终想到了一个解决方法且实际测试发现可行,因此分享给大家,其实我的做法原理很简单:用php取得用户agent头判断是否是webbench来源,如果是的话就在服务器上写一个shell文件,这个文件的内容就是封锁IP的规则,

然后再用chmod函数修改一下这个文件让其可执行,再用cron服务读取这个文件执行,把ip封锁掉,整个过程全部自动化完成不需要人为干预,另外在封锁的时候给我发一封email通知我有个倒霉蛋被干掉了,这样就行了.

具体实现代码如下:

IF(isSet($_SERVER['HTTP_USER_AGENT']) And Trim($_SERVER['HTTP_USER_AGENT'])!='') {

$_SERVER['HTTP_USER_AGENT']=StrToLower($_SERVER['HTTP_USER_AGENT']);

IF(StriStr($_SERVER['HTTP_USER_AGENT'],'webbench')!==False) {

$p='/home/www/webbench.sh';

$_SERVER['REMOTE_ADDR']=isSet($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : 'unknow';

<span style="color: #ff0000;">File_Put_Contents($p,"#!/bin/bashniptables -I INPUT -s {$_SERVER['REMOTE_ADDR']} -j DROP;n",LOCK_EX);

</span> Chmod($p,0755);

chown($p,'www');

<span style="color: #ff0000;">Function sMail($to,$tit,$msg) {

IF(Filter_var($to,FILTER_VALIDATE_EMAIL)==''){

throw new Exception('邮箱地址错误!');

}

$tit='=?UTF-8?B?'.Base64_Encode($tit).'?=';

$msg = str_replace("n.","n..",$msg); //Windows如果在一行开头发现一个句号则会被删掉,要避免此问题将单个句号替换成两个句号

Return Mail($to,$tit,$msg,'From:No-reply@adm.bossadm.com.tw'."n".'Content-Type:text/html;charset=utf-8');

}

sMail('see7di@gmail.com','【WebBench又开始了t】!',date('Y-m-d H:i:s',time())." {$_SERVER['REMOTE_ADDR']}");</span>

Header('Location:http://127.0.0.1');

Die();

}

}

后来我又做了一次调整,把发email的部份写入了shell文件内,不再用php发email,因?槟腔峁啾?愕男畔?把上边的代码修改成:

IF(isSet($_SERVER['HTTP_USER_AGENT']) And Trim($_SERVER['HTTP_USER_AGENT'])!='') {

$_SERVER['HTTP_USER_AGENT']=StrToLower($_SERVER['HTTP_USER_AGENT']);

IF(StriStr($_SERVER['HTTP_USER_AGENT'],'webbench')!==False) {

$p='/home/www/webbench.sh';

$_SERVER['REMOTE_ADDR']=isSet($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : 'unknow';

File_Put_Contents($p,"#!/bin/bashniptables -I INPUT -s {$_SERVER['REMOTE_ADDR']} -j DROP;necho "{$_SERVER['REMOTE_ADDR']} - `date`" | mail -s "WebBench-www.downcc.com" see7di@gmail.comn",LOCK_EX);

Chmod($p,0755);

chown($p,'www');

Header('Location:http://127.0.0.1');

Die();

}

}

(0)

相关推荐

  • Linux服务器被rootkit恶意软件攻击后的处理方法

    rootkit是一种恶意软件,通常和木马等其他恶意程序一起结合使用,而Linux是其重要的攻击对象,那么Linux被rootkit攻击后该怎么办呢?下面小编就给大家介绍下Linux服务器被rootki ...

  • 防范4种级别攻击来确保Linux服务器

    以下的文章主要描述的是防范四种级别攻击确保Linux服务器安全,如果你对防范四种级别攻击确保Linux服务器安全心存好奇的话,以下的文章将会揭开它的神秘面纱.随着Linux企业应用的不断扩展. 有大量 ...

  • CentOS 6 的安全配置(CentOS Linux服务器安全设置)

    一、系统安全记录文件 操作系统内部的记录文件是检测是否有网络入侵的重要线索。如果您的系统是直接连到Internet,您发现有很多人对您的系统做Telnet/FTP登录尝试,可以运行”#more /va ...

  • 企业级Linux服务器安全防护要点

    随着开源系统Linux的盛行,其在大中型企业的应用也在逐渐普及,很多企业的应用服务都是构筑在其之上,例如Web服务、数据库服务、集群服务等等。因此,Linux的安全性就成为了企业构筑安全应用的一个基础 ...

  • 25个Linux服务器安全小技巧

    大家都认为Linux 默认是安全的,我大体是认可的(这是个有争议的话题)。Linux默认确实有内置的安全模型。你需要打开它并且对其进行定制,这样才能得到更安全的系统。Linux更难管理,不过相应也更灵 ...

  • 介绍25个Linux 服务器安全小技巧

    大家都认为Linux 默认是安全的,我大体是认可的(这是个有争议的话题)。Linux默认确实有内置的安全模型。你需要打开它并且对其进行定制,这样才能得到更安全的系统。Linux更难管理,不过相应也更灵 ...

  • linux服务器下LNMP安装与配置方法

    现在很多朋友都选择了linux服务器下配置LNMP(linux+nginx+mysql+php),这里分享下LNMP安装与配置方法,需要的朋友可以参考下 Nginx与apache、lighttp性能综 ...

  • Linux服务器安全事件应急响应排查方法总结

    Linux是服务器操作系统中最常用的操作系统,因为其拥有高性能、高扩展性、高安全性,受到了越来越多的运维人员追捧。但是针对Linux服务器操作系统的安全事件也非常多的。攻击方式主要是弱口令攻击、远程溢 ...

  • 如何使Linux服务器变得更安全

    牢记以下这七点会让你的Linux服务器变得更安全 图1:运行中的服务. 安装所需的服务 如果你打算运行一台服务器,可能会想"我有来自Linode的40GB固态硬盘(SSD)存储系统,于是我可 ...