3Мы узнаем, как мы можем заблокировать трафик, полученный из IP-адресов конкретной страны, используя базу данных GeoIP и linux iptables.
Iptables – это утилита командной строки для настройки брандмауэра ядра Linux, который реализован в проекте Netfilter.
В то время как GeoIP представляет собой набор IP-адресов, соответствующих географическим местоположениям, где географическое местоположение сопоставляется с IP-адресами, выделенными в этой конкретной организации, городе, штате и странах.
Географические координаты в базе данных GeoIP часто находятся вблизи центра населения, поэтому его нельзя использовать для идентификации конкретного адреса или домашнего субъекта.
И с помощью модуля под названием xt_geoip, состоящего из расширения xtables-addon и базы данных GeoIP, мы будем выполнять фильтрацию трафика на уровне страны, которая помогает нам блокировать или разрешать трафик из определенной страны.
Обновление и установка зависимостей
Прежде всего, нам нужно будет обновить нашу Linux-систему, а затем мы перейдем к установке зависимостей, необходимых для xtables-addons.
Чтобы сделать это, мы выполним следующие команды, соответствующие дистрибутивам, запущенным на нашей машине.
Система на базе Debian (Debian, Ubuntu, Linux Mint)
# apt-get update && apt-get upgrade # apt-get install iptables-dev xtables-addons-common libtext-csv-xs-perl pkg-config
Установка Xtables-addons
После обновления нашей системы и установки зависимостей мы установим xtables-addons на нашем компьютере.
Для этого мы загрузим последний архив с официального сайта проекта xtables-addons с помощью wget.
Как только он будет загружен, мы извлечем архив, затем скомпилируем и установим его на нашем компьютере.
# wget http://downloads.sourceforge.net/project/xtables-addons/Xtables-addons/xtables-addons-2.13.tar.xz # tar xf xtables-addons-2.13.tar.xz # cd xtables-addons-2.13 # ./configure # make # make install
Разрешить SeLinux загружать модули (система на основе RedHat)
Как и дистрибутивы Linux, основанные на RedHat, т.е. CentOS, RHEL, Fedora по умолчанию отключила selinux, нам необходимо настроить политику selinux следующим образом. В противном случае SeLinux не позволит iptables загружать модуль xt_geoip.
# chcon -vR --user = system_u / lib / modules / $ (uname -r) / extra / *. ko # chcon -vR --type = lib_t /lib64/xtables/*.so
Установка базы данных GeoIP
Блокировать трафик в страну и из нее
Если все пойдет так, как ожидалось, теперь мы сможем использовать программу iptables для межсетевых экранов для использования модуля geoip.Использование IptablesВот основной синтаксис для использования iptables с модулем geoip, чтобы блокировать трафик, исходящий из страны или предназначенный для нее. Здесь нам нужно использовать двухбуквенный код ISO3166 вместо страны, например, US для США, IE для Ирландии, IN для Индии, CN для Китая и так далее.
# iptables -m geoip --src-cc страна [, страна ...] --dst-cc страна [, страна ...]
Теперь, если мы хотим заблокировать входящий трафик из Индии (IN) и Соединенных Штатов (США), следует выполнить следующую команду iptables.
# iptables -I INPUT -m geoip --src-cc IN, US -j DROP
Если мы хотим заблокировать весь входящий неамериканский трафик на нашем сервере, нам нужно выполнить следующее.
# iptables -I INPUT -m geoip ! --src-cc US -j DROP
Если мы хотим заблокировать исходящий трафик, предназначенный для Индии (IN), нам нужно запустить следующую команду.
# 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 IN, UN -j DROP # firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -m geoip! --src-cc US -j DROP # firewall-cmd --direct --add-rule ipv4 filter OUTPUT 0 -m geoip --dst-cc IN -j DROP