Linux IPsec HowTo

W tym miejscu zapraszamy Was do współpracy. Czekamy na propozycje, sugestie i rady.
Moderatorzy zatroszczą się o to, by najlepsze teksty trafiły do FAQ.

Moderatorzy: Moderatorzy, Administratorzy

Awatar użytkownika
webster
Użytkownik
Posty: 1269
Rejestracja: 2009-10-06, 11:58
Lokalizacja: Gdańsk
Kontakt:

Linux IPsec HowTo

Post autor: webster »

Uruchamiane na Slackware 13.37
Client IPsec - StrongSwan (OpenSource) http://www.strongswan.org/

Dla Przykładu:
Adres zewnętrzny naszej sieci: 123.456.789.101
Adres sieci po naszej(klienta) stronie Tunelu: 10.0.0.0/24
Adres IP Serwera IPsec: 222.111.121.212
Adres sieci po stronie serwera IPsec: 20.0.0.0/24


Faza 1-sza - algorytm szyfrowania AES 256-bitowy
Faza 1-sza - algorytm skrótu SHA
Faza 1-sza - Diffie-Hellman Group 5
Faza 1-sza - czas życia SA 24 godziny
Faza 1-sza - klucz PSK: AlaMaKotaAKotMaAle

Faza 2-ga - algorytm szyfrowania AES 256-bitowy
Faza 2-ga - algorytm skrótu SHA
Faza 2-ga - PFS Tak (D/H Group 2)
Faza 2-ga - czas życia 8 godzin/500MB


Kompilacja StrongSwan - Można z paczki http://slackbuilds.org/repository/13.37 ... trongswan/
Albo z ręki:

Kod: Zaznacz cały

wget http://download.strongswan.org/strongswan-4.6.3.tar.gz
tar zxf strongswan-4.6.3.tar.gz
cd strongswan
./configure \
  --prefix=/usr \
  --sysconfdir=/etc \
  --localstatedir=/var \
  --mandir=/usr/man \
  --enable-cisco-quirks \
  --enable-shared \  
  --disable-static
make && make install
Konfiguracja
Plik /etc/ipsec.conf (To są tabulatory - WAŻNE !)

Kod: Zaznacz cały

config setup
        plutodebug=all
        nat_traversal=yes
        charonstart=yes
        plutostart=yes
        cachecrls=no
        crlcheckinterval=0
        strictcrlpolicy=no

conn %default
        compress=no
        authby=secret
        keyexchange=ikev1
        mobike=no

conn net-to-net
        left=123.456.789.101 (Jesli to serwer za NAT'em Wpisujesz ip lokalne!)
        leftsubnet=10.0.0.0/24
        leftfirewall=yes
        lefthostaccess=yes
        right=222.111.121.212
        rightsubnet=20.0.0.0/24
        auto=start
        keyingtries=%forever
        ike=aes256-sha1!
        ikelifetime=8h
        esp=aes256-sha1!
        keylife=24h
        type=tunnel
        pfs=yes
        pfsgroup=modp1024
Plik /etc/ipsec.secrets

Kod: Zaznacz cały

: PSK "AlaMaKotaAKotMaAle"
Podnosimy Klienta

Kod: Zaznacz cały

ipsec start
Spinamy tunel

Kod: Zaznacz cały

ipsec up net-to-net
Przypisujemy naszemu interfejsowi sieciowemu adres z naszej klasy strony Tunelu

Kod: Zaznacz cały

ifconfig eth0:0 10.0.0.1
Sprawdzamy czy tunel działa - pingujemy serwer po drugiej stronie tunelu

Kod: Zaznacz cały

ping 20.0.0.1

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Jeśli klient jest za NAT'em, należy otworzyć porty na BRAMIE i przekierować je na klienta w sieci
Dla przykładu:
Adres zewnętrzny naszej sieci: 123.456.789.101
Adres serwera wewnątrz naszej sieci który będzie się łączyć tunelem: 192.168.0.2
Interfejs WAN: eth1
Interfejs lokalny: eth0
Lecimy:

Kod: Zaznacz cały

iptables -A INPUT -p udp --dport 500 -j ACCEPT
iptables -A INPUT -p udp --dport 4500 -j ACCEPT
iptables -A INPUT -p tcp --dport 500 -j ACCEPT
iptables -A INPUT -p tcp --dport 4500 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p udp --dport 500 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p udp --dport 4500 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport 500 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport 4500 -j ACCEPT
iptables -t nat -A PREROUTING -d 123.456.789.101 -p udp --dport 500 -j DNAT --to 192.168.0.2
iptables -t nat -A PREROUTING -d 123.456.789.101 -p udp --dport 4500 -j DNAT --to 192.168.0.2
iptables -t nat -A PREROUTING -d 123.456.789.101 -p tcp --dport 500 -j DNAT --to 192.168.0.2
iptables -t nat -A PREROUTING -d 123.456.789.101 -p tcp --dport 4500 -j DNAT --to 192.168.0.2
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
No i koniec...

Pomocne komendy:

Kod: Zaznacz cały

ipsec status # Status połączenia
ipsec statusall # Status połączenia obszerniej
iptables -L # Sprawdzasz tablice iptables po połączeniu
ipsec listalgs # Lista dostępnych DH-Group kodowań itd
[*]Slackware IPsec ††† Slackware IPsec How To ††† Linux IPsec How To ††† slackware IPsec HowTo †††
††† Chaos Of The Mirror - Valheru †††
††† I ♥ SlackWare RuLeZ †††

Slackware Poland FaceBook
ODPOWIEDZ