IPTABLES. Блокировка по GeoIP
Задача заблокировать 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