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

Kzq*_*qai 8 blacklist intrusion-prevention useragent

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

我注意到他们倾向于通过带有某个通用用户代理字符串的软件访问该站点(即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)。我知道任何值得称道的破解软件都可能能够修改它的用户代理字符串,但我对脚本编写者在某些时候必须处理该功能感到满意。

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

Dmy*_*nko 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>
Run Code Online (Sandbox Code Playgroud)

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

例如创建 LogFormat

LogFormat "%a %{User-agent}i" ipagent
Run Code Online (Sandbox Code Playgroud)

将日志记录添加到您的虚拟主机/服务器范围内

CustomLog /var/log/apache2/useragent.log ipagent
Run Code Online (Sandbox Code Playgroud)

/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$
Run Code Online (Sandbox Code Playgroud)

/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
Run Code Online (Sandbox Code Playgroud)


小智 6

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

  • 在 apache2 中启用 mod_rewrite 引擎
  • 创建一个trap.php,访问可以为所欲为。例如,我让它将所有访问者的 ip 添加到一个拒绝访问我的网站的黑名单中。
  • 创建一个你不喜欢的用户代理文件,每行一个,像这样
    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]

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