Sådan oprettes IPsec-baseret VPN med Strongswan på Debian og Ubuntu


strongSwan er en open source, cross-platform, fuldt udstyret og udbredt IPsec-baseret VPN (Virtual Private Network) implementering, der kører på Linux, FreeBSD, OS X, Windows, Android og iOS. Det er primært en nøgledemon, der understøtter Internet Key Exchange-protokoller (IKEv1 og IKEv2) for at etablere sikkerhedsforeninger (SA) mellem to jævnaldrende.

Denne artikel beskriver, hvordan du opretter en site-to-site IPSec VPN-gateways ved hjælp af strongSwan på Ubuntu- og Debian-servere. Med site-to-site mener vi, at hver sikkerhedsgateway har et undernet bag sig. Derudover godkender jævnaldrende hinanden ved hjælp af en præ-delt nøgle (PSK).

Husk at erstatte følgende IP'er med dine virkelige IP'er for at konfigurere dit miljø.

Site 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

Site 2 Gateway (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

Trin 1: Aktivering af videresendelse af kernepakker

1. Først skal du konfigurere kernen, så den videresender pakke ved at tilføje de relevante systemvariabler i /etc/sysctl.conf-konfigurationsfilen på begge sikkerhedsgateways.

$ sudo vim /etc/sysctl.conf

Se efter de følgende linjer, og fjern kommentarerne til dem, og indstil deres værdier som vist (læs kommentarer i filen for at få flere oplysninger).

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. Indlæs derefter de nye indstillinger ved at køre følgende kommando.

$ sudo sysctl -p

3. Hvis du har en UFW-firewall-tjeneste aktiveret, skal du tilføje følgende regler til konfigurationsfilen /etc/ufw/before.rules lige før filterreglerne i en af sikkerhedsportalerne.

Site 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

Site 2 Gateway (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. Når firewallregler er tilføjet, skal du anvende de nye ændringer ved at genstarte UFW som vist.

$ sudo ufw disable 
$ sudo ufw enable

Trin 2: Installation af strongSwan i Debian og Ubuntu

5. Opdater din pakke-cache på begge sikkerhedsgateways, og installer strongswan-pakken ved hjælp af APT-pakkehåndteringen.

$ sudo apt update
$ sudo apt install strongswan 

6. Når installationen er afsluttet, starter installationsscriptet strongswan-tjenesten og gør det muligt automatisk at starte ved systemstart. Du kan kontrollere dens status, og om den er aktiveret ved hjælp af følgende kommando.

$ sudo systemctl status strongswan.service
$ sudo systemctl is-enabled strongswan.service

Trin 3: Konfiguration af sikkerhedsgateways

7. Dernæst skal du konfigurere sikkerhedsgateways ved hjælp af /etc/ipsec.conf-konfigurationsfilen.

Site 1 Gateway (tecmint-devgateway)

$ sudo cp /etc/ipsec.conf /etc/ipsec.conf.orig
$ sudo nano /etc/ipsec.conf 

Kopier og indsæt følgende konfiguration i filen.

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

Site 2 Gateway (tecmint-prodgateway)

$ sudo cp /etc/ipsec.conf /etc/ipsec.conf.orig
$ sudo cp /etc/ipsec.conf 

Kopier og indsæt følgende konfiguration i filen.

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

Her er betydningen af hver konfigurationsparameter:

  • konfigurationsopsætning - angiver generelle konfigurationsoplysninger for IPSec, der gælder for alle forbindelser.
  • charondebug - definerer hvor meget Charon debugging output der skal logges.
  • unikid - angiver, om et bestemt deltager-id skal holdes unikt.
  • conn prodgateway-to-devgateway - definerer forbindelsesnavn.
  • type - definerer forbindelsestype.
  • auto - hvordan håndteres forbindelsen, når IPSec startes eller genstartes.
  • keyexchange - definerer den version af IKE-protokollen, der skal bruges.
  • authby - definerer, hvordan jævnaldrende skal godkende hinanden.
  • venstre - definerer IP-adressen på den venstre deltagers offentlige netværksgrænseflade.
  • leftsubnet - angiver det private undernet bag den venstre deltager.
  • højre - angiver IP-adressen på den rigtige deltagers offentlige netværksgrænseflade.
  • rightsubnet - angiver det private undernet bag den venstre deltager.
  • ike - definerer en liste over IKE/ISAKMP SA krypterings-/godkendelsesalgoritmer, der skal bruges. Du kan tilføje en komma-adskilt liste.
  • esp - definerer en liste over ESP-krypterings-/godkendelsesalgoritmer, der skal bruges til forbindelsen. Du kan tilføje en komma-adskilt liste.
  • aggressiv - angiver, om der skal bruges Aggressiv eller Hovedtilstand.
  • keyingtries - angiver antallet af forsøg, der skal gøres for at forhandle en forbindelse.
  • ikelifetime - angiver, hvor længe nøglekanalen for en forbindelse skal vare, før den genforhandles.
  • levetid - definerer, hvor længe en bestemt forekomst af en forbindelse skal vare, fra vellykket forhandling til udløb.
  • dpddelay - specificerer det tidsinterval, hvormed R_U_THERE-meddelelser/INFORMATIONS-udvekslinger sendes til peer.
  • dpdtimeout - angiver tidsintervallet, hvorefter alle forbindelser til en peer slettes i tilfælde af inaktivitet.
  • dpdaction - definerer, hvordan man bruger DPD-protokollen (Dead Peer Detection) til at styre forbindelsen.

For mere information om ovenstående konfigurationsparametre, skal du læse ipsec.conf man-siden ved at køre kommandoen.

$ man ipsec.conf

Trin 4: Konfiguration af PSK til peer-to-peer-godkendelse

8. Efter konfiguration af begge sikkerhedsgateways, generer du en sikker PSK, der skal bruges af peers ved hjælp af følgende kommando.

$ head -c 24 /dev/urandom | base64

9. Tilføj derefter PSK i /etc/ipsec.secrets-filen på begge gateways.

$ sudo vim /etc/ipsec.secrets

Kopier og indsæt følgende linje.

------- 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. Genstart IPSec-programmet, og kontroller dets status for at se forbindelser.

$ sudo ipsec restart
$ sudo ipsec status

11. Kontroller endelig, at du kan få adgang til de private undernet fra begge sikkerhedsgateways ved at køre en ping-kommando.

$ ping 192.168.0.101
$ ping 10.0.2.15

12. Desuden kan du stoppe og starte IPSec som vist.

$ sudo ipsec stop
$ sudo ipsec start

13. Hvis du vil vide mere om IPSec-kommandoer til manuelt at få forbindelser med mere, se IPSec-hjælpesiden.

$ ipsec --help

Det er alt! I denne artikel har vi beskrevet, hvordan man opretter et site-to-site IPSec VPN ved hjælp af strongSwan på Ubuntu- og Debian-servere, hvor begge sikkerhedsgateways blev konfigureret til at godkende hinanden ved hjælp af en PSK. Hvis du har spørgsmål eller tanker at dele, kan du kontakte os via feedbackformularen nedenfor.