Вопрос или проблема
Поскольку мой хост и я находимся в тупике, я решил обратиться за небольшим помощником. Я пытаюсь разобраться в этом и не знаю, как дальше поступать.
У меня есть VPS-аккаунт, на котором я размещаю несколько сайтов WP для клиентов. Информация о сервере: Nginx (1.17.0) – Apache (2.4.39) на CentOS 7.6.
Недавно прочитав о преимуществах fail2ban, я решил попробовать его (то есть f2b с плагином WP). Я попросил хостинг-компанию установить f2b, и они сделали это пару дней назад. К сожалению, мне не удалось запустить его, и они не хотят помогать, если я не заплачу им.
Они установили версию 0.9.7, хотя текущая версия, похоже, 0.10.4. Я следовал инструкциям из следующих руководств и документов:
– https://www.digitalocean.com/community/tutorials/how-to-protect-ssh-with-fail2ban-on-centos-7
– https://www.howtoforge.com/tutorial/how-to-install-fail2ban-on-centos/
– https://docs.wp-fail2ban.com/en/4.2/introduction.html
Я установил плагин и выполнил следующее:
-
подтвердил, что /wp-content/plugins/wp-fail2ban/filters.d/ содержал wordpress-hard.conf, wordpress-soft.conf и wordpress-extra.conf (как указано в документации)
-
sudo systemctl enable fail2ban
= без ошибок -
Я создал файл jail.local и вставил следующий код:
[DEFAULT]
## блокировать хосты на один час:
bantime = 3600
## переопределить /etc/fail2ban/jail.d/00-firewalld.conf:
banaction = iptables-multiport
[sshd]
enabled = true
[wordpress-hard]
enabled = true
filter = wordpress-hard
logpath = /var/log/auth.log
maxretry = 1
port = http,https
[wordpress-soft]
enabled = true
filter = wordpress-soft
logpath = /var/log/auth.log
maxretry = 3
port = http,https
– вышел из nano и сохранил
-
sudo systemctl restart fail2ban
привел к следующему:
Работа fail2ban.service завершилась неудачей, потому что управляющий процесс завершился с кодом ошибки. См. “systemctl status fail2ban.service” и “journalctl -xe” для подробностей.
-
systemctl status fail2ban.service
вывел:
fail2ban.service – Служба Fail2Ban Загружено: загружено (/usr/lib/systemd/system/fail2ban.service; включено; предустановка поставщика: отключена)
Активно: ошибочно (Результат: лимит запуска) с понедельника, 2019-08-05 14:52:20 EDT; 1 мин 4 с назад Документы: man:fail2ban(1)
Процесс: 12326 ExecStart=/usr/bin/fail2ban-client -x start (код=вышел, статус=255)
Основной PID: 9099 (код=вышел, статус=0/УСПЕХ)
sudo fail2ban-client status
вывел:
ОШИБКА Не удалось получить доступ к пути сокета: /var/run/fail2ban/fail2ban.sock. Запускается ли fail2ban?
-
После того как я это увидел, я искал /var/run/fail2ban/fail2ban.sock. Файл отсутствует/не существует/не найден.
-
journalctl -u fail2ban.service
выдал:
fail2ban-client[10992]: ОШИБКА Ошибки в тюрьме ‘wordpress-hard’. Пропускаем…
fail2ban-client[10992]: ОШИБКА Не найдены доступные конфигурационные файлы для ‘filter.d/wo
fail2ban-client[10992]: ОШИБКА Нет раздела: ‘Определение’
fail2ban-client[10992]: ОШИБКА Нет раздела: ‘Определение’
fail2ban-client[10992]: ОШИБКА Невозможно прочитать фильтр
И вот где я нахожусь. Я что-то сделал не так? Они что-то сделали не так? Как это исправить? Спасибо и извините за длину.
Вы забыли скопировать конфигурацию в /etc/fail2ban/filter.d/
Например
sudo cp /var/www/html/wp-content/plugins/wp-fail2ban/filters.d/wordpress-hard.conf /etc/fail2ban/filter.d/
Также не забудьте скопировать wordpress-soft.conf
в директорию filters.d
.
Ответ или решение
Чтобы решить вашу проблему с запуском Fail2Ban на сервере Nginx и Apache, давайте рассмотрим несколько ключевых шагов.
-
Проверка конфигурации фильтров: Судя по последним сообщениям об ошибках, Fail2Ban не может найти фильтры для ваших настроек jail. Убедитесь, что фильтры
wordpress-hard.conf
,wordpress-soft.conf
и, если необходимо, другие конфигурационные файлы скопированы в каталог/etc/fail2ban/filter.d/
. Это можно сделать с помощью следующих команд:sudo cp /var/www/html/wp-content/plugins/wp-fail2ban/filters.d/wordpress-hard.conf /etc/fail2ban/filter.d/ sudo cp /var/www/html/wp-content/plugins/wp-fail2ban/filters.d/wordpress-soft.conf /etc/fail2ban/filter.d/
-
Проверка конфигурационного файла jail: В вашем файле
jail.local
вы указали, что журнал для фильтров находится в/var/log/auth.log
. Однако для WordPress этот путь может быть неверен. Обычно логи для Nginx находятся в/var/log/nginx/access.log
и/var/log/nginx/error.log
, а для Apache – в/var/log/httpd/access_log
и/var/log/httpd/error_log
. Измените путь к журналу на правильный. Например:logpath = /var/log/nginx/access.log
или
logpath = /var/log/httpd/access_log
-
Перезапуск Fail2Ban: После внесения изменений необходимо перезапустить Fail2Ban и проверить статус для выявления возможных ошибок:
sudo systemctl restart fail2ban sudo systemctl status fail2ban
-
Проверка наличия файла сокета: Убедитесь, что файл сокета
/var/run/fail2ban/fail2ban.sock
создаётся при запуске Fail2Ban. Если его нет, возможно, Fail2Ban по-прежнему не может найти конфигурацию фильтров. -
Логи для диагностики: Если Fail2Ban всё еще не запускается, просмотрите журналы с помощью следующей команды для дополнительных ошибок:
journalctl -u fail2ban.service
Это поможет выявить, какие именно ошибки возникают при попытке запустить службу.
-
Права доступа: Проверьте, имеют ли процессы Fail2Ban достаточные права доступа к лог-файлам, которые вы указали в
jail.local
.
После выполнения всех вышеперечисленных шагов Fail2Ban должен успешно запуститься и начать работать с вашими настройками для защиты WordPress. Если проблемы сохраняются, пожалуйста, предоставьте дополнительные логи и сообщения об ошибках для более детального анализа.