IPFW - pravidla

Martin Machacek mm at i.cz
Wed Jun 14 11:04:29 CEST 2000


On 14-Jun-00 Aleš Kotmel wrote:
> Napsal jsem si následující  filtrovací pravidla:
> 
> 00100 divert 8668 ip from any to any via fxp0
> 00200 allow ip from any to any via lo0
> 00300 deny ip from any to 127.0.0.0/8
> 00400 allow ip from 192.168.1.0/24 to any in recv fxp1
> 00500 allow ip from any to 192.168.1.0/24 out xmit fxp1
> 00600 allow tcp from 195.250.137.147 to any 80 out xmit fxp0
> 00700 allow tcp from any 80 to 195.250.137.147 in recv fxp0 established
> 00800 allow udp from any to any
> 00900 allow icmp from 195.250.137.147 to any out xmit fxp0 icmptype 8
> 01000 allow icmp from any to 195.250.137.147 in recv fxp0 icmptype 0
> 01100 allow log logamount 100 tcp from any to any
> 01200 allow log logamount 100 icmp from any to any
> 65535 deny ip from any to any
> 
> a v souboru rc.conf zadal spuštění ipfw a natd:
> 
> ifconfig_fxp0="inet 195.250.137.147 netmask 255.255.255.224"
> ifconfig_fxp1="inet 192.168.1.1 netmask 255.255.255.0"
> firewall_enable="YES"
> firewall_script="/folder/firewall"
> natd_enable="YES"
> 
> 
> natd se spustí s parametrem:
> 
> /sbin/natd -n fxp0 
> 
> Pokud zkusím příkaz ping z vnitřní sítě, paket správně odchází přes pravidlo
> 900. Zpět se ale paket nevrací přes pravidlo 1000, ale přes pravidlo 1200.

To je v pořádku, protože v té době již má přeloženou cílovou adresu na vnitřní,
takže pravidlo 1000 se neuplatní.

> Obdobně pro TCP spojení paket správně odchází přes pravidlo 600 a zpět se
> nevrací přes pravidlo 700, ale přes pravidlo 1100.

To je to samé a navíc pravidlo 700 platí pouze pro TCP pakety z portu 80.

> Do souboru security se zapíše:
> 
> Jun 14 08:08:45 gw /kernel: ipfw: 1200 Accept ICMP:0.0 194.228.2.1
> 192.168.1.14 in via fxp0
> Jun 14 08:08:48 gw last message repeated 2 times
> Jun 14 08:09:51 gw /kernel: ipfw: 1100 Accept TCP 195.250.128.35:21
> 192.168.1.14:1110 in via fxp0
> Jun 14 08:09:51 gw /kernel: ipfw: 1100 Accept TCP 195.250.128.35:21
> 192.168.1.14:1110 in via fxp0
> Jun 14 08:09:51 gw /kernel: ipfw: 1100 Accept TCP 195.250.128.35:21
> 192.168.1.14:1110 in via fxp0
> Jun 14 08:09:51 gw /kernel: ipfw: limit 100 reached on entry 1100

Takže vše v podstatě funguje jak má, ne?

> Zdá se mi, že při návratu paketu z Internetu zpět nedojde ke zpětnému
> překladu cílové adresy 195.250.137.147 na adresu zdrojovou z lokální síti
> 192.168.1.14.

A copak Vás k tomuto závěru vede? Vždyť v tom výpisu z logu je zřetelně
vidět, že cílová adresa logovaných paketů je 192.168.1.14.

Dle mého názoru Vaše konfigurace je v podstatě použitelná a podle uvedených
záznamů z logu se zdá, že i funguje. Nicméně některá pravidla jsou zbytečná a je
možné je vypustit (není to kritické) a proto, aby to bylo opravdu bezpečné by
bylo zapotřebí doplnit ještě anti-spoofovací pravidla a zahazování nekěterých
zřetelně nesmyslných adres. Absolutně minimalistická verze by mohla vypadat
třeba takhle:

00100 allow ip from any to any via lo0
00200 deny log ip from any to 127.0.0.0/8
00300 deny log ip from 195.250.137.147 to any recv fxp0
00400 deny log ip from 192.168.0.0/18 to any recv fxp0
00500 deny log ip from 192.168.1.1 to any recv fxp1
00500 divert 8668 ip from any to any via fxp0
00600 allow ip from any to any
65535 deny log ip from any to any

Nenechte se zmást tím, že zdánlivě je všechno povolené, protože dostatečnou
ochranu zajistí natd, který jako vedlejší efekt překladu adres dělá i stavový IP
filtr (v podstatě to samé co např. Firewall-1).

> Nevíte někdo, kde může být chyba?

..že by v interpretaci záznamů z logu? :-).



        Martin 

---
[PGP KeyID F3F409C4]



More information about the Users-l mailing list