In particolare una VPN Site-TO-Site ci consente di instaurare un tunnel sicuro che passa trà diversi router e provider, rimanendo completamente trasparente ai client, i quali vedranno un solo HOP tra loro e la sede remota.
IPsec è un protocollo che opera a livello 3 del modello ISO/OSI, rimanendo trasparente alle applicazioni che non devono avere nessun particolare prerequisito per interoperare. (beneficiare delle sue funzionalità)
Inoltre ci offre le seguenti caratteristiche di sicurezza:
- Confidentiality: Tramite crittografia simmetrica dei dati. I principali protocolli utilizzati sono DES 3DES e AES. In questo modo se un malintenzionato dovesse intercettare una comunicazione, non sarà in grado di interpretarla.
- Integrity: L’integrità dei dati in transito è garantita dal calcolo dell’HASH tramite MD5 o SHA.
- Authentication: Tramite vari metodi come Pre-Shared-Key e certificati digitali, i due “interlocutori” potranno garantire la propria identità.
- Secure key Exchange: Consente ai due peers di stabilire una chiave condivisa e segreta utilizzando un canale di comunicazione pubblico, senza la necessità che le due parti si siano scambiate informazioni precedentemente. Questo meccanismo viene messo in atto con il protocollo crittografico Diffie-Hellman. La chiave ottenuta verrà impiegata per cifrare con crittografia simmetrica le comunicazioni successive.
Per offrire queste caratteristiche di sicurezza e scalabilità, IPsec si avvale di vari protocolli: il principale è IKE (Internet Key Exchange), l’obbiettivo di questo protocollo è l’autenticazione delle parti e lo scambio sicuro delle chiavi simmetriche,creando un framework che garantirà comunicazioni sicure.
Un tunnel VPN IPsec viene costruito in due fasi di IKE:
Fase 1 di IKE
All’inizio della prima fase i due endpoint stabiliscono una IKE Security Association negoziando i protocolli di crittografia e autenticazione supportati, se le corrispondenze vengono soddisfatte inizia il processo di scambio sicuro delle chiavi precondivise tramite l’algoritmo Diffie-Hellman.
A questo punto è stato stabilito un primo tunnel chiamato ISAKMP che proteggerà le successive comunicazioni.
Fase 2 di IKE
Nella seconda fase (protetta da ISAKMP) i peers devono stabilire le IPsec Security Association, negoziando il protocollo per la sicurezza (ESP o AH), gli algoritmi di integrity e quelli crittografici (3DES o AES).
A questo punto viene stabilito il vero tunnel IPsec attraverso il quale transiteranno i dati criptati.
C’è da dire che contrariamente alla prima fase, nella seconda il tunnel creato è mono direzionale, quindi per una corretta comunicazione full-duplex vengono instaurati due tunnel.
Come è stato anticipato, per garantire Integrity e Authentication possono essere utilizzati due protocolli: AH(Authentication Header) o ESP(Encapsulating Security Payload) ,quest’ultimo è consigliato in quanto offre anche crittografia. Entrambi possono operare in due modalità, Transport Mode e Tunnel Mode. Con il Transport, l’header ip del pacchetto rimane inalterato, ed è solitamente utilizzato nelle reti dove un incremento della dimensione del pacchetto può generare problemi (remote vpn client), mentre con il tunnel l’intero pacchetto viene incapsulato in un Header IPsec ed è maggiormente utilizzato per vpn Site-TO-Site.
Considerazioni
Quando si progetta una vpn si deve cercare di evitare il nat tra le due reti private, infatti quest’ultimo alterando l’header dei pacchetti contrasterebbe con la verifica dell’integrità eseguita da IPsec. Qualora ciò non fosse possibile, cioè nel caso di overlap tra le due network private, sarà necessario attivare la funzione NAT Traversal, che verrà negoziata durante la fase 1 di IKE.
Implementazione
Per questo scenario utilizzeremo due Cisco ASA 5505 come Headend Vpn Device
ASA-1
Inside 192.168.1.0/24
Outside 172.6.3.1/24
ASA-2
Inside 192.168.2.0/24
Outside 172.6.4.1/24
Partiamo con la configurazione di ASA-1
Configurazione ike fase1
ASA-1# conf term
ASA-1(config)# crypto isakmp policy 1
Entra nella modalità isakmp
ASA-1(config)# crypto isakmp enable outside
Abilita nell’interfaccia outside
ASA-1(config-isakmp)# authentication pre-share
Indica che l’autenticazione è con chiave pre-condivisa
ASA-1(config-isakmp)# hash sha
Indica che per l’hash utilizzeremo l’algoritmo sha
ASA-1(config-isakmp)# encryption aes 128
Per la crittografia verrà utilizzato AES a 128bit
ASA-1(config-isakmp)# group 2
Per lo scambio di chiavi viene utilizzato l’algoritmo DH group2 a 1024Bit
ASA-1(config-isakmp)# lifetime 86400
Tempo di validità delle SA espresso in secondi(24 ore)
ASA-1(config-isakmp)# exit
Configurare ike fase2 (protetta da isakmp)
ASA-1(config)# crypto ipsec transform-set MYSET esp-aes esp-sha-hmac
ASA-1(cfg-crypto-trans)# exit
Crea un transform set chiamato MYSET, ed indica che deve usare AES come crittografia e SHA come hash
ASA-1(config)# access-list 101 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.254
Questa ACL identifica il traffico che sarà protetto da IPsec
ASA-1(config)# crypto map Cmap1 1 match address 101
Crea un crypto map e associa l’acl 101
ASA-1(config)# crypto map Cmap1 1 set peer 172.6.4.1
Specifica l’indirizzo ip dell’altro peer
ASA-1(config)# crypto map Cmap1 1 set transform-set MYSET
Applica al crypto map il transform-set precedentemente creato
ASA-1(config)# crypto map Cmap1 1 interface outside
Applica il crypto-map all’interfaccia outside
ASA-1(config)# tunnel-group 172.6.4.1 type ipsec-l2l
ASA-1(config)# tunnel-group 172.6.4.1 ipsec-attributes
ASA-1(config)# pre-shared-key Pa$$word
Creo un tunnel group di tipo IPsec e assegno la pre-shared key
La configurazione dell’ ASA-2 sarà grosso modo speculare:
ASA-1# conf term
ASA-1(config)# crypto isakmp policy 1
ASA-1(config)# crypto isakmp enable outside
ASA-1(config-isakmp)# authentication pre-share
ASA-1(config-isakmp)# hash sha
ASA-1(config-isakmp)# encryption aes 128
ASA-1(config-isakmp)# group 2
ASA-1(config-isakmp)# lifetime 86400
ASA-1(config-isakmp)# exit
ASA-1(config)# crypto ipsec transform-set MYSET esp-aes esp-sha-hmac
ASA-1(cfg-crypto-trans)# exit
ASA-1(config)# access-list 101 permit ip 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.254
ASA-1(config)# crypto map Cmap1 1 match address 101
ASA-1(config)# crypto map Cmap1 1 set peer 172.6.3.1
ASA-1(config)# crypto map Cmap1 1 set transform-set MYSET
ASA-1(config)# crypto map Cmap1 1 interface outside
ASA-1(config)# tunnel-group 172.6.3.1 type ipsec-l2l
ASA-1(config)# tunnel-group 172.6.3.1 ipsec-attributes
ASA-1(config)# pre-shared-key Pa$$word
Ora basterà eseguire un “ping” da una delle due reti verso l’altra per far salire il tunnel,il primo pacchetto potrebbe scadere perché sarà proprio quello che indicherà al primo dispositivo detto Initiator di fare la proposta al secondo detto Responder.
Debug e Troubleshooting
Debug crypto isakmp
Per esaminare la negoziazione IKE
show crypto isakmp sa
Per vedere se le ISAKMP SA sono state negoziate con successo
Show crypto isakmp key
Per vedere la corrispondenza dei peer con le preshared key
Show crypto isakmp policy
Per visualizzare le policy
Show crypto ipsec sa
Per vedere se le IPsec SA sono state negoziate correttamente
Show isakmp stat
Per statistiche di vario tipo
Debug crypto ipsec
Per il debug di IPsec
View Comments (8)
Interessante, è quasi quello che devo fare io, site-to-site, ma non ho la nuvolina di internet bensi una rete mpls, e 2 fw diversi, 1 asa 5505 e un watchguard firebox ;-)
Ciao, beh IPsec può essere implementata su qualsiasi tecnologia che consente il trasporto IP.
Per quanto riguarda gli apparati misti, in TEORIA non ci dovrebbero essere problemi, l'importante è far matchare i protocolli di crittografia, autenticazione,ash ed i timeout. Personalmente ho realizzato con successo vpn trà cisco pix e zyxel zywall.
Ciao
Ho visto la tua competenza, ti chiedo un parere per una vpn fra IPAD e router ZyWALL USG100, sull'IPAD ho configurato L2TP e la stessa cosa sullo ZyWALL, non sono riuscito a fare funzionare il tuttto, l'help desk mi ha detto che la vpn non funziona se il router si trova a valle di un nat (fatto dal router per provider che da la connessione Internet). Considerato che sta funzionando un client ipsec su pc, ho pensato di utilizzare il client ipsec cisco dell'IPAD ma non so come configurare sullo ZxWALL quello che CISCO chiama "nome gruppo"
Grazie
Ciao, effettivamente un firewall dietro nat può dare diversi problemi con le vpn,se ci fai caso l'ho scritto anche nell'articolo.
Gli apparati zyxel non li conosco, comunque nome gruppo potrebbe indicare l'algoritmo di scambio chiavi, prova a mettere il numero "2" come DH Group2.
Qui comunque ho trovato una buona guida:
ftp://ftp.zyxel.it/guide/utm/utm_rsc_vpn.pdf
scusa avevo letto male, Sullo zyxel dovrebbe essere "key group"
Grazie per per l'articolo su richiesta :)
Ero già riuscito a configurare la vpn, ma in questo modo sò quello che stò facendo.
Mi scusi è possibile creare una vpn trà un asa e un router 837?
Certo, sul router deve essere presente una versione IOS k9.
Ed i comandi sono leggermente differenti.