Hvordan sette opp IPsec-basert VPN med Strongswan på Debian og Ubuntu


strongSwan er en åpen kildekode, tverrplattform, fullfunksjons og mye brukt IPsec-basert VPN (Virtual Private Network) implementering som kjører på Linux, FreeBSD, OS X, Windows, Android og iOS. Det er først og fremst en nøkkeldemon som støtter Internet Key Exchange-protokollene (IKEv1 og IKEv2) for å etablere sikkerhetstilknytninger (SA sterk>) mellom to jevnaldrende.

Denne artikkelen beskriver hvordan du setter opp nettsted-til-sted IPSec VPN-gatewayer ved hjelp av strongSwanUbuntu- og Debian-servere . Med site-to-site mener vi at hver sikkerhetsgateway har et undernett bak seg. Dessuten vil jevnaldrende autentisere hverandre ved hjelp av en forhåndsdelt nøkkel (PSK).

Testmiljø

Husk å erstatte følgende IP-er med dine virkelige IP-er for å konfigurere miljøet ditt.

Nettsted 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

Trinn 1: Aktivering av kjernepakkevideresending

1. Først må du konfigurere kjernen for å aktivere pakkevideresending ved å legge til de riktige systemvariablene i /etc/sysctl.conf konfigurasjonsfilen på begge sikkerhetsgatewayene.

sudo vim /etc/sysctl.conf

Se etter de følgende linjene og fjern kommentarer og angi verdiene som vist (les kommentarene i filen for mer informasjon).

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. Last deretter de nye innstillingene ved å kjøre følgende kommando.

sudo sysctl -p

3. Hvis du har en UFW-brannmurtjeneste aktivert, må du legge til følgende regler i /etc/ufw/before.rules-konfigurasjonsfilen rett før filterreglene i enten sikkerhetsporter.

Nettsted 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 brannmurreglene er lagt til, bruk de nye endringene ved å starte UFW på nytt som vist.

sudo ufw disable 
sudo ufw enable

Trinn 2: Installere strongSwan i Debian og Ubuntu

5. Oppdater pakkebufferen på begge sikkerhetsgatewayene og installer strongswan-pakken ved å bruke APT-pakkebehandlingen.

sudo apt update
sudo apt install strongswan 

6. Når installasjonen er fullført, vil installasjonsskriptet starte strongswan-tjenesten og aktivere den automatisk ved systemoppstart. Du kan sjekke statusen og om den er aktivert ved å bruke følgende kommando.

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

Trinn 3: Konfigurering av sikkerhetsporter

7. Deretter må du konfigurere sikkerhetsgatewayene ved å bruke /etc/ipsec.conf konfigurasjonsfilen.

Nettsted 1-gateway (tecmint-devgateway)

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

Kopier og lim inn følgende konfigurasjon 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 nano /etc/ipsec.conf 

Kopier og lim inn følgende konfigurasjon 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 av hver konfigurasjonsparameter:

  • konfigurasjonsoppsett – spesifiserer generell konfigurasjonsinformasjon for IPSec som gjelder for alle tilkoblinger.
  • charondebug – definerer hvor mye Charon-feilsøkingsutdata som skal logges.
  • uniqueids – angir om en bestemt deltaker-ID skal holdes unik.
  • conn prodgateway-to-devgateway – definerer tilkoblingsnavnet.
  • type – definerer tilkoblingstype.
  • auto – hvordan håndtere tilkobling når IPSec startes eller startes på nytt.
  • keyexchange – definerer versjonen av IKE-protokollen som skal brukes.
  • autentisering – definerer hvordan jevnaldrende skal autentisere hverandre.
  • venstre – definerer IP-adressen til den venstre deltakerens offentlige nettverksgrensesnitt.
  • leftsubnet – angir det private subnettet bak venstre deltaker.
  • høyre – spesifiserer IP-adressen til rett deltakers offentlige nettverksgrensesnitt.
  • rightsubnet – angir det private subnettet bak venstre deltaker.
  • ike – definerer en liste over IKE/ISAKMP SA krypterings-/autentiseringsalgoritmer som skal brukes. Du kan legge til en kommadelt liste.
  • esp – definerer en liste over ESP-krypterings-/autentiseringsalgoritmer som skal brukes for tilkoblingen. Du kan legge til en kommadelt liste.
  • aggressiv – angir om du skal bruke aggressiv eller hovedmodus.
  • keyingtries – angir antall forsøk som bør gjøres for å forhandle en tilkobling.
  • ikelifetime – angir hvor lenge nøkkelkanalen til en forbindelse skal vare før den reforhandles.
  • levetid – definerer hvor lenge en bestemt forekomst av en tilkobling skal vare, fra vellykket forhandling til utløp.
  • dpddelay – spesifiserer tidsintervallet som R_U_THERE meldinger/INFORMASJONAL utveksling sendes til motparten med.
  • dpdtimeout – spesifiserer tidsavbruddsintervallet, hvoretter alle tilkoblinger til en peer slettes i tilfelle inaktivitet.
  • dpdaction – definerer hvordan du bruker Dead Peer Detection (DPD)-protokollen for å administrere tilkoblingen.

For mer informasjon om de ovennevnte konfigurasjonsparametrene, les ipsec.conf man-siden ved å kjøre kommandoen.

man ipsec.conf

Trinn 4: Konfigurere PSK for node-til-node-autentisering

8. Etter å ha konfigurert begge sikkerhetsgatewayene, generer du en sikker PSK som skal brukes av jevnaldrende ved å bruke følgende kommando.

head -c 24 /dev/urandom | base64

9. Deretter legger du til PSK i /etc/ipsec.secrets-filen på begge gatewayene.

sudo vim /etc/ipsec.secrets

Kopier og lim inn 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. Start IPSec-programmet på nytt og sjekk statusen for å se tilkoblinger.

sudo ipsec restart
sudo ipsec status

11. Til slutt, bekreft at du kan få tilgang til de private undernettene fra begge sikkerhetsgatewayene ved å kjøre en ping-kommando.

ping 192.168.0.101
ping 10.0.2.15

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

sudo ipsec stop
sudo ipsec start

13. For å vite mer om IPSec-kommandoer for å hente opp tilkoblinger manuelt og mer, se IPSec-hjelpesiden.

ipsec --help

Det er alt! I denne artikkelen har vi beskrevet hvordan du setter opp et nettsted-til-sted IPSec VPN ved å bruke strongSwanUbuntu- og Debian-servere, hvor både sikkerhetsporter ble konfigurert til å autentisere hverandre ved hjelp av en PSK. Hvis du har spørsmål eller tanker å dele, kontakt oss via tilbakemeldingsskjemaet nedenfor.