User Tools

Site Tools


doc:appunti:linux:sa:ipsec

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:appunti:linux:sa:ipsec [2015/09/25 10:17] – [Initiator dietro NAT verso server passivo] niccolodoc:appunti:linux:sa:ipsec [2026/09/25 12:36] (current) – [SNAT con Shorewall >= 5.1.0] niccolo
Line 1: Line 1:
 ====== IPSEC con Debian GNU/Linux ====== ====== IPSEC con Debian GNU/Linux ======
  
 +===== Configurazione Debian 8 Jessie =====
 +
 +IPSEC - su una distribuzione Debian moderna - si basa sui servizi **Setkey** e **Racoon**, questi servizi si avviano con **systemd**.
 +
 +Configuriamo ad esempio  una VPN con nome **static-psk-test**, con indirizzi IP statici e pre-shared key. Gli indirizzi IP privati e pubblici in questione sono:
 +
 +(LAN 192.168.10.0/24) -> (Firewall 5.10.168.170)  <->  (Firewall 5.20.195.220) <- (LAN 192.168.20.0/24)
 +
 +In generale i file di configurazione sono questi (si esamina il firewall 5.10.168.170):
 +
 +**/etc/ipsec-tools.d/static-psk-test.conf**
 +
 +<file>
 +spdadd 192.168.10.0/24  192.168.20.0/24  any -P out ipsec esp/tunnel/5.10.168.170-5.20.195.220/unique;
 +spdadd 192.168.20.0/24  192.168.10.0/24  any -P in  ipsec esp/tunnel/5.20.195.220-5.10.168.170/unique;
 +</file>
 +
 +**/etc/racoon/racoon.conf**
 +
 +<file>
 +include "/etc/racoon/static-psk-test.conf";
 +</file>
 +
 +**/etc/racoon/static-psk-test.conf**
 +
 +<file>
 +remote 5.20.195.220 {
 +    exchange_mode main;
 +    proposal {
 +        encryption_algorithm 3des;
 +        hash_algorithm md5;
 +        authentication_method pre_shared_key;
 +        dh_group modp1024;
 +    }
 +    # Verifica l'identita' del peer su psk.txt con l'indirizzo IP.
 +    peers_identifier address "5.20.195.220";
 +    verify_identifier on;
 +    initial_contact on;
 +    lifetime time 86400 seconds;
 +    #proposal_check obey;
 +    #nat_traversal on;
 +}
 +
 +sainfo address 192.168.10.0/24 any address 192.168.20.0/24 any {
 +    encryption_algorithm 3des;
 +    authentication_algorithm hmac_md5,hmac_sha1;
 +    compression_algorithm deflate;
 +    lifetime time 43200 seconds;
 +}
 +</file>
 +
 +**NOTA**: Se non si usa l'opzione **proposal_check obey** è necessario impostare le stesse identiche opzioni tra le due parti, compresi i **lifetime time**, ecc., altrimenti la connessione fallisce. Per effettuare il debug dei parametri non corrispondenti è necessario impostare almeno **log debug** in **/etc/racoon/racoon.conf**.
 +
 +**/etc/racoon/psk.txt**
 +
 +<file>
 +5.20.195.220    nai5Ohmo
 +</file>
 +
 +Per fermare e riavviare il servizio:
 +
 +<code>
 +systemctl stop racoon
 +systemctl stop setkey
 +
 +systemctl start setkey
 +systemctl start racoon
 +</code>
 +
 +Il traffico IPSEC va ovviamente gestito in maniera opportuna poiché non corrisponde al criterio standard MASQUERADE di iptables. Ad esempio [[#configurazione_firewall_shorewall|Shorewall]] ha delle direttive apposite per gestire IPSEC.
 +
 +In generale si potrà testare la VPN con un ping, a patto di usare gli indirizzi IP sul lato LAN:
 +
 +<code>
 +ping -I 192.168.10.254 192.168.20.1
 +</code>
 ===== Pezzi di IPSEC per Linux ===== ===== Pezzi di IPSEC per Linux =====
  
Line 545: Line 621:
 </file> </file>
  
-=== Mascheramento (SNAT) ===+=== Mascheramento (SNAT) con Shorewall < 5.1.0 ===
  
 Si può utilizzare l'indirizzo IP locale del firewall IPSEC (**192.168.100.1**) per mascherare tutta la rete locale (**192.168.100.0/24**) che esce verso la rete privata remota (**10.51.49.128/26**) via IPSEC, basta aggiungere la seguente regola in **''/etc/shorewall/masq''**: Si può utilizzare l'indirizzo IP locale del firewall IPSEC (**192.168.100.1**) per mascherare tutta la rete locale (**192.168.100.0/24**) che esce verso la rete privata remota (**10.51.49.128/26**) via IPSEC, basta aggiungere la seguente regola in **''/etc/shorewall/masq''**:
Line 560: Line 636:
 SNAT        all  --  192.168.100.0/24  10.51.49.128/26  policy match dir out pol ipsec to:192.168.100.1 SNAT        all  --  192.168.100.0/24  10.51.49.128/26  policy match dir out pol ipsec to:192.168.100.1
 </code> </code>
 +
 +==== SNAT con Shorewall >= 5.1.0 ====
 +
 +È possibile fare il source NAT del traffico verso una VPN IPSEC con delle opportune righe nel file **/etc/shorewall/snat**.
 +
 +<file>
 +#ACTION                 SOURCE                  DEST
 +
 +# Rete locale 10.10.0.0/16.
 +SNAT(192.168.70.1)      10.10.0.0/16            net0:192.168.200.0/24   -       -       yes
 +SNAT(192.168.70.1)      10.10.0.0/16            net0:192.168.200.0/24
 +
 +# Indirizzo punto-punto di tunnel OpenVPN.
 +SNAT(192.168.70.1)      172.16.30.70            net0:192.168.200.0/24   -       -       yes
 +SNAT(192.168.70.1)      172.16.30.70            net0:192.168.200.0/24
 +
 +# Rete remota 10.11.12.0/24 (via OpenVPN).
 +SNAT(192.168.70.1)      10.11.12.0/24           net0:192.168.200.0/24   -       -       yes
 +SNAT(192.168.70.1)      10.11.12.0/24           net0:192.168.200.0/24
 +</file>
 +
 +  * L'indirizzo locale da usare come SNAT ACTION deve essere quello del firewall che rientra nella **leftsubnet** di ipsec.conf.
 +  * L'indirizzo source può essere quello della LAN, l'indirizzo punto-punto di una OpenVPN, la rete remota raggiungibile via OpenVPN, ecc.
 +  * Nell'esempio sopra **net0** è l'interfaccia esterna che gestisce IPSEC e l'indirizzamento è la **rightsubnet** di ipsec.conf.
 +
 ===== Glossario ===== ===== Glossario =====
  
doc/appunti/linux/sa/ipsec.1443169068.txt.gz · Last modified: by niccolo