Portál AbcLinuxu, 10. května 2025 06:15
-A INPUT -i lo -j ACCEPT -A INPUT -i eth1 -j eth1_in -A INPUT -i eth0 -j eth0_in -A OUTPUT -o lo -j ACCEPT -A OUTPUT -o eth1 -j eth1_out -A OUTPUT -o eth0 -j eth0_out -A eth0_in -j ACCEPT -A eth0_out -j ACCEPT -A eth1_in -i eth1 -p tcp -m tcp --dport 22 -j ACCEPT -A eth1_in -i eth1 -p tcp -m tcp --dport 21 -j ACCEPT -A eth1_in -i eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT -A eth1_in -i eth1 -p icmp -j ACCEPT -A eth1_in -i eth1 -p udp -m udp --dport 137 -j ACCEPT -A eth1_in -i eth1 -p udp -m udp --dport 138 -j ACCEPT -A eth1_in -i eth1 -p tcp -m tcp --dport 139 -j ACCEPT -A eth1_in -i eth1 -p tcp -m tcp --dport 445 -j ACCEPT -A eth1_in -i eth1 -p udp -m udp --dport 445 -j ACCEPT -A eth1_in -i eth1 -j ULOG -A eth1_in -i eth1 -j REJECT --reject-with icmp-port-unreachable -A eth1_out -o eth1 -j ACCEPTTy pravidla pro smb povolují především server, který mám na stejném systému, ale teď mi jde o pravidla pro klienta, který má přistupovat na jiný server pomocí jeho netbios jména. Problém je v tom, že bych musel povolit provoz na základě zdrojového portu, což se mi moc nelíbí - v logu se objevují hlášky jako:
Nov 15 22:10:21 marv IN=eth1 OUT= MAC=... SRC=192.168.1.10 DST=192.168.1.146 LEN=90 TOS=00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=137 DPT=36518 LEN=70 Nov 15 22:10:24 marv IN=eth1 OUT= MAC=... SRC=192.168.1.10 DST=192.168.1.146 LEN=90 TOS=00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=137 DPT=34697 LEN=70 Nov 15 22:10:26 marv IN=eth1 OUT= MAC=... SRC=192.168.1.10 DST=192.168.1.146 LEN=90 TOS=00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=137 DPT=34483 LEN=70Předpokládal jsem, že tohle řeší RELATED,ESTABLISHED, ale v tomhle případě je to bez efektu.Tedy asi potřebuju nějakou chytřejší obdobu, ale nic se mi nedaří najít. Díky za rady.
Chápu to správně, že poředpokládáš, že toto pravidlo umožní projít tomuto paketu (pokud není ESTABLISHED)? Pak se dobře podívej na to, který port je zdrojový a který cílový a zjistíš, že se ti kříží. Které porty potřebuješ mít na netbios jména skutečně otevřené, to netuším, pokužívám vždy DNS jména.-A eth1_in -i eth1 -p udp -m udp --dport 137 -j ACCEPTNov 15 22:10:21 marv IN=eth1 OUT= MAC=... SRC=192.168.1.10 DST=192.168.1.146 LEN=90 TOS=00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=137 DPT=36518 LEN=70
Tohle právě vím, toto pravidlo, je tam kvůli samba serveru, který beží na tomto stroji. Celé by to IMHO vyřešilo stejné pravidlo (resp. pravidla), které vy místo --dport obsahovalo --sport. To se mi ale moc nelíbí, protože bych tím vlastně povolil veškerý příchozí provoz. Předpokládal jsem, že by tohle mohlo řešit pravidlo RELATED, ESTABLISHED, jelikož ten paket je related k předchozímu, který samba klient do sítě poslal. Ale tak to nefunguje.Chápu to správně, že poředpokládáš, že toto pravidlo umožní projít tomuto paketu (pokud není ESTABLISHED)? Pak se dobře podívej na to, který port je zdrojový a který cílový a zjistíš, že se ti kříží.-A eth1_in -i eth1 -p udp -m udp --dport 137 -j ACCEPTNov 15 22:10:21 marv IN=eth1 OUT= MAC=... SRC=192.168.1.10 DST=192.168.1.146 LEN=90 TOS=00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=137 DPT=36518 LEN=70
To se mi ale moc nelíbí, protože bych tím vlastně povolil veškerý příchozí provoz.Přesně tak.
Předpokládal jsem, že by tohle mohlo řešit pravidlo RELATED, ESTABLISHED, jelikož ten paket je related k předchozímu, který samba klient do sítě poslal. Ale tak to nefunguje.RELATED se u těchto protokolů nejspíš vůbec neuplatní, to se týká jen některých speciálních modulů. ESTABLISHED by ale zafungovat mělo, teď se na to dívám, že DPT je náhodný, tudíž to asi odpověď na něco je. Zkus příkaz conntrack, abys viděl, co v tabulce spojení skutečně máš, a tcpdump (či alternativa) ti pomůže sledovat odchozí pakety.
tcpdump -ni eth1 dport 137Ten output eth1 ACCEPT jsem přehlédl. Někdy je fakt jednodušší řetěz OUTPUT vůbec nenaplňovat, když na něm nechceš omezovat vůbec nic, ale to je na tobě. Tohle asi znáš, ale kdyby náhodou:
iptables -vLNa tom jsou vidět počty paketů, které se na pravidlo chytily.
Osobne bych dodal, ze RELATED,ESTABLISHED se dava pred filtrovani portu protoze vetsina paketu spadne do tohoto pravidla.A taky se to lépe čte, než když je takhle R/E uprostřed.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.