Linux за българи: Форуми

Linux секция за напреднали => Хардуерни и софтуерни проблеми => Темата е започната от: ZNO_Core в Apr 02, 2007, 19:37



Титла: Проблем с iptables+l7filter vs. promisc mode
Публикувано от: ZNO_Core в Apr 02, 2007, 19:37
kernel: 2.6.18.6
iptables: 1.3.7
l7filter: 2.9

Инсталацията е FC4,  с прекомпилирано ядро 2.6.18.6, с добавен пач за l7-filter, и прекомпилиран сървиз iptables 1.3.7 отново с пач за l7-filter, използвам l7-rptocols последните налини. Мрежовата карта е настроена в promisc mode.
Пакетите, които са от самата машина и за самата машина, се детектират успешно от iptables и l7-filter. Но тези, които не са предназначени за нея не достигат до iptables.
При употреба на tcpdump пакетите предназначени за други машини успешно се детектират, също така и при работа с pmacct/pmacctd. Ако някой има идея защо пакетите не достигат до таблиците на iptables моля да помага благодаря предварително :)





Титла: Проблем с iptables+l7filter vs. promisc mode
Публикувано от: VladSun в Apr 02, 2007, 21:08
По какво съдиш, че пакетите не достигат до стената? Правила малко да дадеш...

ПП: Тази машина рутер ли е?





Титла: Проблем с iptables+l7filter vs. promisc mode
Публикувано от: ZNO_Core в Apr 03, 2007, 10:45
Машината не е рутер, смятам че пакетите не достигат до iptables защото нито един от chains не хваща трафика който не е насочен за машината конкретно а идва поради това, че е пуснат promisc. Съответно и в правилата включващи l7-protocol matching не попада нищо. Правилата, които ме интересуват се зареждат посредством следния скрипт:
Примерен код

export IPT_NFO_STR="IPT-INFO"
date > last-ipt-mangle-init-date
date >> ipt-mangle-init-date
#
#iptables -t mangle --flush
for IPT_CHAIN in "PREROUTING" "INPUT" "FORWARD" "OUTPUT" "POSTROUTING"
do
for IPT_L7_PROTO in "dns" "dhcp" "snmp" "ntp" "ftp" "tftp" "http" "ssh"
do
iptables -t mangle -A $IPT_CHAIN -m layer7 --l7proto $IPT_L7_PROTO
done


Титла: Проблем с iptables+l7filter vs. promisc mode
Публикувано от: gat3way в Apr 03, 2007, 12:35
Какво нередно има?

Трафикът не "идва" заради това, че интерфейсът е в такъв режим, той си "идва" по принцип. По-скоро товариш ядрото да се занимава с повече sk_buff's, отколкото по принцип, защото драйверът на мрежовата карта не ти отрязва "чуждия" трафик (т.е фреймовете с dst MAC!=този на твоят интерфейс).

Тези "чужди" пакети, дори обработени от ядрото, не могат да се асоцират с нито един отворен сокет например. По сходни причини, netfilter не ги асоцира с нито един "chain". Просто source/destination MAC адресите на тези получени фреймчета не отговаря на критериите.


Титла: Проблем с iptables+l7filter vs. promisc mode
Публикувано от: VladSun в Apr 03, 2007, 12:39
Цитат (ZNO_Core @ Април 03 2007,10:45)
Машината не е рутер, смятам че пакетите не достигат до iptables защото нито един от chains не хваща трафика който не е насочен за машината конкретно а идва поради това, че е пуснат promisc. Съответно и в правилата включващи l7-protocol matching не попада нищо.

И аз мисля така ...
Може би, ако пуснеш forwarding на пакетите ще стане ... не съм много сигурен, но може би и по някакъв начин ще трябва да промениш рутинг таблицата ...

ПП: Каква е целта на всичко това?


Титла: Проблем с iptables+l7filter vs. promisc mode
Публикувано от: ZNO_Core в Apr 03, 2007, 13:06
Целта на всичко това е тази машина да следи и класифицира трафикът предназначен не само за нея а и за останалите машини в прилежащата мрежа. Ще опитам с форуърдинг.
Рутинг таблицата е абсолютно празна и стандартна, като се изключат правилата добавени с вече показания скрипт.


Титла: Проблем с iptables+l7filter vs. promisc mode
Публикувано от: gat3way в Apr 03, 2007, 13:09
Ахъм, само че няма да стане по този начин.

П.П. : това в switching environment?
П.П2 : какви са тия полицейщини?


Титла: Проблем с iptables+l7filter vs. promisc mode
Публикувано от: ZNO_Core в Apr 03, 2007, 13:28
да в switching environment
не са полицейщини а нужна мярка

въпросът е по-кой начин ще стане?
 ;)


Титла: Проблем с iptables+l7filter vs. promisc mode
Публикувано от: gat3way в Apr 03, 2007, 13:47
Ми първо ако е така и със суичовете всичко е наред, би следвало да "хващаш" само broadcast трафик, както и unicast такъв, но само ако е предназначен за теб. Това няма никаква връзка с момента дали интерфейсът ти е в promiscuous режим. Суичовете по дефиниция би следвало да ти препращат само трафика, който е с твоят mac destination.

Второ, netfilter (iptables) няма как да "хваща" този трафик. Можеш малко да си поиграеш и да си смениш mac адреса с този на default gateway-a за останалите машини, тогава *мистериозно* по веригите ще се отчитат тези пакети...както и ще си имаш проблеми със свързаността.

И накрая, за да следиш по някакъв начин този трафик, забрави въобще за netfilter, трябва ти вероятно нещо libpcap-базирано. Не знам каква точно ти е целта, вероятно ntop донякъде може да ти свърши работа, поне има уеб фронтенд дето вади красиви графики и статистики ;)


Титла: Проблем с iptables+l7filter vs. promisc mode
Публикувано от: Gaara в Apr 03, 2007, 14:05
Цитат (ZNO_Core @ Април 03 2007,11:45)
Примерен код

for IPT_L7_PROTO in "dns" "dhcp" "snmp" "ntp" "ftp" "tftp" "http" "ssh"
do
iptables -t mangle -A $IPT_CHAIN -m layer7 --l7proto $IPT_L7_PROTO
done

Цитат

LAYER7 match v1.3.7 options:
--l7dir <directory>  : Look for patterns here instead of /etc/l7-protocols/
                       (--l7dir must be specified before --l7proto if used!;)
--l7proto [!] <name> : Match the protocol defined in /etc/l7-protocols/name

т.е. нещо от сорта на
Примерен код

iptables -t mangle -A POSTROUTING -s 192.168.0.0/24 -m layer7 --l7dir /etc/l7-protocols/file_types/ --l7proto bittorrent -j ACCEPT

 :D


Титла: Проблем с iptables+l7filter vs. promisc mode
Публикувано от: ZNO_Core в Apr 03, 2007, 14:25
Цитат (Gaara @ Април 03 2007,15:05)
Цитат

LAYER7 match v1.3.7 options:
--l7dir <directory>  : Look for patterns here instead of /etc/l7-protocols/
                       (--l7dir must be specified before --l7proto if used!;)
--l7proto [!] <name> : Match the protocol defined in /etc/l7-protocols/name

т.е. нещо от сорта на
Примерен код

iptables -t mangle -A POSTROUTING -s 192.168.0.0/24 -m layer7 --l7dir /etc/l7-protocols/file_types/ --l7proto bittorrent -j ACCEPT

 :D

Хубаво като предложение.
Но не разбирам какво ще промени това с директорията.
Патърните все са си същите и все едно и също нещо правят.
Или тук се намеква че има бъг в разпознаването им от дефолтната директория?


Титла: Проблем с iptables+l7filter vs. promisc mode
Публикувано от: VladSun в Apr 03, 2007, 14:27
Според мен единствения начин е да си пуснеш машината в режим на рутер, да си смениш мак-а на мак-а на шлюза за мрежата (както и ИП-то), след това да нафлудиш суичовете с АРП, така че да преминат в "хъб" режим и да forward-ваш пакетите през твоята машина ... но това не е много хубаво ;)





Титла: Проблем с iptables+l7filter vs. promisc mode
Публикувано от: ZNO_Core в Apr 03, 2007, 14:31
Цитат (VladSun @ Април 03 2007,15:27)
Според мен единствения начин е да си пуснеш машината в режим на рутер, да си смениш мак-а на мак-а на шлюза за мрежата (както и ИП-то), след това да нафлудиш суичовете с АРП, така че да преминат в "хъб" режим и да forward-ваш пакетите през твоята машина ... но това не е много хубаво ;)

Точно това е нещто което най-малко искам да правя


Титла: Проблем с iptables+l7filter vs. promisc mode
Публикувано от: Uvigii в Apr 06, 2007, 00:10
Здравей,
цък





Титла: Проблем с iptables+l7filter vs. promisc mode
Публикувано от: gat3way в Apr 06, 2007, 09:49
Uvigii, мисля че твоята схема може да се реализира и по-лесно само с proxyarp на двата интерфейса и без ebtables, въпреки че няма особена разлика де..

Мисля, че неговият случай обаче не е точно такъв, в смисъл такъв, че той иска от някаква произволна станция в етернет сегмента да хваща и отчита, че и да модифицира трафици, при положение че не му е било писано въобще те да минават през същата станция :)