如何通过IP地址阻止客户端访问我的Web服务器上的某些URL?


9

如何永久阻止访问已知漏洞页面的ipaddress /phpMyadmin/?我正在运行Debian服务器,经常看到机器人或黑客在扫描我的服务器以尝试发现漏洞。

73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpMyadmin/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpMyAdmin/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpmyAdmin/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpmyadmin2/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpmyadmin3/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpmyadmin4/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"

我已经关注了这个stackoverflow问题:如何保护phpMyAdmin

我希望开始阻止机器人占用带宽。


4
这将清理您的日志文件,但对安全性毫无帮助。要么始终使您保持最新状态,要么仅从本地主机访问它(并阻止所有其他流量)。要访问远程服务器,请通过ssh隧道连接端口。
Stefan M

我认为这将有助于提高安全性,因为它将阻止试图访问该站点的恶意IP地址。
Whitecat '17

@Whitecat是404HTTP代码的意思Page not found。您如何感觉到这些IP违反了IP?您决定基于什么输出来阻止这些IP?
Valentin Bajrami

我想基于它们将要进入​​phpMyAdmin的事实来阻止IP。我已经保护了我的网站,而且我知道访问该页面的任何人都是恶意的。
Whitecat '17

1
您为什么不创建.htpasswd
nicoX

Answers:


18

这可能比您想要的要重得多,但是您可以考虑使用fail2ban(https://www.fail2ban.org)。该工具可以监视您的日志文件,并自动禁止生成与一组可定制模式匹配的日志的地址。


5
tbh这是fail2ban旨在解决的确切问题。它有点沉重,但随后所需的条件本身也是相当动态的。fail2ban在尝试使用标准工具来解决此类问题时,所有考虑到的事情都是轻量级的。
布拉奇利

1
好吧,我想您可以编写一个suid-root二进制cgi,将其托管为/ phpmyadmin,以添加其调用者的防火墙规则。
约书亚

7

别。充其量您什么也做不到,只会使您的日志变得更整洁。最糟糕的是,您最终将阻止合法访问者,这些访问者恰巧(通过DHCP)获得了一个IP地址,该IP地址过去曾经被PC感染为僵尸网络节点。

真正的问题是日志混乱,只需配置您的日志记录以删除已知的请求即可解决该问题,即扫描您的站点没有也不会拥有的vulns,因为您没有使用易受攻击的漏洞他们正在扫描的框架。如果您担心完全丢失日志记录(也许它们提供的证据表明谁应对另一种攻击负责,或者攻击何时开始等),则只需在短时间内限制给定IP的垃圾URL的多个日志条目即可应该更好地工作。


6
fail2ban禁令是暂时的-X击中Y次登录尝试失败的次数在Y秒内,Z分钟禁令以及可配置的XY和Z。丢弃主动入侵尝试的日志对我来说似乎是一个更为危险的选择。
Shadur

2
如果发生这种情况的可能性为0.1%,则此phpmyadmin实例的合法用户应该只能向OP发送消息以使其不受阻碍。此外,fail2ban可以在碰巧碰到服务器上未修补或为零天的漏洞之前将扫描攻击拒之门外。
Segfault

1
@Segfault:大概没有合法用户,/phymyadmin/因为/phymyadmin/服务器上不存在该用户(请参阅:404)。相反,有问题的合法用户是将通过防火墙对其进行阻止的站点的任何用户
R .. GitHub停止帮助ICE

1
“最佳”实际上包括阻止了进一步的测试,包括可能实际上已经成功的测试。当您意识到自己在过滤器中犯了某种错误时,使用日志内容似乎也是丢失信息的好方法。如果您担心日志混乱,那么您需要像ELK这样的分析平台来筛选所有您感兴趣的东西
。– Bratchley

2
另一个相关的问题是越来越多地使用CGN。ISP可以有成百上千个客户共享一个IP地址,这使得IP阻塞充其量是危险的,甚至是临时的。您可以同时具有合法用户和来自同一地址的活动扫描。
鲍勃(Bob)

3

在httpd配置目录之一中找到phpMyAdmin.conf,并deny 73.199.136.112在配置文件的allow / deny部分中添加,在2.4部分中添加require IP。我在下面放了一个完整配置文件的示例,在该示例中,我具有反向输入的内容,除了允许的IP段之外,我将阻止所有内容访问该工具。

[thebtm@server conf.d]# cat /etc/httpd/conf.d/phpMyAdmin.conf
# phpMyAdmin - Web based MySQL browser written in php
# 
# Allows only localhost by default
#
# But allowing phpMyAdmin to anyone other than localhost should be considered
# dangerous unless properly secured by SSL

Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin

<Directory /usr/share/phpMyAdmin/>
   AddDefaultCharset UTF-8

   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
       Require ip 10.10.26
       Require ip 192.168.56
       Require ip 127.0.0.1       
       Require ip ::1
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 10.10.25
     Allow from 192.168.56
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

<Directory /usr/share/phpMyAdmin/setup/>
   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
       Require ip 127.0.0.1
       Require ip ::1
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

# These directories do not require access over HTTP - taken from the original
# phpMyAdmin upstream tarball
#
<Directory /usr/share/phpMyAdmin/libraries/>
    Order Deny,Allow
    Deny from All
    Allow from None
</Directory>

<Directory /usr/share/phpMyAdmin/setup/lib/>
    Order Deny,Allow
    Deny from All
    Allow from None
</Directory>

<Directory /usr/share/phpMyAdmin/setup/frames/>
    Order Deny,Allow
    Deny from All
    Allow from None
</Directory>

# This configuration prevents mod_security at phpMyAdmin directories from
# filtering SQL etc.  This may break your mod_security implementation.
#
#<IfModule mod_security.c>
#    <Directory /usr/share/phpMyAdmin/>
#        SecRuleInheritance Off
#    </Directory>
#</IfModule>

这太棒了。但问题在于,来自许多不同IP的僵尸程序一直存在。我可能无法跟上每个不同的IP,因为我每天要获得20-30个独特的恶意ip。
Whitecat '17

2
这就是为什么我在相反的位置显示了您允许要访问的段并自动阻止其余段的原因。
thebtm

Alias /phpmyadmin /usr/share/phpMyAdmind /phpmyadmin为了安全起见,应将其更改为其他内容。 Alias /secret /usr/share/phpMyAdmind
nicoX

我在安装该工具时修改了该工具随附的默认配置文件,并组成了一些随机IP地址。
thebtm
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.