воскресенье, 17 апреля 2016 г.

iptables + geoip, или баним по странам.



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


Итак, начнём с установки. Выполняется она командой:

sudo aptitude install xtables-addons-common

При этом произойдет загрузка пакета с исходниками модулей и их сборка. Возможно, что придется доустановить пакеты "linux-headers" и "build-essential".

После установки пользоваться новыми модулями всё еще нельзя, потому что самбой базы GeoIP еще нет, но в пакете есть скрипты, с помощью которых базу можно создать. Для работы скриптов надо доустановить необходимые пакеты:

sudo aptitude install libtext-csv-xs-perl libxml-csv-perl libtext-csv-perl unzip

Сначала создадим каталог под новую базу:

sudo mkdir -p /usr/share/xt_geoip/

Теперь нужно создать временный каталог, чтобы не мусорить, и скачать в него базу:

mkdir geoiptmp
cd geoiptmp
/usr/lib/xtables-addons/xt_geoip_dl

Затем надо преобразовать базу в понятный для модуля формат:

sudo /usr/lib/xtables-addons/xt_geoip_build GeoIPv6.csv GeoIPCountryWhois.csv -D /usr/share/xt_geoip

На этом временный каталог можно удалить.

Примеры использования есть в посте по ссылке.