我在 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.txt
netstat.txt
apachestatus.html
在上一封通知邮件中,除 外,所有文件均有错误apachestatus.html
。错误消息为“无法在 10 秒内获取 SERVICE_NAME 输出 - 超时”。
在apachestatus
文件中,我可以看到243空闲线程wp-login.php
来自单一 IP。
我的问题是:
- 断开空闲连接的默认时间是多少?
- 有没有办法比这更快地断开空闲连接?(也许默认时间很好,但在我的例子中它仍然会引起问题,所以我想进一步减少它)
- 如何限制来自特定 IP 的同时请求?(将开放连接限制为 10 个或 20 个)
- 处理此问题并保护服务器免受此类攻击的最佳方法是什么?(任何相关工具或技术)
答案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