ASPLinux 11 & layer7

Автор: bsm Дата: 27.07.2010 09:53 Имеем ASPLinux 11 (2.6.17-1.2146aspsmp), iptables-1.3.5-1.2asp, iptables-devel-1.3.5-1.2asp.
Скачан и установлен пакет l7-protocols-2009-05-28.tar.gz

Необходимо фильтровать Skype- вести лог и отказывать в доступе в этому сервису.

В в скрипте создающем firewall указано-

..
/sbin/modprobe ipt_layer7

iptables -N SKYPE
iptables -A SKYPE -j LOG --log-level debug --log-prefix "iptables SKYPE: " --log-tcp-options --log-ip-options
iptables -A SKYPE -j ACCEPT

for skype_protocol in skypeout skypetoskype; do
cmd_string="--in-interface eth0 --match layer7 --l7dir /etc/l7-protocols/protocols --l7proto $skype_protocol"

iptables -A FORWARD $cmd_string --source 192.168.0.0/16 -j SKYPE
done
..

Если в цепочке SKYPE указано "-j ACCEPT", то всё работает и пользователи имеют возможность работать с почтой и Интернет. Но при указании в цепочке SKYPE "-j DROP", пользователям блокируется доступ к почте и Интернет.

Как исправить положение?

Chain FORWARD (policy DROP 11322 packets, 747K bytes)
pkts bytes target prot opt in out source destination
0 0 REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x12/0x12 state NEW reject-with tcp-reset
2 80 LOG tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:!0x17/0x02 state NEW LOG flags 0 level 7 prefix `FORWARD :: New not syn: '
2 80 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:!0x17/0x02 state NEW
0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 192.168.3.122 multiport dports 22,80,139,443,2401,3690
0 0 ACCEPT tcp -- * eth0 192.168.3.122 0.0.0.0/0 multiport sports 22,80,139,443,2401,3690
0 0 ACCEPT tcp -- eth0 * 192.168.0.10 192.168.3.122 tcp dpt:3128
0 0 ACCEPT tcp -- * eth0 192.168.3.122 192.168.0.10 tcp spt:3128
0 0 ACCEPT tcp -- eth0 * 192.168.0.26 192.168.3.122 tcp dpt:3128
0 0 ACCEPT tcp -- * eth0 192.168.3.122 192.168.0.26 tcp spt:3128
0 0 ACCEPT tcp -- eth0 * 192.168.0.104 192.168.3.122 tcp dpt:3128
0 0 ACCEPT tcp -- * eth0 192.168.3.122 192.168.0.104 tcp spt:3128
78149 52M SKYPE all -- eth0 * 192.168.0.0/16 0.0.0.0/0 LAYER7 l7proto skypeout
201K 16M SKYPE all -- eth0 * 192.168.0.0/16 0.0.0.0/0 LAYER7 l7proto skypetoskype

8299 398K DROP tcp -- eth0 * 192.168.0.0/16 !192.168.0.1 multiport dports 80,443,3124,3127,3128
0 0 DROP all -- eth1.11 eth0 10.10.3.2 !192.168.0.1
0 0 DROP tcp -- * eth0 0.0.0.0/0 0.0.0.0/0 tcp spts:31337:31340 dpts:31337:31340
4443 213K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x17/0x02 limit: avg 12/min burst 5
1272 50880 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x17/0x04 limit: avg 12/min burst 5
79027 6689K CHK_MAC_KB all -- eth0 * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- eth0 eth1 192.168.0.0/24 192.168.3.18
0 0 ACCEPT all -- eth0 eth1 192.168.0.0/24 192.168.3.21
0 0 ACCEPT all -- eth0 eth1 192.168.0.0/24 192.168.3.20
0 0 ACCEPT all -- eth0 eth1 192.168.0.0/24 192.168.3.25
0 0 ACCEPT all -- eth0 eth1 192.168.0.0/24 192.168.3.8
44 2640 ACCEPT all -- eth0 eth1 192.168.0.0/24 192.168.3.121
47 2820 ACCEPT all -- eth0 eth1 192.168.0.0/24 192.168.3.122
0 0 ACCEPT all -- eth0 eth1 192.168.0.0/24 192.168.3.12
539 32340 ACCEPT all -- eth0 eth1 192.168.0.0/24 192.168.3.120
0 0 ACCEPT all -- eth0 eth1 192.168.0.0/24 192.168.7.211
..

Chain SKYPE (2 references)
pkts bytes target prot opt in out source destination
279K 69M LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 6 level 7 prefix `iptables SKYPE: '
279K 69M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0



Chain FORWARD (policy DROP 243 packets, 17544 bytes)
pkts bytes target prot opt in out source destination
0 0 REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x12/0x12 state NEW reject-with tcp-reset
6 270 LOG tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:!0x17/0x02 state NEW LOG flags 0 level 7 prefix `FORWARD :: New not syn: '
6 270 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:!0x17/0x02 state NEW
0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 192.168.3.122 multiport dports 22,80,139,443,2401,3690
0 0 ACCEPT tcp -- * eth0 192.168.3.122 0.0.0.0/0 multiport sports 22,80,139,443,2401,3690
0 0 ACCEPT tcp -- eth0 * 192.168.0.10 192.168.3.122 tcp dpt:3128
0 0 ACCEPT tcp -- * eth0 192.168.3.122 192.168.0.10 tcp spt:3128
0 0 ACCEPT tcp -- eth0 * 192.168.0.26 192.168.3.122 tcp dpt:3128
0 0 ACCEPT tcp -- * eth0 192.168.3.122 192.168.0.26 tcp spt:3128
0 0 ACCEPT tcp -- eth0 * 192.168.0.104 192.168.3.122 tcp dpt:3128
0 0 ACCEPT tcp -- * eth0 192.168.3.122 192.168.0.104 tcp spt:3128
90129 47M SKYPE all -- eth0 * 192.168.0.0/16 0.0.0.0/0 LAYER7 l7proto skypeout
317K 12M SKYPE all -- eth0 * 192.168.0.0/16 0.0.0.0/0 LAYER7 l7proto skypetoskype

0 0 DROP tcp -- * eth0 0.0.0.0/0 0.0.0.0/0 tcp spts:31337:31340 dpts:31337:31340
69 3192 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x17/0x02 limit: avg 12/min burst 5
9 360 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x17/0x04 limit: avg 12/min burst 5
513 126K CHK_MAC_KB all -- eth0 * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- eth0 eth1 192.168.0.0/24 192.168.3.18
0 0 ACCEPT all -- eth0 eth1 192.168.0.0/24 192.168.3.21
0 0 ACCEPT all -- eth0 eth1 192.168.0.0/24 192.168.3.20
0 0 ACCEPT all -- eth0 eth1 192.168.0.0/24 192.168.3.25
0 0 ACCEPT all -- eth0 eth1 192.168.0.0/24 192.168.3.8
0 0 ACCEPT all -- eth0 eth1 192.168.0.0/24 192.168.3.121
0 0 ACCEPT all -- eth0 eth1 192.168.0.0/24 192.168.3.122
0 0 ACCEPT all -- eth0 eth1 192.168.0.0/24 192.168.3.12
0 0 ACCEPT all -- eth0 eth1 192.168.0.0/24 192.168.3.120
0 0 ACCEPT all -- eth0 eth1 192.168.0.0/24 192.168.7.211
..

Chain SKYPE (2 references)
pkts bytes target prot opt in out source destination
407K 59M LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 6 level 7 prefix `iptables SKYPE: '
407K 59M DROP all -- * * 0.0.0.0/0 0.0.0.0/0
Re: ASPLinux 11 & layer7 08.08.2010 10:51Adim Не совсем понятно, что установлено - одного l7-protocols-2009-05-28.tar.gz мало, надо ещё и l7-filter-userspace-0.11.tar.gz , тогда можно о чём-то говорить.
Посмотри это [forum.redhat-club.org] .
Re: ASPLinux 11 & layer7 10.08.2010 09:54bsm Предлагаемый пакет не устанавливается-

checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for g++... g++
checking for C++ compiler default output file name... a.out
checking whether the C++ compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for style of include used by make... GNU
checking dependency style of g++... gcc3
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for NFNETLINK... configure: error: Package requirements (libnetfilter_conntrack libnetfilter_queue) were not met:

No package 'libnetfilter_conntrack' found
No package 'libnetfilter_queue' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables NFNETLINK_CFLAGS
and NFNETLINK_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

Кроме того, в документации по данному вопросу в Интернет необходимость использования пакета l7-filter-userspace не упоминается.
Re: ASPLinux 11 & layer7 10.08.2010 19:15Adim Меня несколько напрягло то, что вы называете пакетами исходники, и:
Кроме того, в документации по данному вопросу в Интернет необходимость 
использования пакета l7-filter-userspace не упоминается

Какой документацией вы пользовались? Дайте линк. А доков по этой теме хватает, начиная от вики, где расписано зачем нужен программный пакет l7-filter и какие версии есть (kernel и userspace). Далее пойдёт речь о userspace версии.

Что касается непосредственно вопроса, то ту ссылку, которую я вам дал в своём предыдущем посте - это отличный мануал, из которого видно, как это всё работает.

Первое - установка необходимого ПО - могу сказать, что для ASPLinux 12 (Fedora 7) необходимо поставить libnetfilter_conntrack (есть в репозитарии ASPLinux12, нет в репозитарии ASPLinux11 (Fedora Core 4), но данный бинарный пакет можно найти, например по адресу rpm.pbone.net/index.php3?stat=3&limit=5&srodzaj=1&dl=40&search=libnetfilter_conntrack&field[]=1&field[]=2 ), далее установить libnetfilter_queue (для ASPLinux12 в репозитарии пакета нет - скачал из репозитария Fedora7, для ASPLinux11 бинарного пакета не нашёл, поэтому я бы скачал исходники, например отсюда, и скомпилил. Возможная проблема в том, что там имеется версия 0.0.17, а вам, возможно потребуется более старая версия, например для Fedora 5 версия libnetfilter_queue 0.0.13. Но интернет большой, я думаю найдётся всё). Затем, скомпилить и установить из исходников l7-filter-userspace-0.11.tar.gz, ну и затем l7-protocols-2009-05-28.tar.gz (это просто описание протоколов прикладного уровня, которые используются l7-filter, кстати, описания могут добавляться).

Второе, собственно настройка - подгружаются модули, для этого в /etc/sysconfig/iptables-config добавляем:
IPTABLES_MODULES="ip_conntrack_netlink ip_conntrack"

Третье - редактируем /etc/sysconfig/iptables как указано в мануале, который я вам дал. Из него чётко видно, что маркировка пакетов производится в таблице mangle, причём каждый пакет маркируется в зависимости от того, какой протокол прикладного уровня он содержит , а фильтрация в таблице filter (т.е. DROP, ACCEPT и т.д.).

Четвёртое - запуск l7-filter в отладочном режиме. Здесь есть нюанс - конфиг, при установке из исходников не устанавливается, но есть пример конфига /путь_к_исходникам/l7-filter-userspace-0.11/sample-l7-filter.conf, переименовать его (sample-l7-filter.conf) в l7-filter.conf , при необходимости отредактировать под свои нужды и положить, например в /etc . Далее запуск:
l7-filter -f /etc/l7-filter.conf -v -v -v -v

Пятое - запуск и проверка в режиме демона:
l7-filter -f /etc/l7-filter.conf -z

И шестое, если надо - добавление в стартовый скрипт запуска iptables - /etc/init.d/iptables .

Что касается:
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for g++... g++
checking for C++ compiler default output file name... a.out
checking whether the C++ compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for style of include used by make... GNU
checking dependency style of g++... gcc3
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for NFNETLINK... configure: error: Package requirements (libnetfilter_conntrack libnetfilter_queue) were not met:

No package 'libnetfilter_conntrack' found
No package 'libnetfilter_queue' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables NFNETLINK_CFLAGS
and NFNETLINK_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details. 

то тут все предельно ясно - не найдены соответствующие библиотеки (libnetfilter_conntrack и libnetfilter_queue), ну, или библиотеки установлены в нестандартное место (на самом деле у вас просто не установлены). Где их взять я описал выше.

И ещё ... у меня это работает под ASPLinux 12, так что сможете ли вы сделать под ASPLinux 11 я не знаю, но попытаться можно.

ЗЫ. Упустил один момент - у меня, под ASPLinux12, для компиляции l7-filter из исходных кодов установлены кроме
libnetfilter_queue-0.0.15-1.fc7
libnetfilter_conntrack-0.0.82-1.0.120asp
ещё и
libnetfilter_queue-devel-0.0.15-1.fc7
libnetfilter_conntrack-devel-0.0.82-1.0.120asp
но переписывать пост не буду. Думаю, что можно самому додумать и оценить возможность установки l7-filter-userspace под ASPLinux11. Ну, а если использовать kernel-версию, то сказать ничего не могу.
Re: ASPLinux 11 & layer7 11.08.2010 12:18bsm Спасибо. Буду пробовать.
Re: ASPLinux 11 & layer7 11.08.2010 17:28Adim Отпишитесь о результатах, плз.
Re: ASPLinux 11 & layer7 12.08.2010 15:46bsm О документации-

ASPLinux 11 & layer7
Viktor.Tsedrik1 - ASPLinux Wiki
Серпом по аськамю Режем IM, Skype, P2P и все остальное
Firewall L7
Linux: netfilter/iptables - Ajuda em regra para firewall [RESOLVIDO]
BrazilFW Firewall and Router • View topic - Ajuda com skype e google talk

На чём я остановился-

- для ASPLinux 11 найдены пакеты- libnetfilter_conntrack-0.0.30-2.fc4.i386.rpm, libnfnetlink-0.0.40-1.el4.rf.i386.rpm; пакеты инсталлированы без ошибок;
- для полного комплекта необходим libnetfilter-queue, т.к. подходящего .rpm ненайдено, то взят исходник
libnetfilter_queue-1.0.0.tar.bz2; при сборке пакета получено сообщение о необходимости libnfnetlink >= 1.0.0;
- деинсталлировал libnetfilter_conntrack-0.0.30-2.fc4.i386.rpm, libnfnetlink-0.0.40-1.el4.rf.i386.rpm пакеты; взял исходники- libnetfilter_conntrack-0.0.102.tar.bz2, libnetfilter_log-1.0.0.tar.bz2, libnetfilter_queue-1.0.0.tar.bz2, libnfnetlink-1.0.0.tar.bz2;
- первым инсталлировал libnfnetlink-1.0.0.tar.bz2 , инсталляция выполнена без ошибок;
- инсталляция libnetfilter_conntrack-0.0.102.tar.bz2,- при сборке пакета получено сообщение о необходимости libnfnetlink >= 1.0.0.

Круг замкнулся.
Re: ASPLinux 11 & layer7 13.08.2010 07:50Adim Нда...
Т.е. если действительно есть необходимость в использовании l7-filter, надо переходить на др. версию ASPLinux.
Re: ASPLinux 11 & layer7 13.08.2010 09:16bsm Я тоже думаю так.
Буду ждать ASPLinux 15.

Спасибо за помощь.
RSS-материал