AWS 请求过多,阻止 IP 地址



嗨,我正在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.localwordpress.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 攻击

最新更新