Uživatelské nástroje

Nástroje pro tento web


ipsec

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revizePředchozí verze
Následující verze
Předchozí verze
ipsec [2017/02/27 16:07] – [Teorie] djbuldogipsec [2025/08/28 10:09] (aktuální) – upraveno mimo DokuWiki 127.0.0.1
Řádek 34: Řádek 34:
   * Možnosti autentizace   * Možnosti autentizace
     * Veřejným klíčem     * Veřejným klíčem
-      * RSA nebo X.509+      * RSA nebo certifikát X.509
     * Sdíleným klíčem (PSK) - textový řetězec     * Sdíleným klíčem (PSK) - textový řetězec
     * Extensible Authentication Protocol (EAP)     * Extensible Authentication Protocol (EAP)
Řádek 45: Řádek 45:
       * určen primárně pro autentizaci přes login       * určen primárně pro autentizaci přes login
  
-===== IKEv1 ===== +  * Internet Key Exchange (IKE) 
 +    * slouží k ustanovení SA 
 +      * typicky se přes IKE ustanoví prvotní řídící SA  
 +      * následně se vytváří další child-SA pro vlastní komunikaci (například oddělené tunely) 
 +    * aktuálně existují dvě verze: IKEv1, IKEv2 
 +    * naslouchá na portu UDP/500 
 +==== IKEv1 ==== 
  
-  * **Main mode** +  * fáze 1 
-    * používá se zde Internet Key Exchange (IKE) +    * vytváří prvotní Security Association (SA)
-      * ověří obě strany a ustanoví prvotní bezpečnou komunikaci (SA - security associations)+
         * dohoda na velikosti klíčů, šifrovacím alg, hash funkci, platnosti klíče         * dohoda na velikosti klíčů, šifrovacím alg, hash funkci, platnosti klíče
         * vygenerování klíče - každá strana pošle vygenerované číslo, k němu se přidá tajné sdílené a výsledek je klíč         * vygenerování klíče - každá strana pošle vygenerované číslo, k němu se přidá tajné sdílené a výsledek je klíč
-      * naslouchá na portu UDP/500 (obě strany) +    * u Cisca implementuje ISAKMP 
-      * u Cisca implementuje ISAKMP +    * u Openswan implementuje Pluto 
-      * u Openswan implementuje Pluto +    existují dva režimy 
-  * **Quick mode** +      * **Main mode** - chrání identitu komunikujicích uzlů 
-    vlastní přenos šifrovaných dat +      **Aggressive mode** - zjednodušený main mode, nechrání identitu uzlů (nevyžaduje veřejnou IP) 
-    u Cisca se označuje jako IPsec +  fáze 2 
-    * u Openswan jako Klips +    * **Quick mode** 
-  * **Aggressive mode** +      vytvaří Child Security Associations pro jiné služby (např. vlastní IPSec tunel) na základě SA z fáze 1 
-    zjednodušené spojení Main a Quick režimu +      * u Cisca se označuje jako IPsec 
-    používá se klientů bez pevné IP adresy +      u Openswan jako Klips
-    ověření klienta se posiluje autentizaci Xauth+
  
   * problémy s NAT/PAT   * problémy s NAT/PAT
Řádek 77: Řádek 81:
     * komunikaci zde navazuje klient až po zadaní auth (bez X-Auth může navázat i server)     * komunikaci zde navazuje klient až po zadaní auth (bez X-Auth může navázat i server)
  
-===== IKEv2 ===== +==== IKEv2 ==== 
  
 +  * fáze navazování spojení jsou obdobné
   * **NAT-T**   * **NAT-T**
     * umožňuje průchod přes dynamický NAT jako Masquerade     * umožňuje průchod přes dynamický NAT jako Masquerade
Řádek 101: Řádek 106:
 ===== Strongswan prakticky ===== ===== Strongswan prakticky =====
  
-  * podle [[https://raymii.org/s/tutorials/IPSEC_vpn_with_CentOS_7.html|návodu pro CentOS]] 
   * nainstalovat balíček strongswan (nevyžaduje žádné speciální kernel moduly)   * nainstalovat balíček strongswan (nevyžaduje žádné speciální kernel moduly)
-  konfiguruje se úpravou tří souborů ve adresáři /etc/strongswan + 
-    * **ipsec.conf** - definice tunelů a globálních nastavení+==== Verze od 5.2.0 ====  
 + 
 +  zavádí **[[https://wiki.strongswan.org/projects/strongswan/wiki/swanctl|swanctl]]** - nástroj na konfiguraci, ovládání a monitorování IKE daemonu místo ipsec skriptů 
 +  * konfigurace se provádí přes soubor **swanctl.conf**, který nahrazuje ipsec.conf a ipsec.secure 
 +  * klíče, certifikáty a CA se vkládají do podadresářů ve složce /etc/strongswan/swanctl/ 
 + 
 +  * stále lze používat starší konfigurační soubory i binárky popsané u předchozí verze, dokonce současně s novými (některé spojení starým způsobem, některé novým) 
 + 
 +  * služba se spouští pořád stejně přes  
 +    * přes systemd (systemctl start/stop strongswan) 
 +    * přímo zavoláním binárky strongswan start (na Debian ipsec start) 
 + 
 +  * místo left/right se v konciguraci používá local/remote 
 +  * po změně konfigurace je nejprve potřeba zavolat načtení ''swanctl %%--%%load-all'' 
 + 
 +  * IPSec spojení (child-SA) lze ručně zapnout/vypnout příkazy 
 +    * ''%%--%%help'' nejdřív vypíše subcommands a pro jejich popis je potřeba zavolat znovu (například ''%%--%%initiate %%--%%help''
 +    * narozdíl od starší verze jsou child-SA pojmenované a každý lze spustit jen jednou 
 +<code> 
 +swanctl --initiate --child <name> [--ike <name>] [--timeout <s>] [--raw|--pretty] 
 +swanctl --terminate --child <name> | --ike <name | --child-id <id> | --ike-id <id> [--timeout <s>] [--raw|--pretty] 
 +</code> 
 + 
 +  * definovaná spojení (SA) se vypíšou příkazem ''swanctl %%--%%list-con'' (nahrazuje ''strongswan statusall''
 +  * aktivní SA se zjišťují příkazem ''swanctl %%--%%list-sas'' (nahrazuje ''strongswan status''
 +  * aktivutu SA lze sledovat přes ''swanctl %%--%%log'' nebo ''swanctl %%--%%monitor-sa'' 
 + 
 +==== Verze před 5.2.0 ====  
 + 
 +  * konfiguruje se úpravou tří souborů 
 +    * **ipsec.conf** - definice spojení/tunelů a globálních nastavení
     * **ipsec.secrets** - definice hesel k šifrovacím klíčům a případné uživatelské účty (EAP). Musí zde být uvedeny také všechny používané privátní širfrovací klíče, aby je strongswan našel.     * **ipsec.secrets** - definice hesel k šifrovacím klíčům a případné uživatelské účty (EAP). Musí zde být uvedeny také všechny používané privátní širfrovací klíče, aby je strongswan našel.
     * **strongswan.conf** - zatím jsem nikdy nepoužil :)     * **strongswan.conf** - zatím jsem nikdy nepoužil :)
 +  * případné klíče, certifikáty nebo důvěryhodné CA se umísťují do podadresáře private, certs a cacerts
 +  * na Debian je konfigurační adresář /etc/ipsec, na CentOS /etc/strongswan
  
-  * start se pak provádí normálně přes systemctl +  * při [[https://wiki.strongswan.org/projects/strongswan/wiki/ConnSection|definici spojení]] se používá označení left/right pro jednotlivé strany
-  * na CentOS je hlavní binárka nazvaná ''strongswan'', na Debian se nazývá přímo ''ipsec'' +
- +
-  * při [[https://wiki.strongswan.org/projects/strongswan/wiki/ConnSection|definici tunelu]] se používá označení left/right pro jednotlivé strany+
   * IPsec by měl sám poznat, zda je left nebo right na zákldě znalosti lokálního prostředí   * IPsec by měl sám poznat, zda je left nebo right na zákldě znalosti lokálního prostředí
   * lepší je ale cfg tvorit tak, že left je strana lokální a right vzdálená   * lepší je ale cfg tvorit tak, že left je strana lokální a right vzdálená
  
-  * vygenerovat klíče/certifikáty+  * služba se spouští 
 +    * přes systemd (''systemctl start/stop strongswan'')  
 +    * přímo zavoláním binárky ''strongswan start'' (na Debian ''ipsec start''
 +    * měl by se používat jen jeden způsob - na CentOS mi systemd neuměl zastavit strongswan spuštěný přímo 
 + 
 +  * IPSec spojení lze ručně zapnout/vypnout příkazem ''strongswan up/down <název_conn>'' 
 +    * pozor: pokud se příkaz ''up'' zavolá víckrát, vytvoří se zbytečně více child-SA 
 +  * Informace o definovaných a navázaných spojení se zobrazí příkazem ''strongswan statusall'' 
 + 
 +==== Příklad IPsec serveru pro Windows 7 ==== 
 + 
 +  * podle [[https://raymii.org/s/tutorials/IPSEC_vpn_with_CentOS_7.html|návodu pro CentOS]] 
 +  * vygenerovat klíče/certifikáty ([[https://wiki.strongswan.org/projects/strongswan/wiki/SimpleCA|Strongswan simpleCA]])
     * **Self signed root CA** - certifikační autorita pro generování certifikátů (pokud ještě nemáme)     * **Self signed root CA** - certifikační autorita pro generování certifikátů (pokud ještě nemáme)
     * **VPN Host key** - používá se k identifikaci serveru u klientů. Musí prý v DN (Distinguished Name) nebo SAN (subject Alternative Name) obsahovat IP adresu nebo doménové jméno stroje. V opačném případě nemusí být akceptován.     * **VPN Host key** - používá se k identifikaci serveru u klientů. Musí prý v DN (Distinguished Name) nebo SAN (subject Alternative Name) obsahovat IP adresu nebo doménové jméno stroje. V opačném případě nemusí být akceptován.
Řádek 136: Řádek 181:
  
 ==== Poznámky, Tipy, FAQ ====  ==== Poznámky, Tipy, FAQ ==== 
 +
 +=== Ladění ===
 +
 +  * prohlédnout logy ''systemctl status strongswan''
 +  * [[https://lists.strongswan.org/pipermail/users/2010-June/000378.html|zkontrolovat certifikáty]]
 +    *  ''strongswan listcerts''
 +    * důležitá je kontrola výskytu řetězce "has priv key"
 +<code>
 +  pubkey:    RSA 2048 bits, has private key
 +</code>
 +
 +=== Obnova tunelu ===
 +
 +  * [[https://lists.strongswan.org/pipermail/users/2014-December/006998.html|zapnutí automatického zapínání tunelu]]
 +
 +<code>
 +auto=route
 +dpdaction=restart
 +</code>
  
 === Průchod IPsec jádrem === === Průchod IPsec jádrem ===
Řádek 143: Řádek 207:
     * odchozí IPsec pakety pouze zabalené (šifrované)     * odchozí IPsec pakety pouze zabalené (šifrované)
  
-  * iptables umí pracovat s IPsec pakety zabalenými i rozbalenými ([[http://inai.de/images/nf-packet-flow.png|schéma]])+  * iptables umí pracovat s IPsec pakety zabalenými i rozbalenými
 <code> <code>
 iptables -t filter -I OUTPUT -p esp -j DROP iptables -t filter -I OUTPUT -p esp -j DROP
Řádek 154: Řádek 218:
 </code> </code>
  
-  * IPsec je implementován přes kernel xfrm+  * IPsec je implementován přes kernel xfrm, přes iptables prochází 2x ([[http://inai.de/images/nf-packet-flow.png|schéma]])
  
 === Virtuální IP adresy === === Virtuální IP adresy ===
ipsec.1488208076.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki