Мы узнаем, как мы можем блокировать трафик исходящий от конкретных IP-адресов стран с помощью базы данных GeoIP и Linux IPTables. Iptables является командой на основе утилиты для настройки ядра брандмауэра Линукса, который реализуется в рамках проекта Netfilter. В то время как GeoIP представляет собой набор IP-адресов, соответствующих географическим местам, где географическое положение сопоставляется с IP-адресами, выделяемых на тех конкретной организации, городов, областей и страны. Географические координаты в базе данных GeoIP часто находятся вблизи центра населения, поэтому их не следует использовать для определения конкретного адреса или домохозяйства. С помощью модуля под названием xt_geoip, состоящий из расширения Iptables 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
Система RedHat, основанная (CentOS, RHEL, Fedora)
# yum update # yum install gcc-c++ make automake kernel-devel-`uname -r` wget unzip iptables-devel perl-Text-CSV_XS
После того, как наша система будет модернизирована и будут установлены все зависимости, мы установим xtables-addons в нашей машине. Для этого мы скачаем последний tar-архив с официального сайта проекта 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)
Поскольку дистрибутивы на основе 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
Далее, мы запустим модуль под названием xt_geoip , который поставляется с расширением Xtables-addons, который загружает базу данных GeoIP из MaxMind и преобразует его в двоичную форму, признанной в xt_geoip. После того, как он будет загружен, мы создадим его и переместим их к нужному в xt_geoip пути, т.е. /usr/share/xt_geoip/.
# cd geoip # ./xt_geoip_dl # ./xt_geoip_build GeoIPCountryWhois.csv # mkdir -p /usr/share/xt_geoip/ # cp -r {BE,LE} /usr/share/xt_geoip/
Если все прошло, как и следовало ожидать, мы должны в состоянии использовать на нашем брандмауэре утилиты программы IPTables, чтобы использовать модуль GeoIP.
Использование Iptables
Вот основной синтаксис для использования IPTables с модулем GeoIP для того, чтобы блокировать трафик, исходящий из или предназначенных для страны. Здесь мы должны использовать двух-буквенный код ISO3166 вместо страны, например, RU для России, IE для Ирландии, IN для Индии, CN для Китая и так далее.
# iptables -m geoip --src-cc country[,country...] --dst-cc country[,country...]
# iptables -I INPUT -m geoip --src-cc IN,US -j DROP
# iptables -I INPUT -m geoip ! --src-cc RU -j DROP
root@destroyer:~# ping 213.159.209.228 PING 213.159.209.228 (213.159.209.228) 56(84) bytes of data.
# 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 RU -j DROP # firewall-cmd --direct --add-rule ipv4 filter OUTPUT 0 -m geoip --dst-cc IN -j DROP
Iptables с модулем GeoIP является очень важным для предотвращения DOS, DDOS атаки, исходящие из некоторых стран. Это также очень эффективно, если вы хотите ограничить доступ к вашему веб-сайту/серверу из определенной страны. Таким образом, имея модуль GeoIP установленный с Iptables-addons является обязательным иметь установку для разрешения или запрета определенных стран. Итак, если у вас есть какие-либо вопросы, предложения, обратная связь, пожалуйста, напишите их в поле для комментариев ниже. Спасибо ! Удачи вам 🙂
Установил xtables, базы geoip, делаю, например так: iptables -I INPUT -m geoip ! —src-cc RU -j DROP и получаю блокировку всего трафика вообще.
Если же делаю так: iptables -I INPUT -m geoip —src-cc RU -j DROP, то весь трафик ходит без ограничений.
Debian 7. xtables-addons-common 1.42-2, устанавливал из main
Чяднт?