Поиск по сайту:
Одиночество — порой лучшее общество (Дж. Мильтон).

Как блокировать IP-адреса из стран с помощью дополнения Geoip в Iptables

08.10.2017
Как блокировать IP-адреса из стран с помощью дополнения Iptables Geoip

Мы узнаем, как мы можем блокировать трафик исходящий от конкретных 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

После того, как наша система будет модернизирована и будут установлены все зависимости, мы установим 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

 

Установка базы данных GeoIP

Далее, мы запустим модуль под названием 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/

Как блокировать IP-адреса из стран с помощью Iptables Geoip Addons

Блокировка трафика из страны

Если все прошло, как и следовало ожидать, мы должны в состоянии использовать на нашем брандмауэре утилиты программы IPTables, чтобы использовать модуль GeoIP.

Использование Iptables

Вот основной синтаксис для использования IPTables с модулем GeoIP для того, чтобы блокировать трафик, исходящий из или предназначенных для страны. Здесь мы должны использовать двух-буквенный код ISO3166 вместо страны, например, RU для России, IE для Ирландии, IN для Индии, CN для Китая и так далее.

# iptables -m geoip --src-cc country[,country...] --dst-cc country[,country...]

 

Теперь, если мы хотим блокировать входящий трафик из Индии (IN) и Соединенных Штатов Америки (US), мы напишем следующую команду для Iptables.
# 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 на время выполнения и не были сохранены, после того мы перезагрузили сервер, мы получили ответы пинга с сервера.
Если мы хотим блокировать исходящий трафик, предназначенный для Индии (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 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 является обязательным иметь установку для разрешения или запрета определенных стран. Итак, если у вас есть какие-либо вопросы, предложения, обратная связь, пожалуйста, напишите их в поле для комментариев ниже. Спасибо ! Удачи вам 🙂

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

1 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Сергей

Установил 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
Чяднт?

Читайте также

Спасибо!

Теперь редакторы в курсе.