网站又受到了DDOS攻击,由于apache是放在了nginx的后端运行,所以日志看不到用户的真实IP
apache2.4自带了mod_remoteip,我们将它启用,在http.conf的配置中:
LoadModule remoteip_module modules/mod_remoteip.so
增加如下代码:
<IfModule remoteip_module>
RemoteIPHeader X-Forwarded-For
RemoteIPProxiesHeader X-Forwarded-By
</IfModule>
LogFormat里面增加’%a’:
LogFormat “%h %a %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”” combined
LogFormat “%h %a %l %u %t \”%r\” %>s %b” common
原来没有,这个%a就是用来输出真实IP地址的。
这个时候在apache的日志里面就可以看到黑客的真实IP地址。
如何封掉这个IP呢?在apache的配置文件http.conf里面使用下面的代码:
<If “%{REMOTE_ADDR} == ‘221.122.70.2’”>
Require all denied
</If>
上面的参考代码:
https://httpd.apache.org/docs/2.4/howto/access.html
<If “%{HTTP_USER_AGENT} == ‘BadBot'”>
Require all denied
</If>
我开始不确定这个REMOTE_ADDR就是环境变量的名字,后来换成HTTP_REMOTE_ADDR,apache就会重启不了。检查日志和错误日志,发现了变化。确认上面的代码是有效的。
我这段代码,只能封一个IP,这里的REMOTE_ADDR就是真实IP。
重启apache,这个用户的访问记录仍然存在,错误日志里面,
[Sat Feb 16 12:56:37.229612 2019] [authz_core:error] [pid 7104:tid 1800] [client 221.122.70.2:4488] AH01630: client denied by server configuration: …, referer: http://www.example.comn/sites/all/modules/superfish/admin.php
经过观察,确实限制住了黑客的攻击行为,但是黑客的攻击行为还是到达了apache。只是到达以后,就被封掉,后续没有支持php,mysql,对正常用的影响就不大了。
这个黑客很熟悉Drupal,发送的DDOS请求都是Post。
浏览量: 22