通过用户代理字符串阻止apache访问


8

我有一个脚本编写者,他正在使用代理服务器来攻击我所服务的网站。

我注意到,他们倾向于通过带有某些常见用户代理字符串的软件(即http://www.itsecteam.com/en/projects/project1_page2.htm “ Havij高级sql注入软件”和user_agent字符串)来访问网站。的Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727) Havij)。我知道任何值得一试的破解软件都可以修改其用户代理字符串,但脚本编写者必须在某个时候处理该功能,对此我认为很好。

那么,是否有任何软件可以通过匹配用户代理字符串自动阻止访问并永久将其列入黑名单?

Answers:


18

您可以通过BrowserMatch拒绝访问,并可以从SetEnvIf示例拒绝:

SetEnvIfNoCase User-Agent "^Wget" bad_bot
SetEnvIfNoCase User-Agent "^EmailSiphon" bad_bot
SetEnvIfNoCase User-Agent "^EmailWolf" bad_bot
<Directory "/var/www">
        Order Allow,Deny
        Allow from all
        Deny from env=bad_bot
</Directory>

要永久阻止它们,您必须编写自定义日志文件并使用fail2ban例如使用iptables禁止它们

例如创建LogFormat

LogFormat "%a %{User-agent}i" ipagent

将日志记录添加到您的vhost /服务器范围内

CustomLog /var/log/apache2/useragent.log ipagent

/etc/fail2ban/filter.d/baduseragent.conf

[Definition]
failregex = ^<HOST> Mozilla/4\.0 \(compatible; MSIE 7\.0; Windows NT 5\.1; SV1; \.NET CLR 2\.0\.50727\) Havij$

/etc/fail2ban/jail.conf

[apache-bad-user-agent]

enabled  = true
port     = 80,443
protocol = tcp
filter   = baduseragent
maxretry = 1
bantime  = 86400
logpath  = /var/log/apache2/useragent.log

是的,这将阻止不良的用户代理字符串,但我希望进一步采取措施,并自动禁止与不良的用户代理字符串相关联的ips,以便从该点开始禁止使用用户代理字符串在那个IP上。我会使用fail2ban,但目前还没有找到一种将其很好地应用于http请求的方法。
卡扎伊2011年

在编辑过的帖子中尝试我的建议
Dmytro Leonenko 2011年

6

我想我明白你的问题。如果这是您要寻找的内容,我将提供更详细的解释。(这也将成为其他事物的陷阱)

  • 在apache2中启用mod_rewrite引擎
  • 创建一个trap.php,访问可以做任何您喜欢的事情。例如,我将所有访客IP添加到拒绝访问我的网站的黑名单中。
  • 创建您不喜欢的useragent的文件,像这样每行一个
    bas_useragent [tab] black
    useragent_bad [tab} black
  • 现在,添加与错误的用户代理中的映射匹配的mod_rewrite,然后在存在映射的情况下将其重新请求到陷阱中。该规则可能如下所示:

    RewriteMap badlist txt:~/bad_useragent_list
    RewriteCond %{HTTP_USER_AGENT} .* [NC]
    RewriteCond ${badlist:%1|white} ^black$ [NC]
    RewriteRule (.*) "/trap.php" [L]

  • 这基本上将useragent与文件中的键匹配,如果未找到,则假定它为“白色”,并且请求未修改。如果找到它,并且关联的值为“ black”,那么该请求将被重写以转到您的trap.php文件,该文件将执行您想要的任何操作。
  • 一些可能的想法。让另一个脚本监视trap.php向其写入IP的公共文件。如果此公共文件发生更改,则该监视程序将读取新信息,解析出IP地址,并将规则添加到IP表中,以阻止来自该地址的所有流量。我希望这有帮助!同样,如果您想了解更多细节,请在此处回复。

差点忘了,你可以看到这里的mod_rewrite:httpd.apache.org/docs/current/mod/mod_rewrite.html
blerbl
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.