Каждый день на все сайты в интернете заходит большое кол-во ботов, начиная с тех которые нам важны (например yandex, google и т.д.) и заканчивая потенциально несущими угрозу. Проанализировав лог веб сервера Вы увидите подозрительные события. В данный момент все больше развиваются типы взломов использующие социальную инженерию (взлом не самого софта, а нахождения недочетов) оставленных самим разработчиком, администратором. Сегодня мы расскажем как блокировать ботов, которые осуществляют поиск резервных копий, и установленный phpmyadmin. Для блокировки таких ботов мы будем использовать Fail2Ban, фильтр и правило (джейл). Работа проводилась на Centos 7.
Боты поиска резервных копий
Бот ищет резервные копии оставленные в виде архива, перебирая от корня до разных типичных папок. В случае нахождения скорее всего передаст информацию своему владельцу, а ведь копии содержат файлы и базу данных, позволяет получить доступ к сайту. Такие копии часто забывают удалить после переноса сайта с одного сервера или хостинга на другой.
Добавим фильтр
backup-scan.local
[Definition]
failregex = ^ - - .*./(backup.tgz|backup.zip|backup.tar) HTTP/1.0" 404|301 ignoreregex =
Добавим правило:
[backup-scan]
enabled = true
filter = backup-scan
action = iptables-multiport[chain="INPUT", name="backup-scan", port="http,https", protocol="tcp", blocktype="REJECT --reject-with icmp-port-unreachable"]
sendmail[dest="admin-mail@domain.tld", sender="fail2ban", sendername="Fail2Ban", name="backup-scan"]
logpath = /var/www/vhosts/system/*/logs/accesslog
maxretry = 5
Количество попыток можно уменьшить, что существенно увеличит чувствительность и снизит нагрузку на веб службу. Мы рекомендуем владельцам сайтов удалить все резервные копии в виде архивов со своих серверов. Боты также ищут архивы с именем домена и т.д., тут мы привели базовые правила.
Боты поиска phpMyAdmin, руткитов, бэкдоров
Данные боты осуществляют поиск установленного phpMyAdmin с целью дальнейшего поиска в нем уязвимостей и взлома, атак подбора паролей. Инструмент работы с базой phpMyAdmin является очень популярным и периодически подвергается взлому, в зависимости от установленной версии, настроек.
Добавим фильтр:
phpmyadmin.local
[Definition]
failregex = ^ - - ../(phpmyadm1n|mysqladmin)/index.php
^ - - ../(pma.php|pmd_online.php|db_pma.php) HTTP/1.0" (404|301|200)
ignoreregex =
В фильтре мы указали сразу 2 условия, второе будет блокировать боты, которые ищут на ранее взломанных сайтах размещенные скрипты доступа, оставленные злоумышленниками. (рукткиты, бекдоры)
Добавим правило:
[phpmyadmin-scan]
enabled = true
filter = phpmyadmin
action = iptables-multiport[chain="INPUT", name="phpmyadmin", port="http,https", protocol="tcp", blocktype="REJECT --reject-with icmp-port-unreachable"]
sendmail[dest="admin-mail@domain.tld", sender="fail2ban", sendername="Fail2Ban", name="phpmyadmin-scan"]
logpath = /var/www/vhosts/system/*/logs/accesslog
maxretry = 5
Не забудьте поменять email в настройках на свой, на него будут приходить уведомления о блокировках с указанием правила, ip адреса. Путь к файлу лога тоже необходимо проверить и указать свой. В нашем случае обрабатываются несколько лог файлов расположенных на одном уровне вложенности, но в разных папках. При необходимости можно задать несколько лог файлов. Мы рекомендуем после работы с phpMyAdmin снимать права чтения чтобы он был недоступен, при частом использовании можно добавить защиту на уровне веб сервера с помощью запароленных папок в htaccass и htpasswd.