geoip в iptables

есть такой модуль для iptables – geoip. нужен он для того, чтобы фильтровать пакеты по географическому признаку.
по умолчанию в комплект поставки это счастье не входит, тк что собирать его придётся руками.
неполохое описание этого процесса есть здесь на русском или здесь на английском. версии немного отличаются.



если коротко:

подготовительная операция
# apt-get install dpkg-dev build-essential

скачать и распаковать сырцы ядра, сырцы iptables, type-o-matic, патч geoip.
# apt-get install linux-source-2.6.18
# tar xjf /usr/src/linux-source-<version>.tar.bz2 -C /usr/src/
# mkdir ~/geoip
# cd ~/geoip/
# apt-get source iptables
# wget http://people.netfilter.org/peejix/patchlets/geoip.tar.gz
# wget http://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/patch-o-matic-ng-20070414.tar.bz2
# tar xjf patch-o-matic-ng-20070414.tar.bz2
# tar xzf geoip.tar.gz -C patch-o-matic-ng-20070414/patchlets/
# cd patch-o-matic-ng-20070407/

пропатчить iptables свежескачанным geoip
# KERNEL_DIR=/usr/src/linux-source-<version>/ IPTABLES_DIR=~/geoip/iptables-<version>/iptables/ ./runme geoip

на самом деле можно geoip не скачивать, и расположение сырцов ядра и iptables не указывть. patch-o-matic спрашивает при их размещение, а geoip подкидывается командой
# ./runme –download geip

загрузит и пропатчит. ни куда не денется.

а дальше есть два варианта.
поскольку, для подключения модуля надо целых два файла – модуль ядра и библиотеку iptables, то можно особо не заморачиваясь их собрать и положить куда надо. или собирать полноценные пакеты ядра и iptables и ставить их в штатном режиме.

первый вариант:

применим на ядро старый конфиг
# cd /usr/src/linux-source-<version>/
# make oldconfig

на вопрос
geoip match support (IP_NF_MATCH_GEOIP) [N/m/?] (NEW)
отвечаем “m”
после чего подготавливаем сборку модулей и собираем модули netfilter (правда все сразу, как собрать отдельный я не в курсе)
# make modules_prepare
# make -C $(pwd) M=net/ipv4/netfilter/ modules

копируем ядерный модуль на штатное место
# cp net/ipv4/netfilter/ipt_geoip.ko /lib/modules/$(uname -r)/kernel/net/ipv4/netfilter/

и активируем его
# depmod
# modprobe ipt_geoip
# echo “ipt_geoip” >> /etc/modules

собираем библиотеку iptables
# cd ~/geoip/iptables-<version>/iptables/
# make KERNEL_DIR=/usr/src/linux-source-<version>/ extensions/libipt_geoip.so

и ставим файл на место
# cp extensions/libipt_geoip.so /lib/iptables/

после чего подкидываем модулю базу ардресов с привязкой к странам

ну и второй вариант:
точно так же конфигурим ядро

применим на ядро старый конфиг
# cd /usr/src/linux-source-<version>/
# make oldconfig

на вопрос
geoip match support (IP_NF_MATCH_GEOIP) [N/m/?] (NEW)
отвечаем “m”

и собираем ядерный пакет
# make-kpkg –initrd kernel_image

после чего получаем собраный пакет с пропатченым ядром годный для установки

ну и сооружаем дебиановский пакет с пропатченным iptables. руководство берём здесь

/* чесслово, мне лениво прямо сейчас переписывать всё что там есть. лучше по дебианизации отдельную статью написать, если она действительно нужна. */

в общем получили на выходе готовый пакет iptables-чего_то_там-geoip.deb, опять же готовый к установке.

остаётся саме простое – подсунуть географическому модулю базу адресов

# cd ~/geoip/
# wget http://www.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip
# unzip GeoIPCountryCSV.zip
# wget http://people.netfilter.org/peejix/geoip/tools/csv2bin-20041103.tar.gz
# tar xzf csv2bin-20041103.tar.gz
# cd csv2bin/
# make
# ./csv2bin ../GeoIPCountryWhois.csv
# mkdir /var/geoip
# mv geoipdb.* /var/geoip/

всё. в /var/geoip лежит готоая к употреблению база. можно писать правила в iptables

# iptables -m geoip –help



Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>