Блокируем потенциально опасные ip-адреса. Версия 2.0

Паранойя для системного администратора является нормальным явлением. Все потенциальные риски рано или поздно срабатывают, последний взлом сайта OpenSSL является тому хорошим подтверждением и, наверное, первым официальным взломом виртуальной машины через уязвимость гипервизора.

Я уже описывал вариант блокирования потенциально опасных ip-адресов, сегодня я хочу предложить еще один вариант, с использованием провайдера списка потенциально опасных ip-адресов OpenBL.org. Для сбора информации OpenBL.org использует сеть собственных серверов (в основном виртуальных), которые выступают в качестве приманок и фиксируют атаки типа подбора пароля или сканирования на известные уязвимости популярных веб-приложений (phpMyAdmin, WordPress, phpBB и т.д.).

Для блокировки можно использовать null route (backhole) или iptables. Второй вариант дает возможность посмотреть статистику, а в совокупности с ipset обеспечивает приемлемую производительность.

Потребуется создать таблицу ipset:

ipset create openbl hash:ip hashsize 4096 family inet

И соответствующие правила iptables:

iptables -N openbl
iptables -I INPUT -p tcp -m set --match-set openbl src -m multiport 
 --dports 21,22,23,25,80,110,143,443,587,993,995 -j openbl
iptables -A openbl -j DROP

Полную версию скрипта я здесь приводить не буду, ее можно скачать по ссылке: openbl.sh.gz

Статистика после суток использования выглядит следующим образом:

-bash-4.1$ iptables -nv -L openbl
Chain openbl (1 references)
 pkts bytes target     prot opt in     out     source               destination
   78  3296 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0

Для того чтобы скрипт создал таблицу ipset и правила iptables достаточно запустить его с аргументом «start»:

-bash-4.1$ ./openbl.sh start

Так же можно добавить обновление списка ip-адресов в cron:

5       *       *       *       *       openbl.sh update