Содержание
Установка xtables-addons для блокирования стран через GeoIP
https://0-web.ru/server/403-blokiruem-strany-v-iptables.html
http://mironenko.pp.ua/2013/07/iptables.html?m=1
http://i-notes.org/centos-6-iptables-ustanovka-xtables-addons-geoip-filtering/
http://blog.ls20.com/iptables-geoip-port-knocking-and-port-scan-detection/
Установка xtables-addons в CentOS 6
Информация о системе
# cat /etc/centos-release CentOS release 6.8 (Final) # uname -r 2.6.32-642.4.2.el6.i686
Устанавливаем devel пакеты
# yum install kernel-devel-`uname -r` iptables-devel kernel-headers-`uname -r`
Устанавливаем gcc и всё необходимое для сборки
# yum install gcc gcc-c++ make automake unzip zip perl perl-Text-CSV_XS xz
Устанавливаем xtables-addons
# wget http://downloads.sourceforge.net/project/xtables-addons/Xtables-addons/xtables-addons-1.47.1.tar.xz # tar xvf xtables-addons-1.47.1.tar.xz # xtables-addons-1.47.1 # ./configure # make # make instal
Также бытует мнение, что некоторые модули следует исключить из сборки. Поэтому комментируем следующие строки
# nano mconfig build_RAWNAT=m build_SYSRQ=m build_length2=m
Бонус. Увеличиваем количество стран в одном правиле для iptables
sed -i "s#XT_GEOIP_MAX = 15#XT_GEOIP_MAX = 50#g" ./extensions/xt_geoip.h
На make
шаге всё закончится ошибкой
# make make all-recursive make[1]: Entering directory `/root/xtables-addons-1.47.1' Making all in extensions make[2]: Entering directory `/root/xtables-addons-1.47.1/extensions' Xtables-addons 1.47.1 - Linux 2.6.32-642.4.2.el6.i686 if [ -n "/lib/modules/2.6.32-642.4.2.el6.i686/build" ]; then make -C /lib/modules/2.6.32-642.4.2.el6.i686/build M=/root/xtables-addons-1.47.1/extensions modules; fi; make[3]: Entering directory `/usr/src/kernels/2.6.32-642.4.2.el6.i686' CC [M] /root/xtables-addons-1.47.1/extensions/compat_xtables.o /root/xtables-addons-1.47.1/extensions/compat_xtables.c: In function 'xtnu_ipv6_find_hdr': /root/xtables-addons-1.47.1/extensions/compat_xtables.c:633: error: too few arguments to function 'ipv6_find_hdr' make[4]: *** [/root/xtables-addons-1.47.1/extensions/compat_xtables.o] Error 1 make[3]: *** [_module_/root/xtables-addons-1.47.1/extensions] Error 2 make[3]: Leaving directory `/usr/src/kernels/2.6.32-642.4.2.el6.i686' make[2]: *** [modules] Error 2 make[2]: Leaving directory `/root/xtables-addons-1.47.1/extensions' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/root/xtables-addons-1.47.1' make: *** [all] Error 2
Кто виноват и что делать
Ошибка compat_xtables.c:633: error: too few arguments to function 'ipv6_find_hdr'
https://gist.github.com/namikawa/8677d8742994e3c19ee1
Thu May 30 2013 Jarod Wilson <[email protected]> [2.6.32-384.el6] - [net] ipv6: improve ipv6_find_hdr() to skip empty routing headers (Thomas Graf) [923212] - [net] ipv6: Move ipv6_find_hdr() out of Netfilter code (Thomas Graf) [923212] - [net] netfilter: ip6_tables: add flags parameter to ipv6_find_hdr() (Thomas Graf) [923212]
http://www.spinics.net/lists/netfilter-devel/msg24187.html
[PATCH] netfilter: move ipv6_find_hdr to net/ipv6/netfilter.c and rename it IPVS uses ipv6_find_hdr, but this function is defined in ip6_tables.c, to avoid such a dependency, move the function definition to the generic IPv6 netfilter infrastructure. This patch also renames the function to nf_ip6_find_hdr.
Удаляем в файле extensions/compat_xtables.c
строки между EXPORT_SYMBOL_GPL(HX_memmem);
и MODULE_LICENSE("GPL");
Ниже код, который следует удалить
Тем самым мы отключили поддержку IPv6.
EXPORT_SYMBOL_GPL(HX_memmem); #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 3, 0) && defined(WITH_IPV6) int xtnu_ipv6_skip_exthdr(const struct sk_buff *skb, int start, uint8_t *nexthdrp, __be16 *fragoffp) { return ipv6_skip_exthdr(skb, start, nexthdrp); } EXPORT_SYMBOL_GPL(xtnu_ipv6_skip_exthdr); #endif #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 5, 0) && defined(WITH_IPV6) int xtnu_ipv6_find_hdr(const struct sk_buff *skb, unsigned int *offset, int target, unsigned short *fragoff, int *fragflg) { return ipv6_find_hdr(skb, offset, target, fragoff); } EXPORT_SYMBOL_GPL(xtnu_ipv6_find_hdr); #endif MODULE_LICENSE("GPL");
Альтернативный метод
# nano /lib/modules/`uname -r`/build/include/linux/autoconf.h
Строку
#define CONFIG_IP6_NF_IPTABLES_MODULE 1
Заменяем на
/*#define CONFIG_IP6_NF_IPTABLES_MODULE 1*/
Создаём базу данных 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/
Загружаем модуль
# modprobe xt_geoip # lsmod |grep xt
http://blog.centralserv.co.uk/centos-redhat-6-5-xtables-addons-installation-puppet-xtables-addons/
https://www.google.com/search?q=checking+kernel+version+that+we+will+build+against...+make%3A+***+%2Flib%2Fmodules%2F2.6.32-431.el6.i686%2Fbuild%3A+No+such+file+or+directory.++Stop.&ie=utf-8&oe=utf-8
Установка xtables-addons в Debian 7
Установка xtables-addons в Debian 8
http://unix.rocks/2016/a-better-iptables-with-maxmind-geoip-geolocation-data/
apt-get install libtext-csv-xs-perl module-assistant geoip-database libgeoip1
7
sudo module-assistant --verbose --text-mode auto-install xtables-addons
8
apt-get install install libtext-csv-xs-perl xtables-addons-common
ISO 3166 Country Codes
yum install xtables-addons perl-Text-CSV_XS
cd /usr/share/doc/xtables-addons-1.47.1/geoip/ mkdir /usr/share/xt_geoip chmod +x xt_geoip_dl chmod +x xt_geoip_build ./xt_geoip_dl ./xt_geoip_build -D /usr/share/xt_geoip *.csv
Обсуждение