Monit является отличным инструментом для WordPress, который будет контролировать ваши основные услуги, такие как nginx, MariaDB (MySQL), php5-fpm, Varnish, Redis, memcached и в основном все работает на вашем VPS или выделенном сервере. Monit позволяет вести белый список, так что только определенным IP – адресам или динамическим адресам разрешен доступ к веб – интерфейсу Monit. Если вы хотите получить доступ к Monit с других компьютеров и не хотите, чтобы эти IP – адреса были в белом списке, вы можете использовать fail2ban чтобы блокировать попытки грубой силы атаки пользователей.
Если вы хотите иметь возможность получить информацию о доступе с любого компьютера, то вы можете проверить ваш журнал Monit (/var/log/monit.log
)
cat /var/log/monit.log
Неудачные попытки входа будут выглядеть следующим образом
Warning: Client '192.168.55.2' supplied unknown user 'destroyer' accessing monit httpd
Warning: Client '192.168.55.2' supplied wrong password for user 'andreyex' accessing monit httpd
Обновите свои репозитории и установите fail2ban
sudo apt-get update
sudo apt-get install fail2ban -y
Создание фильтра Monit
sudo nano /etc/fail2ban/filter.d/monit-auth.conf
Monit и регулярное выражение fail2ban отрабатывают, когда совпадают оба неудачных попыток входа: неправильные пароли и неизвестные пользователи.
[Definition]
failregex = Warning\: Client '<HOST>' supplied.* accessing monit httpd
Теперь вам нужно воспроизвести несколько неудачных попыток входа для файла журнала Monit. Введите правильное имя пользователя, но неверный пароль и ошибочное имя пользователя и правильный пароль.
Вы можете проверить фильтр регулярных выражений Fail2ban, созданный с помощью этой команды
fail2ban-regex /var/log/monit.log /etc/fail2ban/filter.d/monit-auth.conf
Вы получите хороший маленький отчет
Запуск теста
=============
Use failregex file : /etc/fail2ban/filter.d/monit-auth.conf
Use log file : /var/log/monit.log
Результаты
=======
Failregex: 19 total
|- #) [# of hits] regular expression
| 1) [19] Warning\: Client '<HOST>' supplied.* accessing monit httpd
`-
Ignoreregex: 0 total
Date template hits:
|- [# of hits] date format
| [74] WEEKDAY MONTH Day Hour:Minute:Second
`-
Lines: 74 lines, 0 ignored, 19 matched, 55 missed
Создайте папку jail Fail2ban в случае, если она не существует
sudo mkdir -p /etc/fail2ban/jail.d
Создайте конфигурацию Fail2ban jail для Monit.
sudo nano /etc/fail2ban/jail.d/monit-auth.conf
Вставьте этот фильтр Monit Fail2ban jail, который отслеживает файл журнала Monit и запрещает пользователям на порту 2812, если есть 3 неудачных попыток входа в систему. Пользователям включается запрет в течение 60 секунд, которые Вы можете увеличить.
[monit-auth]
enabled = true
filter = monit-auth
port = 2812
logpath = /var/log/monit*.log
bantime = 60
maxretry = 3
Теперь вы можете перезапустить fail2ban
sudo service fail2ban restart
Теперь защита Monit от перебора настроена и включена с помощью fail2ban.
Вы можете просмотреть текущие IP-адреса, запрещенные Fail2ban с помощью этой команды
sudo fail2ban-client status monit-auth
Вы получите такой вывод
Status for the jail: monit-auth
|- filter
| |- File list: /var/log/monit.log
| |- Currently failed: 0
| `- Total failed: 3
`- action
|- Currently banned: 1
| `- IP list: 192.168.60.1
`- Total banned: 1