IPSec skrz linux kernel 2.6.18

Jan Rezab honza na rezab.eu
Středa Říjen 17 14:44:06 CEST 2007


> 
> Jan Rezab napsal(a):
>> Resim problem s linux firewallem.
> 
> Resi se problem s linux firewallem nebo spise NATem?
> 
>> Mam sit, ze ktery se uzivatele prihlasuji na ruzne vpn (PPTP a L2TP). 
>> Firewall je postaveny na linuxu s kernelem 2.6.18.
>>
>> Klient ->->-> Firewall ->->-> Internet ->->-> VPN server
>>
>> Porblem je v tom, ze se k vpn muze prihlasit jen jeden. Tomu druhemu 
>> se uz nepodari prihlasit.
>>
>> U PPTP jsem to vyresil nahranim modulu ip_gre. Ale u L2TP se mi nedari 
>> na nic prijit.
> 
> Resi se problem s IPsec tunelem/transportem nebo cistym L2TP tunelem?
> Nebo je to tak, ze je to L2TP pres IPsec transport?
> 
> Pokud je to opravdu skrze NAT a vic klientu se soucasne snazi spojit
> na stejny VPN server pomoci L2TP/IPsec transportu, tak obecne receno
> to nebude fungovat.
> 
> Zalezi na tom, jak je realizovan ten VPN server a jak resi otazku NAT-T
> rozsireni pro IPsec.
> Napriklad, pokud je to linux s NETKEY kernelem, tak to fungovat nebude,
> protoze ten pouziva pro identifikaci spojeni tu verejnou adresu a ta
> muze byt prirazena jen jednomu spojeni. Takze je tam limit, ze z jednoho
> NATu jen jeden uzivatel.
> Pokud je to linux s KLIPS, tak by to fungovat mohlo (nefungue na 2.4.x),
> tam zase nefunguje pripad, kdy se na jeden VPN server pripoji nekolik
> klientu pres ruzne NATy a budou mit tu neverejnou adresu stejnou. :-)
> Existuje rada patchu do linuxu na stranu VPN serveru, ktera toto umi
> resit, nicmene Xelerance pred rokem jejich uvolneni komunite podminil
> sponzorskym darem ve vysi 50 kUSD, pokud se mu jeste nesesly, tak
> to venku asi neni, pokud to nekdo jiny nenapsal a neuvolnil.
> Jak to je v pripade, ze ten VPN server je realizovan necim jinym,
> tak to je na otazku prislusnemu tvurci. :-)
> 
> M.

Drive to fungovalo. Jako firewall slouzil nejakej linux. Bohuzel mu 
odesel disk do vecnych lovist.

Po opetovne instalaci se nedari uzivatelum pripojovat na L2TP IPSec.
Presneji receno prihlasi se jen prvni uzivatel a druhemu to skonci pri 
overovani jmena a hesla. To same jsem pred casem resil u pptp, ale tam 
stacilo nahrat modul ip_gre a vse zacalo fungovat ok.

Co se tyce klienta a serveru tak je to Microsoft implementace protokolu 
ipsec a to jak na strane klienta, tak na strane serveru.

Zkousel jsem navod z 
http://osdir.com/ml/linux.mandrake.security.firewall/2005-10/msg00015.html
ale bohuzel to moc nezabralo.

Nastaveni mojeho iptables nastaveni IPTables:
#!/bin/bash
ipt="/sbin/iptables"
internet="eth0"
lan="eth1"

modprobe ipt_LOG
modprobe ipt_REJECT
modprobe ipt_state
modprobe ipt_limit
modprobe iptable_nat
modprobe iptable_filter
modprobe ip_tables
modprobe ip_gre
modprobe ip_conntrack
modprobe ipt_conntrack
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc
modprobe ip_conntrack_tftp

test -x $ipt || exit 0

# Vymaze predchozi nastaveni iptables.
$ipt --flush
$ipt --flush -t nat
$ipt -X SYN_FLOOD
$ipt -Z
$ipt -F

# Nastaveni defaultni politiky.
$ipt -P INPUT DROP
$ipt -P OUTPUT DROP
$ipt -P FORWARD DROP

# Povoleni forwardovani mezi sitovkamy.
echo "1" > /proc/sys/net/ipv4/ip_forward

# Zapnuti ochrany pred IP spoofingem.
for interfaces in /proc/sys/net/ipv4/conf/*/rp_filter; do
         echo "1" > ${interfaces}
done

# Nastaveni prichozich spojeni. (INPUT)
# Povoleni vseho z localhostu.
$ipt -A INPUT -i lo -j ACCEPT

# Zapnuti ochrany pred SYN flooding.
$ipt -N SYN_FLOOD
$ipt -A INPUT -i $internet -p tcp --syn -j SYN_FLOOD
$ipt -A SYN_FLOOD -m limit --limit 1/s --limit-burst 5 -j RETURN
$ipt -A SYN_FLOOD -j DROP

# Povoleni uz navazanych spojeni.
$ipt -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Povoli SSH pres rozhrani INTERNET (eth0).
$ipt -A INPUT -i $internet -p TCP --dport 22 -j ACCEPT


Michal Dobes napsal(a)# Povoli SSH pres rozhrani LAN (eth1).
$ipt -A INPUT -i $lan -p TCP --dport 22 -j ACCEPT

# Povoli DNS pres rozhrani LAN (eth1) a INTERNET (eth0).
$ipt -A INPUT -i $lan -p UDP --dport 53 -j ACCEPT
$ipt -A INPUT -i $internet -p UDP --dport 53 -j ACCEPT

# Pro zviseni rychlosti komunikace.
$ipt -A INPUT -i $internet -p TCP --dport 113 -j REJECT
$ipt -A INPUT -i $lan -p TCP --dport 113 -j REJECT


# Povoli ICMP na rozhrani INTERNET (eth0).
# $ipt -A INPUT -i $internet -p icmp --icmp-type echo-request -m limit 
--limit 1/s --limit-burst 5 -j ACCEPT
# Povoli ICMP na rozhrani LAN (eth1).
$ipt -A INPUT -i $lan -p icmp --icmp-type echo-request -m limit --limit 
1/s --limit-burst 5 -j ACCEPT


# Nastaveni odchozich spojeni. (OUTPUT)
$ipt -A OUTPUT -p ALL -s 127.0.0.1 -j ACCEPT
$ipt -A OUTPUT -p ALL -s 10.0.0.1 -j ACCEPT
$ipt -A OUTPUT -p ALL -s xxx.xxx.xxx.xxx -j ACCEPT
$ipt -A OUTPUT -m limit --limit 3/hour --limit-burst 5 -j LOG

# Nastaveni preposilani. (FORWARD)

# Povoleni PPTP z internetu.
$ipt -A FORWARD -i $internet -p gre -d 10.0.0.2 -j ACCEPT
$ipt -A FORWARD -i $internet -p tcp -d 10.0.0.2 --dport 1723 -j ACCEPT
# $ipt -A FORWARD -i $internet -p tcp -d 10.0.0.2 --dport 500 -j ACCEPT

# Nastaveni pristupu lan do internetu.
$ipt -A FORWARD -i $lan -o $internet -j ACCEPT

# Povoleni SMTP z internetu.
$ipt -A FORWARD -i $internet -p tcp -d 10.0.0.2 --dport 25 -m state 
--state NEW,ESTABLISHED,RELATED -j ACCEPT

# Povoleni POP3 z internetu.
# $ipt -A FORWARD -i $internet -p tcp -d 10.0.0.2 --dport 110 -m state 
--state NEW,ESTABLISHED,RELATED -j ACCEPT

# Povoleni HTTPS OWA z internetu.
$ipt -A FORWARD -i $internet -p tcp -d 10.0.0.2 --dport 443 -m state 
--state NEW,ESTABLISHED,RELATED -j ACCEPT

# Povoleni uz navazanych spojeni z internetu do lokoalnich siti.
$ipt -A FORWARD -i $internet -o $lan -m state --state 
ESTABLISHED,RELATED -j ACCEPT

# Nastaveni maskarady (NAT).
$ipt -t nat -A POSTROUTING -o $internet -j SNAT --to-source xxx.xxx.xxx.xxx
$ipt -t nat -A PREROUTING -p tcp --dport 25 -i $internet -j DNAT --to 
10.0.0.2
$ipt -t nat -A PREROUTING -p tcp --dport 443 -i $internet -j DNAT --to 
10.0.0.2
$ipt -t nat -A PREROUTING -p tcp --dport 1723 -i $internet -j DNAT --to 
10.0.0.2
$ipt -t nat -A PREROUTING -p gre -i $internet -j DNAT --to 10.0.0.2



Další informace o konferenci Linux