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.