IPTABLES. Блокировка по GeoIP

Материал из megapuper
Перейти к: навигация, поиск

Задача заблокировать IP-адреса из Вьетнама, Китая и Индии используя Iptables Geoip Addons

С помощью модуля под названием xt_geoip, состоящего из расширения xtables-addon и базы данных GeoIP, будем выполнять фильтрацию трафика на уровне страны.


Устанавливаем нужные пакеты

apt install xtables-addons-common libtext-csv-xs-perl pkg-config libxtables-dev libip6tc-dev libip4tc-dev


Загружаем и устанавливаем Xtables-addons

wget http://downloads.sourceforge.net/project/xtables-addons/Xtables-addons/xtables-addons-3.23.tar.xz
tar xf xtables-addons-3.23.tar.xz
cd xtables-addons-3.23
./configure
make
make install


Установка базы данных GeoIP
Затем мы запускаем модуль с именем xt_geoip, который поставляется с расширением xtables-addons, которое загружает базу данных GeoIP из MaxMind и преобразует ее в двоичную форму, распознаваемую xt_geoip. Как только он будет загружен, собираем его и копируем всё в /usr/share/xt_geoip

cd geoip
./xt_geoip_dl
./xt_geoip_build GeoIPCountryWhois.csv
mkdir -p /usr/share/xt_geoip/
cp * /usr/share/xt_geoip/


Блокируем трафик в страну или из нее

iptables -I INPUT/-A OUTPUT-m geoip --src-cc страна [, страна ...] --dst-cc страна [, страна ...] -j DROP


Блокируем входящий трафик из Китая, Индии, Вьетнама

iptables -I INPUT -m geoip --src-cc CN,IN,VN -j DROP


Блокируем весь входящий не российский траффик

iptables -I INPUT -m geoip ! --src-cc RU -j DROP


Блокируем весь исходящий траффик в Индию

iptables -A OUTPUT -m geoip -dst-cc IN -j DROP


Немножко про firewalld
Если мы запускаем систему на базе systemd, и у нас есть firewalld в качестве внешнего контроллера для iptables, также можем использовать firewalld для вышеуказанного задания соответственно

firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -m geoip --src-cc CN,IN,VN -j DROP
firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -m geoip ! --src-cc RU -j DROP
firewall-cmd --direct --add-rule ipv4 filter OUTPUT 0 -m geoip --dst-cc IN -j DROP