Использование связки iptables - geoip

Модуль geoip, не входит в список стандартных модулей iptables, его нужно установить вместе с остальными дополнительными модулями фаервола.
root@vmstat:# apt-get install xtables-addons-common
если сейчас попытаться добавить блокирующее правило в iptables, получим такой выхлоп:
root@vmstat:# iptables -I INPUT ! -i lo -p tcp --dport 80 -m geoip --src-cc US -j DROP
Could not open /usr/share/xt_geoip/LE/US.iv4: No such file or directory
это говорит о том, что базы с диапазонами IP адресов стран отсутствуют. Что-бы исправить данный косяк, нужно скачать базы и приготовить их для использования в iptables geoip. Для этого вместе с модулями, в папку /usr/lib/xtables-addons, были установлены 2 perl скрипта, один для скачивания, второй для сборки geoip баз, но что-бы второй скрипт отработал нормально, необходимо доставить в систему perl модуль libtext-csv-xs-perl, что мы и делаем:
root@vmstat:# apt-get install libtext-csv-xs-perl
создаем папку для geoip баз:
root@vmstat:# mkdir /usr/share/xt_geoip
что-бы слить базы на сервер, достаточно запустить один из perl скриптов:
root@vmstat:# cd /usr/lib/xtables-addons
root@vmstat:/usr/lib/xtables-addons# ./xt_geoip_dl
ну и собственно собираем, указав в качестве папки назначения /usr/share/xt_geoip, а в качестве источника все csv файлы в текущей папке
root@vmstat:/usr/lib/xtables-addons# ./xt_geoip_build -D /usr/share/xt_geoip *.csv
вновь пробуем добавить правило
root@vmstat:# iptables -I INPUT ! -i lo -p tcp --dport 80 -m geoip --src-cc US -j DROP
если ошибка не вылезла, значит все хорошо. В данном случае будут заблокированы все пакеты приходящие из США на любой сетевой интерфейс кроме локального, на порт 80. Обратите особое внимание на то, что команда iptables -I вставит правило самым первым в цепочку INPUT, поэтому сначала проанализируйте уже имеющиеся правила и подумайте куда конкретно разместить блокировку по geoip ( я бы создал отдельную цепочку для размещения в ней блокировок по geoip признаку ). В целом структура правил полностью соответствует остальным правилам iptables, например такой вариант ( ! --src-cc US ):
root@vmstat:# iptables -I INPUT ! -i lo -p tcp --dport 80 -m geoip ! --src-cc US -j DROP
заблокирует все страны кроме(!) США. Что-бы проверить работоспособность модуля, забаньте свою страну например на 80-м порту и попробуйте открыть сайт размещенный на вашем сервере, если ничего не открылось, блокировка работает исправно ). Удачи

Комментарии

похоже что баз нету больше по тому адресу что проверяет скрипт

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
Регистр имеет значение
   .oooooo.       oooooo     oooo               ooooooooo.          .o8       .   
d8P' `Y8b `888. .8' `888 `Y88. "888 .o8
888 888 `888. .8' ooo. .oo. 888 .d88' .oooo888 .o888oo
888 888 `888. .8' `888P"Y88b 888ooo88P' d88' `888 888
888 888 `888.8' 888 888 888`88b. 888 888 888
`88b d88b `888' 888 888 888 `88b. 888 888 888 .
`Y8bood8P'Ybd' `8' o888o o888o o888o o888o `Y8bod88P" "888"


Введите код, изображенный в стиле ASCII-арт.