Com configurar una VPN basada en IPsec amb Strongswan a Debian i Ubuntu
strongSwan és una implementació VPN (Virtual Private Network) basada en IPsec de codi obert, multiplataforma, amb totes les funcions i àmpliament utilitzada que s'executa a Linux, FreeBSD, OS X, Windows, Android i iOS. Es tracta principalment d'un dimoni de claus que admet els protocols d'intercanvi de claus d'Internet (IKEv1 i IKEv2) per establir associacions de seguretat (SA) entre dos iguals.
Aquest article descriu com configurar passarel·les VPN IPSec de lloc a lloc mitjançant strongSwan als servidors Ubuntu i Debian. Per lloc a lloc volem dir que cada passarel·la de seguretat té una subxarxa darrere. A més, els companys s'autenticaran entre ells mitjançant una clau precompartida (PSK).
Recordeu substituir les IP següents per les IP del món real per configurar el vostre entorn.
Lloc 1 Gateway (tecmint-devgateway)
OS 1: Debian or Ubuntu Public IP: 10.20.20.1 Private IP: 192.168.0.101/24 Private Subnet: 192.168.0.0/24
Gateway del lloc 2 (tecmint-prodgateway)
OS 2: Debian or Ubuntu Public IP: 10.20.20.3 Private IP: 10.0.2.15/24 Private Subnet: 10.0.2.0/24
Pas 1: habilitar el reenviament de paquets del nucli
1. En primer lloc, heu de configurar el nucli per habilitar el reenviament de paquets afegint les variables del sistema adequades al fitxer de configuració /etc/sysctl.conf a les dues passarel·les de seguretat.
$ sudo vim /etc/sysctl.conf
Busqueu les línies següents i descomenteu-les i configureu-ne els valors tal com es mostra (llegiu els comentaris al fitxer per obtenir més informació).
net.ipv4.ip_forward = 1 net.ipv6.conf.all.forwarding = 1 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.send_redirects = 0
2. A continuació, carregueu la nova configuració executant l'ordre següent.
$ sudo sysctl -p
3. Si teniu un servei de tallafocs UFW habilitat, heu d'afegir les regles següents al fitxer de configuració /etc/ufw/before.rules just abans de les regles de filtre a qualsevol de les passarel·les de seguretat.
Lloc 1 Gateway (tecmint-devgateway)
*nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.0.2.0/24 -d 192.168.0.0/24 -j MASQUERADE COMMIT
Gateway del lloc 2 (tecmint-prodgateway)
*nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 192.168.0.0/24 -d 10.0.2.0/24 -j MASQUERADE COMMIT
4. Un cop s'hagin afegit les regles del tallafoc, apliqueu els nous canvis reiniciant UFW tal com es mostra.
$ sudo ufw disable $ sudo ufw enable
Pas 2: instal·lació de strongSwan a Debian i Ubuntu
5. Actualitzeu la memòria cau de paquets a les dues passarel·les de seguretat i instal·leu el paquet strongswan mitjançant el gestor de paquets APT.
$ sudo apt update $ sudo apt install strongswan
6. Un cop finalitzada la instal·lació, l'script d'instal·lació iniciarà el servei strongswan i l'habilitarà per iniciar-se automàticament a l'arrencada del sistema. Podeu comprovar el seu estat i si està habilitat mitjançant l'ordre següent.
$ sudo systemctl status strongswan.service $ sudo systemctl is-enabled strongswan.service
Pas 3: Configuració de passarel·les de seguretat
7. A continuació, heu de configurar les passarel·les de seguretat mitjançant el fitxer de configuració /etc/ipsec.conf.
Lloc 1 Gateway (tecmint-devgateway)
$ sudo cp /etc/ipsec.conf /etc/ipsec.conf.orig $ sudo nano /etc/ipsec.conf
Copieu i enganxeu la configuració següent al fitxer.
config setup charondebug="all" uniqueids=yes conn devgateway-to-prodgateway type=tunnel auto=start keyexchange=ikev2 authby=secret left=10.20.20.1 leftsubnet=192.168.0.101/24 right=10.20.20.3 rightsubnet=10.0.2.15/24 ike=aes256-sha1-modp1024! esp=aes256-sha1! aggressive=no keyingtries=%forever ikelifetime=28800s lifetime=3600s dpddelay=30s dpdtimeout=120s dpdaction=restart
Gateway del lloc 2 (tecmint-prodgateway)
$ sudo cp /etc/ipsec.conf /etc/ipsec.conf.orig $ sudo nano /etc/ipsec.conf
Copieu i enganxeu la configuració següent al fitxer.
config setup charondebug="all" uniqueids=yes conn prodgateway-to-devgateway type=tunnel auto=start keyexchange=ikev2 authby=secret left=10.20.20.3 leftsubnet=10.0.2.15/24 right=10.20.20.1 rightsubnet=192.168.0.101/24 ike=aes256-sha1-modp1024! esp=aes256-sha1! aggressive=no keyingtries=%forever ikelifetime=28800s lifetime=3600s dpddelay=30s dpdtimeout=120s dpdaction=restart
Aquest és el significat de cada paràmetre de configuració:
- config setup: especifica informació de configuració general per a IPSec que s'aplica a totes les connexions.
- charondebug: defineix quanta sortida de depuració de Charon s'ha de registrar.
- identificadors únics: especifica si un identificador de participant concret s'ha de mantenir únic.
- conn prodgateway-to-devgateway: defineix el nom de la connexió.
- tipus: defineix el tipus de connexió.
- automàtic: com gestionar la connexió quan s'inicia o es reinicia IPSec.
- keyexchange: defineix la versió del protocol IKE que cal utilitzar.
- authby: defineix com s'han d'autenticar els companys entre ells.
- esquerra: defineix l'adreça IP de la interfície de xarxa pública del participant esquerre.
- leftsubnet: indica la subxarxa privada darrere del participant esquerre.
- dreta: especifica l'adreça IP de la interfície de xarxa pública del participant adequat.
- rightsubnet: indica la subxarxa privada darrere del participant esquerre.
- ike: defineix una llista d'algoritmes d'encriptació/autenticació IKE/ISAKMP SA que s'utilitzaran. Podeu afegir una llista separada per comes.
- esp: defineix una llista d'algoritmes d'encriptació/autenticació ESP que s'utilitzaran per a la connexió. Podeu afegir una llista separada per comes.
- agressiu: indica si cal utilitzar el mode agressiu o principal.
- keyingtries: indica el nombre d'intents que s'han de fer per negociar una connexió.
- ikellifetime: indica quant de temps hauria de durar el canal de claus d'una connexió abans de ser renegociada.
- durada: defineix quant de temps ha de durar una instància concreta d'una connexió, des de la negociació correcta fins a la caducitat.
- dpddelay: especifica l'interval de temps amb el qual els missatges R_U_THERE/intercanvis d'INFORMACIÓ s'envien al parell.
- dpdtimeout: especifica l'interval de temps d'espera, després del qual s'eliminen totes les connexions a un parell en cas d'inactivitat.
- dpdaction: defineix com utilitzar el protocol Dead Peer Detection (DPD) per gestionar la connexió.
Per obtenir més informació sobre els paràmetres de configuració anteriors, llegiu la pàgina man ipsec.conf executant l'ordre.
$ man ipsec.conf
Pas 4: Configuració de PSK per a l'autenticació peer-to-peer
8. Després de configurar ambdues passarel·les de seguretat, genereu un PSK segur que l'utilitzin els iguals mitjançant l'ordre següent.
$ head -c 24 /dev/urandom | base64
9. A continuació, afegiu el PSK al fitxer /etc/ipsec.secrets a les dues passarel·les.
$ sudo vim /etc/ipsec.secrets
Copieu i enganxeu la línia següent.
------- Site 1 Gateway (tecmint-devgateway) ------- 10.20.20.1 10.20.20.3 : PSK "qLGLTVQOfqvGLsWP75FEtLGtwN3Hu0ku6C5HItKo6ac=" ------- Site 2 Gateway (tecmint-prodgateway) ------- 10.20.20.3 10.20.20.1 : PSK "qLGLTVQOfqvGLsWP75FEtLGtwN3Hu0ku6C5HItKo6ac="
10. Reinicieu el programa IPSec i comproveu-ne l'estat per veure les connexions.
$ sudo ipsec restart $ sudo ipsec status
11. Finalment, verifiqueu que podeu accedir a les subxarxes privades des de qualsevol de les passarel·les de seguretat executant una ordre ping.
$ ping 192.168.0.101 $ ping 10.0.2.15
12. A més, podeu aturar i iniciar IPSec tal com es mostra.
$ sudo ipsec stop $ sudo ipsec start
13. Per obtenir més informació sobre les ordres IPSec per mostrar connexions manualment i més, consulteu la pàgina d'ajuda d'IPSec.
$ ipsec --help
Això és tot! En aquest article, hem descrit com configurar una VPN IPSec de lloc a lloc mitjançant strongSwan als servidors Ubuntu i Debian, on ambdues passarel·les de seguretat es van configurar per autenticar-se entre elles mitjançant un PSK. Si teniu cap pregunta o pensament per compartir, poseu-vos en contacte amb nosaltres mitjançant el formulari de comentaris que trobareu a continuació.