Установка iptables+geoip на CentOS

Рубрика: CentOS|Безопасность|Разное

21 Мар 2011

Скачиваем сурсы ядра (kernel) . делаем uname -a:

Linux panel1.ukr-group.com 2.6.18-194.32.1.el5 #1 SMP Wed Jan 5 17:52:25 EST 2011 x86_64 x86_64 x86_64 GNU/Linux

mkdir ~/geoip
cd ~/geoip/
wget ftp://ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os/SRPMS/kernel-2.6.18-194.32.1.el5.src.rpm

перетаскиваем сурсы в tar.bz2 и распаковываем:

rpm2cpio kernel-2.6.18-194.32.1.el5.src.rpm | cpio -idv linux-2.6.18.tar.bz2

tar xjf linux-2.6.18.tar.bz2

Далее скачиваем сурсы iptables:

wget ftp://ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os/SRPMS/iptables-1.3.5-1.2.1.src.rpm

перетаскиваем сурсы в tar.bz2 и опять же распаковываем:

rpm2cpio iptables-1.3.5-1.2.1.src.rpm | cpio -idv iptables-1.3.5.tar.bz2

tar xjf iptables-1.3.5.tar.bz2

Скачиваем GeoIP и patch-o-matic-ng:

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-20090627.tar.bz2

Распаковываем patch-o-matic-ng:

tar xjf patch-o-matic-ng-20090627.tar.bz2

Распаковываем GeoIP:

tar xzf geoip.tar.gz -C patch-o-matic-ng-20090627/patchlets/

Патчим ядро:

cd patch-o-matic-ng-20090627/

KERNEL_DIR=../linux-2.6.18/ IPTABLES_DIR=../iptables-1.3.5/ ./runme geoip

Получаем следующее:

[root@panel1 patch-o-matic-ng-20090627]# KERNEL_DIR=../linux-2.6.18/ IPTABLES_DIR=../iptables-1.3.5/ ./runme geoip
Loading patchlet definitions. done
Welcome to Patch-o-matic ($Revision$)!

Kernel: 2.6.18, ../linux-2.6.18/
Iptables: 1.3.5, ../iptables-1.3.5/
Each patch is a new feature: many have minimal impact, some do not.
Almost every one has bugs, so don’t apply what you don’t need!
——————————————————-
Already applied:
Testing geoip… not applied
The geoip patch:
Author: Samuel Jean ; Nicolas Bouliane
Status: Stable

This patch makes possible to match a packet
by its source or destination country.

GeoIP options:
[!] –src-cc, –source-country country[,country,country,...]

Match packet coming from (one of)
the specified country(ies)

[!] –dst-cc, –destination-country country[,country,country,...]

Match packet going to (one of)
the specified country(ies)

NOTE: The country is inputed by its ISO3166 code.

The only extra files you need is a binary db (geoipdb.bin) & its index file (geoipdb.idx).
Take a look at http://people.netfilter.org/peejix/geoip/howto/geoip-HOWTO.html
for a quick HOWTO.
—————————————————————–
Do you want to apply this patch [N/y/t/f/a/r/b/w/q/?] y

Excellent! Source trees are ready for compilation.

Recompile the kernel image (if there are non-modular netfilter modules).
Recompile the netfilter kernel modules.
Recompile the iptables binaries.

Далее проводим сборку ядра модуля GeoIP:

cd ../linux-2.6.18

cp /boot/config-uname -r .config

cp /boot/symvers-uname -r.gz . && gunzip symvers-uname -r.gz && mv symvers-uname -r Module.symvers

make oldconfig

Если все сделали правильно, появится запрос на добавления модуля GeoIP в ядро:

geoip match support (IP_NF_MATCH_GEOIP) [N/m/?] (NEW) m

Выбираем m.

Далее подготавливаем модули:

make modules_prepare

Компилим модули:

make -C $(pwd) M=net/ipv4/netfilter/ modules

Если все пойдет хорошо, то в каталоге будет находиться ipt_geoip.ko и копируем в каталог:

cp net/ipv4/netfilter/ipt_geoip.ko /lib/modules/$(uname -r)/kernel/net/ipv4/netfilter/

cd net/ipv4/netfilter/

mkdir ipt_geoip

cp ipt_geoip.c ipt_geoip/

cd ipt_geoip

Создаем Makefile:

obj-m += ipt_geoip.o
KDIR := ~/geoip/linux-2.6.18
all:
make -C $(KDIR) M=$(PWD) modules

clean:

make -C $(KDIR) M=$(PWD) clean

Далее:

make
cp ipt_geoip.ko /lib/modules/$(uname -r)/kernel/net/ipv4/netfilter/

Активируем модуль ipt_geoip:

depmod -a
modprobe ipt_geoip

Собираем библиотеку iptables:

cd ~/geoip/iptables-1.3.5/

make KERNEL_DIR=../linux-2.6.18/ extensions/libipt_geoip.so

Копируем его на место:

для i386

cp extensions/libipt_geoip.so /lib/iptables/

для x86_64

cp extensions/libipt_geoip.so /lib64/iptables/

Скачиваем базу GeoIP:

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/

На этом установка и сборка связки iptables+geoip закончена, можно читать хелп и писать павила:

iptables -m geoip –help

Вот к примеру правила для Китая и его соседей:

iptables -N GEOIP_REJECT
iptables -I GEOIP_REJECT -m geoip –src-cc CN -j REJECT
iptables -I GEOIP_REJECT -m geoip –src-cc KR -j REJECT
iptables -I GEOIP_REJECT -m geoip –src-cc KP -j REJECT
iptables -I GEOIP_REJECT -m geoip –src-cc TW -j REJECT
iptables -A INPUT -j GEOIP_REJECT

Один комментарий к Установка iptables+geoip на CentOS

Avatar

Vit

4th Май 2012 в 09:04

А если после этого yum обновит kernel и iptables модуль будет продолжать работать?

Оставить комментарий или два

Страница 1 из 11

О сайте

Блог о повседневном обслуживании *nix систем, серверов, vps/vds.

  • Андрей: Спасибо! А то периодически теряюсь с ключами к tar :) [...]
  • Vit: А если после этого yum обновит kernel и iptables модуль будет пр [...]
  • Roman: Большое спасибо! все просто и понятно! [...]
  • Proxyr: Спасибо, друг! после установки itk отвалился myadmin. Переус [...]
  • WebSee: Наконец-то нашел решение, всего-то не хватало пакетов *- [...]

Календарег

Октябрь 2012
Пн Вт Ср Чт Пт Сб Вс
« Апр    
1234567
891011121314
15161718192021
22232425262728
293031