![如何通过 IP 地址阻止客户端访问我的 Web 服务器上的某些 URL?](https://linux22.com/image/119814/%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%20IP%20%E5%9C%B0%E5%9D%80%E9%98%BB%E6%AD%A2%E5%AE%A2%E6%88%B7%E7%AB%AF%E8%AE%BF%E9%97%AE%E6%88%91%E7%9A%84%20Web%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84%E6%9F%90%E4%BA%9B%20URL%EF%BC%9F.png)
如何永久阻止访问已知易受攻击页面(例如 )的任何 IP 地址/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。
我希望开始阻止机器人占用带宽。
答案1
这可能比您想要的更重,但您可以考虑使用fail2ban(https://www.fail2ban.org)。该工具可以监视您的日志文件并自动禁止生成与一组可自定义模式匹配的日志的地址。
答案2
不。最好的情况下,除了让日志不再杂乱之外,你什么也得不到。最坏的情况是你最终会阻止合法访客他碰巧(通过 DHCP)获得了一个 IP 地址,该地址曾经属于某个 PC 被感染为僵尸网络节点的人。
这里真正的问题是日志混乱,只需将日志配置为删除已知的漏洞扫描即可解决,因为您没有使用漏洞,因此您的网站没有也不会有漏洞他们正在扫描的框架。如果您担心日志记录完全丢失(也许他们提供的证据表明谁对不同的攻击负责,或者攻击何时开始等),那么只需在短时间内限制来自给定 IP 的垃圾 URL 的多个日志条目应该工作得更好。
答案3
在 httpd 配置目录之一中找到 phpMyAdmin.conf,并添加deny 73.199.136.112
配置文件的允许/拒绝部分以及 2.4 部分中的需要 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>