Заметил на сервере в логах Jooml’ы неудачные авторизации в файле error.php, Joomla сама рапортует о неудачных попытках в этот файл в моем случае конфигурация сервера была FreeBSD 10 + Nginx+PHP-FPM+MySQL+chroot. Файл error.php лежал по пути /usr/local/www/example.org/log/error.php, на сервере так же установлен bruteblock который служил стражем против брутфорса sshd демона о его настройке говорить не буду статей на просторах инета достаточно, предположим что у Вас он установлен и настроен…
Bruteblock работает с syslog’ом и берет все неудачные попытки авторизации из него же, встал вопрос о перенаправлении вывода из файла error.php в syslog и попалась мне утилитка входящая в состав UNIX систем под названием logger с ее помощью мы перенаправим файл error.php в syslog для этого добавим строчку в cron запускаем «crontab -e» и прописываем:
после этого наш файл error.php будет каждую минуту скидываться в syslog с тегом joomla приоритетом auth.info и обнулятся что бы в следующий раз не импортировать уже существующие записи, теперь в логе /var/log/auth.log должны появляться записи:
Feb 16 18:12:42 example joomla: 2014-02-16 14:12:26 INFO 1.2.3.4 Joomla FAILURE: Username and password do not match or you do not have an account yet. («aaaa»)
Feb 16 18:12:42 example joomla: 2014-02-16 14:12:29 INFO 1.2.3.4 Joomla FAILURE: Username and password do not match or you do not have an account yet. («aaaa»)
Feb 16 18:12:42 example joomla: 2014-02-16 14:12:32 INFO 1.2.3.4 Joomla FAILURE: Username and password do not match or you do not have an account yet. («aaaa»)
Feb 16 18:12:42 example joomla: 2014-02-16 14:12:34 INFO 1.2.3.4 Joomla FAILURE: Empty password not allowed («aaaaa»)
Feb 16 18:12:42 example joomla: 2014-02-16 14:12:37 INFO 1.2.3.4 Joomla FAILURE: Username and password do not match or you do not have an account yet. («aaaaaa»)
Feb 16 18:12:42 example joomla: 2014-02-16 14:12:40 INFO 1.2.3.4 Joomla FAILURE: Username and password do not match or you do not have an account yet. («aaaa»)
OK, идем дальше
теперь создаем конфиг для bruteblock’а /usr/local/etc/bruteblock/joomla.conf с содержимым:
max_count = 4
within_time = 600
reset_ip = 3600
ipfw2_table_no = 1
и добавим в файл /etc/syslog.conf обработчик
перезапускаем syslog
Stopping syslogd.
Waiting for PIDS: 3855.
Starting syslogd.
и наслаждаемся результатом… теперь если кто то попытается ввести неверный логин и пароль 4 раза в течение 10 минут, то он будет полностью отрезан от сервера на один час… посмотреть заблокированные IP адреса можно командой:
1.2.3.4/32 1392563442
4.3.2.1/32 1392563562
1.2.4.3/32 1392564766
очистить список заблокированных:
По аналогии можно реализовать и на других CMS системах
Добавить комментарий