Статья

geoip для iptables

В файерволле под линуксом возможна фильтрация по гео-признаку. Это может быть полезным для блокирования определенных стран или для балансировки запросов на разные бекенды, каждый из которых обрабатывает свой регион.

Теперь 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 install
    Проверить что всё успешно:
    iptables -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
cronfy Россия15 Апр 2011 05:04#3495Русский   
А есть ли база не в бинарном виде, а в текстовом? Чтобы можно было сконвертировать ее в таблицы ipfw.

Спасибо.
wipmania logo Alrond 23 Апр 2011 13:04#3543Русский   

Аноним/Имя OpenID OpenID Yahoo! OpenID AOL WordPress LiveJournal TypePad Vox Myvidoop Orange Yandex YandexBlog Mixi Myspace Flickr Verisign MyOpenID ClaimID

Все поля необязательны для заполнения

Для самой статьи оставьте поле пустым.
Для комментария максимум 5000 символов. BBcode включены.

Подписаться на ответы: все комментарии:RSS comments (ru)

Please have a look at our
Facebook Page and leave a comment

Creative Commons License
Creative Commons Attribution-Noncommercial 3.0 License