Linux服务器止恶意请求攻击处理方案-防盗链

        昨晚收到运营商短信通知我们短信服务超过日用额度警告,我猜测服务器绝对被人攻击了,因为我们的服务器用户注册,发送短信验证基本没有做任何限制。我原本以为我们的产品还在试运行阶段,不会有人攻击。

        我赶快打开电脑远程链接服务器访问日志,果不其然出现大量请求日志如图1,分析日志你发现攻击者非常狡猾,访问ip是动态的,访问浏览器信息也在变化。

图1    

        为了减少经济损失我赶快处理我们的注册逻辑,先将请求链接重名,攻击者只能访问返回404结果,但是这种处理方式,如果被攻击者发现就很可能发起第二轮攻击。这也只能是个临时方案。毕竟狗命要紧先睡觉。

        第二天我对发送短信接口做了加固,常用的方案是在发送短信验证码前,让用户做一个图形验证,验证成功后才可以发送短信。如图2,这里安利一下云片,目前免费。

图2

          这样处理只能说防止攻击者发送短信攻击,攻击者可能发起其他请求,正常业务无法访问。

          细心的朋友已经发现攻击者有一个的请求来源是固定的,我查找发现该服务器在国外,也没备案。我也只能通过技术手段处理。

           限制服务器的请求来源,网上查了很多大家都在讲防盗链。那我就讲讲如何用防盗链处理该类问题。

        首先要开启apache的读写模块:打开Apache主配,确保开启rewrite module配置:如图3:去掉注释LoadModule rewrite_module modules/mod_rewrite.so;

        重启apache执行命令:sudo apache service restart 发先重启失败,原来我的rewrite module在/usr/lib/apache2/modules/mod_rewrite.so存放,修改为:LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so。重启服务。

图3

       接下来配置防盗链:在站点的根目录下新建.htaccess文件。找到站点的配置项如图4,将AllowOverride 中的none改为All,不然不起作用。

图4

    最后一步给..htaccess文件添加规则在网上查找发现很简单,结果这个规则让我头疼了半天。

    别人都是这样子的:

图5

    而我的只能这样子:你不难发现别人的RewriteCond 多条对一个RewriteRule ,而我的一一对应,亲测一对多只有最后一条起作用。

图7

RewriteCond、RewriteRule规则详细解释

Rewrite规则表达式的说明:(先要清楚rewritecond和rewriterule 是rewrite模块里面的)

. 匹配任何单字符

[chars] 匹配字符串:chars

[^chars] 不匹配字符串:chars

text1|text2 可选择的字符串:text1或text2

? 匹配0到1个字符

* 匹配0到多个字符

+ 匹配1到多个字符

^ 字符串开始标志

$ 字符串结束标志

\n 转义符标志

反向引用 $N 用于 RewriteRule 中匹配的变量调用(0 <= N <= 9)

反向引用 %N 用于 RewriteCond 中最后一个匹配的变量调用(1 <= N >= 9)

愿世界没有代码

你可能感兴趣的:(Linux服务器止恶意请求攻击处理方案-防盗链)