嗨,我正在AWS服务器上运行wordpress。并且此服务器被来自某些 IP 地址的持续请求淹没。如何阻止它们?
80.82.78.112 - - [16/Mar/2015:15:29:58 +0000] "POST /xmlrpc.php HTTP/1.0" 200 595 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"
每秒我都会收到来自同一 IP 地址的大约 30-40 个请求。这正在减慢我的服务器速度。
希望这些信息对未来的Google员工有所帮助,我想通过配置步骤扩展Diego的建议,这些步骤使我在EC2服务器上使用fail2ban进入工作状态。
环境:
- Amazon Linux AMI 发布 2017.09
- 阿帕奇 2.4.27
1. 为 Amazon Linux 安装并配置正确版本的 fail2ban
按照使用 fail2ban 保护 Amazon Linux WordPress 服务器中的建议,安装 Amazon 兼容版本:
yum --disablerepo epel install fail2ban
2. 配置 jail.local 和 wordpress.conf
此配置适用于HTTPS和HTTP,并可防止wp-login和xml-rpc攻击。
创建 jail.local:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
编辑/etc/fail2ban/jail.local (在底部添加):
[wordpress]
enabled = true
port = http,https
action = iptables-multiport[name="wordpress", port="http,https", protocol="tcp"]
# Uncomment if you want emails when someone is banned:
# sendmail-whois[name=fail2ban-wp-bruteforce, dest="your-email@yourdomain.com"]
filter = wordpress
logpath = /var/log/httpd/*access_log
maxretry = 5
创建和编辑/etc/fail2ban/filter.d/wordpress.conf:
[Definition]
failregex = ^<HOST> - - .* "POST .*(wp-login.php|xmlrpc.php) HTTP/.*" (200|401|403)
failregex = ^<HOST> - - .* "GET .*(wp-login.php|xmlrpc.php) HTTP/.*" (200|401|403)
ignoreregex =
注意:我正在使用 .htaccess 规则为来自非白名单 IP 的任何wp-admin/*
资源返回 403(如如何使用 .htaccess 规则锁定 WordPress 管理员登录的步骤 7 中所述)。如果您不喜欢,则可以安全地从正则表达式中删除|403
。
相关说明:"记分牌已满"错误可能表示 DDoS 攻击
DDoS 攻击的另一个症状可能是/var/log/httpd/error_log
和/或var/log/httpd/ssl_error_log
中的大量错误
[Sun Apr 15 09:10:47.038565 2018] [mpm_worker:error] [pid 2847:tid 140053879679040] AH00288: scoreboard is full, not at MaxRequestWorkers
这让我开始了一场野鹅追逐,直到我将上述错误与这个问题中讨论的access_log
错误联系起来;认为值得一提。
您可以使用 fail2ban 来阻止有问题的 IP。WP是一种广泛使用的CMS,是攻击的目标,但互联网上也充满了与之作斗争的人的资源。
使用 fail2ban在 Wordpress 中阻止 xmlrpc 请求记录如下:使用 fail2ban 对抗 WordPress XML-RPC 攻击