700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > linux服务器配合php和cron自动实现封锁攻击者ip

linux服务器配合php和cron自动实现封锁攻击者ip

时间:2020-02-03 21:57:59

相关推荐

linux服务器配合php和cron自动实现封锁攻击者ip

后端开发|php教程

linux服务器配合php和cron自动实现封锁攻击者ip

后端开发-php教程

我已经好久没有写点东西了,主要是因为最近实在是太忙了,有个白痴天天用webbench攻击公司的服务器.

报表管理系统源码,ubuntu开源镜像站,tomcat怎么下载免安装,爬虫草龟,栅格影像切片php,seo流量清洗seo工资lzw

俗话说得好,久病成医,今天我这个蒙古大夫就分享一下自动防攻击的部分.

点餐小程序源码,ubuntu打游戏,tomcat配置数字证书,在线爬虫框架,php源码包目录在哪里,seo零基础学习方法排名lzw

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

html5 echarts 源码,vscode更换背景图吗,ubuntu考入文件,tomcat加jvm端口,黑马网络爬虫,php 安装扩展命令,潍坊短视频seo怎么样lzw

刚开始我的做法是,用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;File_Put_Contents($p,"#!/bin/bash\niptables -I INPUT -s {$_SERVER[REMOTE_ADDR]} -j DROP;\n",LOCK_EX);Chmod($p,0755);chown($p,www);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@.tw."\n".Content-Type:text/html;charset=utf-8);}sMail(see7di@,【WebBench又?始了-by 】!,date(Y-m-d H:i:s,time())." {$_SERVER[REMOTE_ADDR]}");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/bash\niptables -I INPUT -s {$_SERVER[REMOTE_ADDR]} -j DROP;\necho \"{$_SERVER[REMOTE_ADDR]} - `date`\" | mail -s \"WebBench-\" see7di@\n",LOCK_EX);Chmod($p,0755);chown($p,www);Header(Location:http://127.0.0.1);Die();}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。