Hoe een IPsec-gebaseerde VPN in te stellen met Strongswan op Debian en Ubuntu

strongSwan is een open-source, cross-platform, volledig uitgeruste en veelgebruikte IPsec-gebaseerde VPN (Virtual Private Network)-implementatie die draait op Linux, FreeBSD, OS X, Windows, Android en iOS. Het is voornamelijk een keying daemon die de Internet Key Exchange-protocollen (IKEv1 en IKEv2) ondersteunt om beveiligingsassociaties (SA) tussen twee peers op te zetten.

Dit artikel beschrijft hoe u site-to-site IPSec VPN-gateways kunt instellen met behulp van strongSwan op Ubuntu– en Debian-servers. Met site-to-site bedoelen we dat elke beveiligingsgateway een sub-netwerk erachter heeft. Bovendien zullen de peers elkaar authenticeren met behulp van een vooraf gedeelde sleutel (PSK).

Testomgeving

Vergeet niet de volgende IP-adressen te vervangen door uw werkelijke IP-adressen om uw omgeving te configureren.

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

Stap 1: Kernel-pakketdoorsturing inschakelen

1.Ten eerste moet u de kernel configureren om pakketdoorsturing in te schakelen door de juiste systeemvariabelen toe te voegen in het /etc/sysctl.conf-configuratiebestand op beide beveiligingsgateways.

$ sudo vim /etc/sysctl.conf

Zoek naar de volgende regels en haal de commentaartekens weg en stel hun waarden in zoals getoond (lees de opmerkingen in het bestand voor meer informatie).

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. Laad vervolgens de nieuwe instellingen door het volgende commando uit te voeren.

$ sudo sysctl -p
Load Sysctl Kernel Settings

3. Als je een UFW firewall service hebt ingeschakeld, moet je de volgende regels toevoegen aan het configuratiebestand /etc/ufw/before.rules vlak voor de filterregels in de beveiligingsgateways.

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. Nadat firewallregels zijn toegevoegd, pas je de nieuwe wijzigingen toe door UFW te herstarten zoals getoond.

$ sudo ufw disable 
$ sudo ufw enable

Stap 2: strongSwan installeren in Debian en Ubuntu

5. Werk je pakketcache bij op beide beveiligingsgateways en installeer het strongswan pakket met behulp van de APT-pakketbeheerder.

$ sudo apt update
$ sudo apt install strongswan 

6. Zodra de installatie is voltooid, start het installatiescript de strongswan service en schakelt het deze in om automatisch te starten bij het opstarten van het systeem. Je kunt de status controleren en controleren of deze is ingeschakeld met het volgende commando.

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

Stap 3: Beveiligingsgateways configureren

7. Vervolgens moet je de beveiligingsgateways configureren met behulp van het configuratiebestand /etc/ipsec.conf.

Site 1 Gateway (tecmint-devgateway)

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

Kopieer en plak de volgende configuratie in het bestand.

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 

Kopieer en plak de volgende configuratie in het bestand.

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

Hier is de betekenis van elke configuratieparameter:

  • configuratie instellen – specificeert algemene configuratie-informatie voor IPSec die van toepassing is op alle verbindingen.
  • charondebug – definieert hoeveel Charon-debugginguitvoer moet worden gelogd.
  • uniqueids – specificeert of een bepaalde deelnemers-ID uniek moet blijven.
  • conn prodgateway-to-devgateway – definieert de verbindingsnaam.
  • type – definieert het verbindingsstype.
  • auto – hoe de verbinding moet worden afgehandeld wanneer IPSec wordt gestart of opnieuw wordt gestart.
  • keyexchange – definieert de versie van het IKE-protocol om te gebruiken.
  • authby – definieert hoe peers elkaar moeten authenticeren.
  • left – definieert het IP-adres van de openbare netwerkinterface van de linkerdeelnemer.
  • leftsubnet – geeft het privé-subnet achter de linkerdeelnemer aan.
  • right – specificeert het IP-adres van de openbare netwerkinterface van de rechterdeelnemer.
  • rightsubnet – geeft het privé-subnet achter de linkerdeelnemer aan.
  • ike – definieert een lijst van IKE/ISAKMP SA-encryptie/authenticatiealgoritmen die moeten worden gebruikt. U kunt een door komma’s gescheiden lijst toevoegen.
  • esp – definieert een lijst van ESP-encryptie/authenticatiealgoritmen die moeten worden gebruikt voor de verbinding. U kunt een door komma’s gescheiden lijst toevoegen.
  • agressief – geeft aan of Agressieve of Hoofdmodus moet worden gebruikt.
  • keyingtries – geeft aan hoeveel pogingen moeten worden ondernomen om een verbinding tot stand te brengen.
  • ikelifetime – geeft aan hoelang het keyingkanaal van een verbinding moet duren voordat het opnieuw wordt onderhandeld.
  • levensduur – definieert hoelang een bepaald exemplaar van een verbinding moet duren, van succesvolle onderhandeling tot vervaldatum.
  • dpddelay – specificeert het tijdsinterval waarmee R_U_THERE-berichten/INFORMATIE-uitwisselingen naar de peer worden verzonden.
  • dpdtimeout – specificeert het time-outinterval, waarna alle verbindingen met een peer worden verwijderd bij inactiviteit.
  • dpdaction – definieert hoe het Dead Peer Detection(DPD)-protocol moet worden gebruikt om de verbinding te beheren.

Voor meer informatie over de bovenstaande configuratieparameters, leest u de ipsec.conf man-pagina door het commando uit te voeren.

$ man ipsec.conf

Stap 4: Configuratie van PSK voor peer-to-peer authenticatie

8. Nadat beide beveiligingsgateways zijn geconfigureerd, genereert u een veilige PSK die door de peers moet worden gebruikt met het volgende commando.

$ head -c 24 /dev/urandom | base64
Generate PSK Key

9. Voeg vervolgens de PSK toe in het /etc/ipsec.secrets bestand op beide gateways.

$ sudo vim /etc/ipsec.secrets

Kopieer en plak de volgende regel.

------- 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. Herstart het IPSec programma en controleer de status ervan om verbindingen te bekijken.

$ sudo ipsec restart
$ sudo ipsec status
View IPSec Connection Status

11. Verifieer ten slotte dat u toegang heeft tot de privé subnets vanaf beide beveiligingsgateways door een ping commando uit te voeren.

$ ping 192.168.0.101
$ ping 10.0.2.15
Verify Site-to-Site VPN Setup

12. Bovendien kunt u IPSec stoppen en starten zoals getoond.

$ sudo ipsec stop
$ sudo ipsec start

13. Om meer te weten te komen over IPSec commando’s om verbindingen handmatig tot stand te brengen en meer, zie de IPSec help pagina.

$ ipsec --help

Dat is alles! In dit artikel hebben we beschreven hoe u een site-to-site IPSec VPN opzet met strongSwan op Ubuntu en Debian servers, waarbij beide beveiligingsgateways geconfigureerd waren om elkaar te authenticeren met behulp van een PSK. Als u vragen of gedachten heeft om te delen, neem dan contact met ons op via het feedbackformulier hieronder.

Source:
https://www.tecmint.com/setup-ipsec-vpn-with-strongswan-on-debian-ubuntu/