Kaip nustatyti IPsec pagrįstą VPN naudojant Strongswan Debian ir Ubuntu


strongSwan yra atvirojo kodo, kelių platformų, visų funkcijų ir plačiai naudojamas IPsec pagrįstas VPN (virtualus privatus tinklas) diegimas, veikiantis Linux, FreeBSD, OS X, Windows, Android ir iOS. Tai visų pirma raktų įvedimo demonas, palaikantis Internet Key Exchange protokolus (IKEv1 ir IKEv2), kad būtų sukurtos saugos asociacijos (SA).) tarp dviejų bendraamžių.

Šiame straipsnyje aprašoma, kaip nustatyti tarp svetainių IPSec VPN šliuzus naudojant strongSwan Ubuntu ir Debian serveriuose . Iš vienos svetainės į kitą turime omenyje, kad kiekvienas saugos šliuzas turi antrinį tinklą. Be to, bendraamžiai autentifikuos vienas kitą naudodami iš anksto bendrinamą raktą (PSK).

Testavimo aplinka

Nepamirškite pakeisti toliau nurodytų IP savo realaus pasaulio IP, kad sukonfigūruotumėte aplinką.

1 svetainės šliuzas (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

2 svetainės šliuzas (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

1 veiksmas: branduolio paketų persiuntimo įgalinimas

1. Pirmiausia turite sukonfigūruoti branduolį, kad įgalintumėte paketų persiuntimą, pridedant atitinkamus sistemos kintamuosius /etc/sysctl.conf konfigūracijos faile abiejuose saugos šliuzuose.

sudo vim /etc/sysctl.conf

Ieškokite šių eilučių ir panaikinkite jas komentarus ir nustatykite jų reikšmes, kaip parodyta (daugiau informacijos skaitykite failo komentaruose).

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. Tada įkelkite naujus nustatymus vykdydami šią komandą.

sudo sysctl -p

3. Jei įgalinote UFW užkardos paslaugą, turite pridėti šias taisykles į /etc/ufw/before.rules konfigūracijos failą prieš pat filtro taisykles arba saugumo vartai.

1 svetainės šliuzas (tecmint-devgateway)

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.0.2.0/24  -d 192.168.0.0/24 -j MASQUERADE
COMMIT

2 svetainės šliuzas (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. Pridėję ugniasienės taisykles, taikykite naujus pakeitimus iš naujo paleisdami UFW, kaip parodyta.

sudo ufw disable 
sudo ufw enable

2 veiksmas: „strongSwan“ diegimas „Debian“ ir „Ubuntu“.

5. Atnaujinkite paketo talpyklą abiejuose saugos šliuzuose ir įdiekite strongswan paketą naudodami APT paketų tvarkyklę.

sudo apt update
sudo apt install strongswan 

6. Kai diegimas bus baigtas, diegimo programos scenarijus paleis strongswan paslaugą ir leis ją automatiškai paleisti paleidžiant sistemą. Galite patikrinti jo būseną ir tai, ar ji įjungta, naudodami šią komandą.

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

3 veiksmas: saugos šliuzų konfigūravimas

7. Tada turite sukonfigūruoti saugos šliuzus naudodami /etc/ipsec.conf konfigūracijos failą.

1 svetainės šliuzas (tecmint-devgateway)

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

Nukopijuokite ir įklijuokite šią konfigūraciją į failą.

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

2 svetainės šliuzas (tecmint-prodgateway)

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

Nukopijuokite ir įklijuokite šią konfigūraciją į failą.

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

Štai kiekvieno konfigūracijos parametro reikšmė:

  • konfigūracijos sąranka – nurodo bendrą IPSec konfigūracijos informaciją, kuri taikoma visoms jungtims.
  • charondebug – apibrėžia, kiek Charon derinimo išvesties turi būti registruojama.
  • unikalūs identifikatoriai – nurodo, ar konkretus dalyvio ID turi būti unikalus.
  • Conn prodgateway-to-devgateway – apibrėžia ryšio pavadinimą.
  • tipas – apibrėžia ryšio tipą.
  • automatinis – kaip tvarkyti ryšį, kai paleidžiamas arba paleidžiamas iš naujo IPSec.
  • keyexchange – apibrėžia naudotino IKE protokolo versiją.
  • authby – apibrėžia, kaip bendraamžiai turėtų patvirtinti vienas kito autentiškumą.
  • kairė – apibrėžia kairiojo dalyvio viešojo tinklo sąsajos IP adresą.
  • leftsubnet – nurodo privatų potinklį, esantį už kairiojo dalyvio.
  • dešinė – nurodo tinkamo dalyvio viešojo tinklo sąsajos IP adresą.
  • teisių potinklis – nurodo privatų potinklį, esantį už kairiojo dalyvio.
  • ike – apibrėžia naudojamų IKE/ISAKMP SA šifravimo/autentifikavimo algoritmų sąrašą. Galite pridėti kableliais atskirtą sąrašą.
  • esp – apibrėžiamas ESP šifravimo/autentifikavimo algoritmų, naudojamų ryšiui, sąrašas. Galite pridėti kableliais atskirtą sąrašą.
  • agresyvus – nurodo, ar naudoti agresyvųjį, ar pagrindinį režimą.
  • raktų įvedimo bandymai – nurodomas bandymų, kuriuos reikia atlikti norint užmegzti ryšį, skaičius.
  • ikelifetime – nurodo, kiek laiko turėtų trukti ryšio raktų įvedimo kanalas, kol bus deramasi iš naujo.
  • gyvenimo trukmė – apibrėžia, kiek laiko turėtų trukti konkretus ryšio egzempliorius, nuo sėkmingų derybų iki galiojimo pabaigos.
  • dpddelay – nurodo laiko intervalą, per kurį R_U_THERE pranešimai/INFORMACINIAI mainai siunčiami lygiavertei programai.
  • dpdtimeout – nurodo skirtojo laiko intervalą, po kurio visi ryšiai su lygiaverčiu partneriu ištrinami, jei neveikiama.
  • dpdaction – apibrėžia, kaip naudoti negyvų partnerių aptikimo (DPD) protokolą ryšiui valdyti.

Norėdami gauti daugiau informacijos apie aukščiau nurodytus konfigūracijos parametrus, skaitykite ipsec.conf vadovo puslapį, vykdydami komandą.

man ipsec.conf

4 veiksmas: PSK konfigūravimas lygiarangiai autentifikavimui

8. Sukonfigūravę abu saugos šliuzus, naudodami šią komandą sugeneruokite saugų PSK, kurį naudos lygiavertės programos.

head -c 24 /dev/urandom | base64

9. Tada pridėkite PSK į failą /etc/ipsec.secrets abiejuose šliuzuose.

sudo vim /etc/ipsec.secrets

Nukopijuokite ir įklijuokite šią eilutę.

------- 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. Iš naujo paleiskite IPSec programą ir patikrinkite jos būseną, kad peržiūrėtumėte ryšius.

sudo ipsec restart
sudo ipsec status

11. Galiausiai patikrinkite, ar galite pasiekti privačius antrinius tinklus iš bet kurio saugos šliuzo, vykdydami ping komandą.

ping 192.168.0.101
ping 10.0.2.15

12. Be to, galite sustabdyti ir paleisti IPSec, kaip parodyta.

sudo ipsec stop
sudo ipsec start

13. Norėdami sužinoti daugiau apie IPSec komandas, skirtas rankiniu būdu sukurti ryšius ir daugiau, žr. IPSec pagalbos puslapį.

ipsec --help

Tai viskas! Šiame straipsnyje aprašėme, kaip nustatyti IPSec VPN tarp svetainių naudojant strongSwan Ubuntu ir Debian serveriuose, kur abu saugos šliuzai buvo sukonfigūruoti taip, kad vienas kitą patvirtintų naudojant PSK. Jei turite klausimų ar norite pasidalinti mintimis, susisiekite su mumis naudodami toliau pateiktą atsiliepimų formą.