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ó.