ipsec na 2.6.3 a iptables

Zdenek Prchal prchal na vtdata.cz
Úterý Březen 16 21:18:37 CET 2004


> To ovšem nic nemění na tom, že je problém, jak filtrovat příchozí provoz;
> netfilterem to asi nepůjde. Takže bude potřeba rozlišovat až na úrovni
> jednotlivých aplikací. Spoofingu se není třeba bát, protože pokud při
> definování příslušné security policy dáte 'require', mělo by to znamenat,

Ja to resim pres netfilter takhle (pouzivam shorewall, takze jsou ty
pravidla
zbytecne slozity a to jsem je jeste ocesal - zajimavy jsou pouze chainy
FORWARD a INPUT na smeru z verejneho interface wlan0, kde je potreba povolit
mimo jine prichozi pakety z ipsec tunelu):

Chain FORWARD (policy DROP 14 packets, 840 bytes)
 pkts bytes target     prot opt in     out     source
destination
    0     0 DROP      !icmp --  any    any     anywhere             anywhere
state INVALID
 656K  510M wlan0_fwd  all  --  wlan0  any     anywhere             anywhere

Chain wlan0_fwd (1 references)
 pkts bytes target     prot opt in     out     source
destination
10550 7176K vpn_frwd   all  --  any    any     192.168.0.0/16       anywhere
 646K  503M net2loc    all  --  any    eth0    anywhere             anywhere
(chain net2loc forwarduje SNATovany a DNATovany provoz z internetu
do privatni site - mimo ipsec tunel)

Chain vpn_frwd (1 references)
 pkts bytes target     prot opt in     out     source
destination
10550 7176K vpn2all    all  --  any    eth0    anywhere             anywhere

Chain vpn2all (3 references)
 pkts bytes target     prot opt in     out     source
destination
10570 7180K ACCEPT     all  --  any    any     anywhere             anywhere
state RELATED,ESTABLIS
   10   606 ACCEPT     all  --  any    any     anywhere             anywhere

No a chain INPUT (z verejneho interface) vypada takhle:
Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source
destination
 1946  240K ACCEPT     all  --  lo     any     anywhere             anywhere
    0     0 DROP      !icmp --  any    any     anywhere             anywhere
state INVALID
19549 9489K wlan0_in   all  --  wlan0  any     anywhere             anywhere

Chain wlan0_in (1 references)
 pkts bytes target     prot opt in     out     source
destination
16983 9219K dynamic    all  --  any    any     anywhere             anywhere
state NEW
   30  3870 vpn2all    all  --  any    any     192.168.0.0/16       anywhere
19519 9485K net2fw     all  --  any    any     anywhere             anywhere
(tady do chainu vpn2all jdou pakety z tunelu, ktere konci na firewallu)
btw, neni mi jasny ten target dynamic - prislusny chain existuje, ale je
prazdny
jak se to vlastne chova?

no a chain net2fw resi vlastni input z internetu:
Chain net2fw (1 references)
 pkts bytes target     prot opt in     out     source
destination
 2071  237K ACCEPT     all  --  any    any     anywhere             anywhere
state RELATED,ESTABLIS
 2403  193K newnotsyn  tcp  --  any    any     anywhere             anywhere
state NEW tcp flags:!S
12360 8692K ACCEPT     ipv6-crypt--  any    any     linux.vtdata.cz
anywhere
    0     0 ACCEPT     ipv6-auth--  any    any     linux.vtdata.cz
anywhere
   12  1152 ACCEPT     udp  --  any    any     linux.vtdata.cz      anywhere
udp spt:isakmp dpt:isa
   16   872 ACCEPT     tcp  --  any    any     anywhere             anywhere
multiport dports domai
    1    46 ACCEPT     udp  --  any    any     anywhere             anywhere
multiport dports domai
 2656  361K net2all    all  --  any    any     anywhere             anywhere

ten ipv6-crypt- protokol jsou tusim ESP pakety z druheho konce tunelu, pak
je tam jeste povoleny udp isakmp, zbytek udp a tcp portu, ktery chci mit
otevreny a to co jde do newnotsyn a net2all se loguje a zahazuje.
A funguje to <g>

> IP adresou. Problematická je ale situace, kdy mezi koncovými body někdy
> VPN je a někdy není. To šlo s FreeS/WAN podstatně pohodlněji.

Jo - proste se nastavily pravidla podle interface a bylo vymalovano.

BTW - prekvapko bylo pro me taky v tom, ze overlapped subnety tunelovat
nejdou - mel jsem proste jeden /24 subnet lokalni a vsechno ostatni /16
za tunelem a routovalo se to vcelku logicky podle routovaci tabulky
kernelu. Ted sice takhle tunel fungoval taky, ale nemohl jsem se vubec
dostat z lokalniho subnetu primo na firewall, nejak jsem sice detailne
nezjistil proc, ale protoze jsem pritom videl nejake pakety z lokalniho
subnetu na druhym konci tunelu, tak si myslim, ze se jich chopil iniciativne
ipsec a bez ohledu na routovaci tabulku kernelu je podle vlastniho
pravidla pro 'vsechno ostatni' /16 nacpal do tunelu ;)

	Zdenek Prchal



Další informace o konferenci Linux