Fail2ban to MySQL

Данные понадобились для анализа атак на сервер. Выявления методов, а также атакуемых объектов.

Так же на основе данныых составить карту особо активных хостов. И создать списки для их последующей блоктровки.

На базе веб сервера nginx и php, создаем скрипты
Путь до скриптов
mkdir -p /usr/local/www/fail2sql/www/
cd /usr/local/www/fail2sql/www/

Скачиваем fail2sql и GeoLiteCity
wget -O - http://fail2sql.sourceforge.net/fail2sql-1.0.tar.gz
wget -O - http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz | zcat - > "GeoLiteCity.dat"
tar xvf fail2sql-1.0.tar.gz
rm fail2sql-1.0.tar.gz

Создаем базу MySQL fail2ban

mysql -u root -p

CREATE USER fail2ban@localhost IDENTIFIED BY 'passwort';
GRANT USAGE ON *.* TO fail2ban@localhost IDENTIFIED BY 'passwort';
CREATE DATABASE IF NOT EXISTS fail2ban;
GRANT ALL PRIVILEGES ON fail2ban.* TO fail2ban@localhost;

mysql -u fail2ban -p passwort < fail2ban.sql

Настраиваем fail2ban мы используем ipfw на FreeBSD
Вносим изменения в
fail2ban -> action.d -> bsd-ipfw.local
actionban = ipfw table <table> add <ip> 1
/usr/local/www/fail2sql/www/fail2sql <name> tcp <port> <ip>

Вносим изменения в
fail2ban -> jail.local
Обязательно передаваемые поля name и port
[ssh-ipfw]
enabled = true
filter = sshd
action = bsd-ipfw[localhost=127.0.0.1, table=1, name="ssh", port="ssh" ]
sendmail-whois[name="SSH,IPFW", dest=fail2sql@нашемаил.ru]
logpath = /var/log/auth.log
maxretry = 3
bantime = 28800

Проверяем работу скрипта
/usr/local/www/fail2sql/www/fail2sql test tcp ssh 192.168.0.1

/usr/local/www/fail2sql/www/fail2sql -h Вывод помощи
/usr/local/www/fail2sql/www/fail2sql -l Вывод 50 активных
/usr/local/www/fail2sql/www/fail2sql -c Очистка базы
/usr/local/www/fail2sql/www/fail2sql -u Обновление GeoLiteCity.dat

Итог наполнение базы с названием правил, ip адресом и атакуемым портом. Плюс кол-во атак и приблизительными координатами атакующего хоста.