Как я могу предотвратить одновременные подключения с одного IP-адреса?

Я запускаю сайт Wordpress на цифровой капле океана, и капля работает под управлением CentOS с CWP. Веб-сайт новый, поэтому у него очень мало реального трафика, в среднем около 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 . Сообщение об ошибке: «Невозможно получить вывод SERVICE_NAME в течение 10 секунд - истекло время ожидания».

В файле apachestatus я вижу 243 незанятых потоков на wp -login.php из одиночного IP .

Мои вопросы:

  1. В какое время по умолчанию разрываются неактивные соединения?
  2. Есть ли способ сбросить неактивные соединения быстрее этого? (возможно, время по умолчанию хорошее, но в моем случае это все еще вызывает проблемы, поэтому я хочу еще больше уменьшить его)
  3. Как я могу ограничить одновременные запросы с определенного IP? (чтобы ограничить лимит открытых соединений 10 или, возможно, 20)
  4. Как лучше всего справиться с этим и защитить сервер от атак такого типа? (любой соответствующий инструмент или метод)
0
задан 2 June 2020 в 08:22
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 регистрируется в «комбинированном» режиме. format извне директив 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
0
ответ дан 2 June 2020 в 10:11

Теги

Похожие вопросы