geoip для iptables
В файерволле под линуксом возможна фильтрация по гео-признаку. Это может быть полезным для блокирования определенных стран или для балансировки запросов на разные бекенды, каждый из которых обрабатывает свой регион.
Теперь WorldIP база есть в формате для модуля geoip из пакета расширений xtables-addons для iptables. Используя этот модуль, можно строить более гибкие правила iptables, основываясь на геоположении IP-адреса.
Теперь WorldIP база есть в формате для модуля geoip из пакета расширений xtables-addons для iptables. Используя этот модуль, можно строить более гибкие правила iptables, основываясь на геоположении IP-адреса.
- Инсталляция xtables-addons:
Стандартный процесс компиляции и установки. Скачать последнюю версию (для iptables >= 1.4.3), распаковать.
Если у Вас более старая версия, например, в Lenny 1.4.2, и Вы не хотите обновлять ее, Вы должны скачать xtables-addons v1.12.
xtables-addons содержит много разных интересных модулей, например, TARPIT. Вы можете выбрать интересующие вас модули в файле "mconfig". Чтобы geoip был включен, в конфиге должно остаться "build_geoip=m"
Поставить необходимые зависимости (для дебиан-основанных):
Затемaptitude -y install iptables-dev linux-headers-`uname -r`
Проверить что всё успешно:./configure --with-xtlibdir=/lib/xtables make make installiptables -m geoip --help - Инсталляция базы для geoip
Уже подготовленную базу можно скачать здесь. База должна находиться в /var/geoip (это зашито в сам модуль). Чтобы база оставалась актуальной, ее можно обновлять по крону, например, раз в месяц. - Примеры
- Разрешаем ssh для своей страны (DE) и страны, где будем проводить отпуск(FR)
iptables -A INPUT -p tcp --dport 22 -m geoip --src-cc DE,FR -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j DROP - Блокируем доступ к фтп-серверу всех с Папуа-Новой Гвинеи(PG)
iptables -A INPUT -p tcp --dport 21 -m geoip --src-cc PG -j DROP iptables -A INPUT -p tcp --dport 21 -j ACCEPT - Устанавливаем отдельно метки для США и остальных, и посылаем каждый тип трафика к его цели
iptables -A INPUT -p tcp --dport 80 -m geoip --src-cc US -d <IP> -j MARK --set-mark 1 iptables -A INPUT -p tcp --dport 80 -m geoip ! --src-cc US -d <IP> -j MARK --set-mark 2
- Разрешаем ssh для своей страны (DE) и страны, где будем проводить отпуск(FR)

Спасибо.