如何防止单个 IP 同时连接?

如何防止单个 IP 同时连接?

我在 digital ocean droplet 上运行一个 Wordpress 网站,droplet 运行的是带有 CWP 的 CentOS。网站是新网站,因此真实流量非常低,平均每天只有 3-5 位访客。然而,该网站自过去几周以来一直受到攻击。

我几乎每天都会收到服务发送的邮件通知lfd,内容是“用户 XYZ 下运行的进程过多”。紧接着是第二封邮件,标题是“5 分钟平均负载过高警报”。

第一封电子邮件的示例行: (上次通知电子邮件大约有143带状态的进程计数没有被杀死

User:XYZ PID:29096 PPID:26959 Run Time:58(secs) Memory:230140(kb) RSS:10104(kb) exe:/usr/local/bin/php-cgi cmd:/usr/local/bin/php-cgi /home/XYZ/public_html/wp-login.php

第二电子邮件包含不同命令的输出ps.txt,,,vnstat.txtnetstat.txtapachestatus.html

在上一封通知邮件中,除 外,所有文件均有错误apachestatus.html。错误消息为“无法在 10 秒内获取 SERVICE_NAME 输出 - 超时”。

apachestatus文件中,我可以看到243空闲线程wp-login.php来自单一 IP

我的问题是:

  1. 断开空闲连接的默认时间是多少?
  2. 有没有办法比这更快地断开空闲连接?(也许默认时间很好,但在我的例子中它仍然会引起问题,所以我想进一步减少它)
  3. 如何限制来自特定 IP 的同时请求?(将开放连接限制为 10 个或 20 个)
  4. 处理此问题并保护服务器免受此类攻击的最佳方法是什么?(任何相关工具或技术)

答案1

以下实际上只是对您的 Fail2Ban 评论/问题的回答 - 我无法以评论的形式提供足够深入的回答。

要使用 fail2ban,需要的不仅仅是基本选项。这是我的“秘诀”

Apache-wplogin.conf:

# Fail2Ban configuration file
#
# Author: Tim Connors
# Tweeked by David Go
#

[Definition]

# Option:  failregex
# Notes.:  Regexp to catch Apache dictionary attacks on Wrodpress wp-login
# Values:  TEXT
#
#failregex = <HOST>.*] "POST /wp-login.php


#failregex = :80 <HOST> -.*"(GET|POST).*/wp-login.php
#            :443 <HOST> -.*"(GET|POST).*/wp-login.php

failregex = :80 <HOST> -.*(GET|POST).*/wp-login.php.*(HTTP)
            :443 <HOST> -.*(GET|POST).*/wp-login.php.*(HTTP)

apache-wpxmlrpc.conf

[Definition]

# Option:  failregex
# Notes.:  Regexp to catch xmlrpc attacks on Wordpress
# Values:  TEXT
#

 failregex = :80 <HOST>\ -.*(GET|POST).*/xmlrpc\.php.*(HTTP)
            :443 <HOST>\ -.*(GET|POST).*/xmlrpc\.php.*(HTTP)

jail.local 中针对上述内容添加以下行:

# Short term lockout for Wordpress Brute Force
[apache-wplogin]
logpath = /var/log/apache2/other_vhosts_access.log
maxretry = 8
bantime = 300
findtime = 300
enabled = true

请注意,我的 Apache 正在从外部 VirtualHost 指令以“组合”格式登录 - 我有配置行:

# Define an access log for VirtualHosts that don't define their own logfile

LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined    
CustomLog ${APACHE_LOG_DIR}/other_vhosts_access.log vhost_combined

相关内容