ഡെബിയനിലും ഉബുണ്ടുവിലും Strongswan ഉപയോഗിച്ച് IPsec അടിസ്ഥാനമാക്കിയുള്ള VPN എങ്ങനെ സജ്ജീകരിക്കാം


ലിനക്സ്, ഫ്രീബിഎസ്ഡി, ഒഎസ് എക്സ്, വിൻഡോസ്, ആൻഡ്രോയിഡ്, ഐഒഎസ് എന്നിവയിൽ പ്രവർത്തിക്കുന്ന ഒരു ഓപ്പൺ സോഴ്uസ്, ക്രോസ്-പ്ലാറ്റ്uഫോം, ഫുൾ ഫീച്ചർ, വ്യാപകമായി ഉപയോഗിക്കപ്പെടുന്ന IPsec അടിസ്ഥാനമാക്കിയുള്ള VPN (വെർച്വൽ പ്രൈവറ്റ് നെറ്റ്uവർക്ക്) നടപ്പിലാക്കലാണ് strongSwan. രണ്ട് സമപ്രായക്കാർക്കിടയിൽ സെക്യൂരിറ്റി അസോസിയേഷനുകൾ (SA) സ്ഥാപിക്കുന്നതിന് ഇന്റർനെറ്റ് കീ എക്സ്ചേഞ്ച് പ്രോട്ടോക്കോളുകളെ (IKEv1, IKEv2) പിന്തുണയ്ക്കുന്ന ഒരു കീയിംഗ് ഡെമൺ ആണ് ഇത്.

ഉബുണ്ടുവിലും ഡെബിയൻ സെർവറുകളിലും സ്ട്രോങ്സ്വാൻ ഉപയോഗിച്ച് സൈറ്റ്-ടു-സൈറ്റ് IPSec VPN ഗേറ്റ്uവേകൾ എങ്ങനെ സജ്ജീകരിക്കാമെന്ന് ഈ ലേഖനം വിവരിക്കുന്നു. ഓരോ സെക്യൂരിറ്റി ഗേറ്റ്uവേയ്ക്കും പിന്നിൽ ഒരു ഉപ-നെറ്റ് ഉണ്ടെന്നാണ് സൈറ്റ്-ടു-സൈറ്റ് എന്നതുകൊണ്ട് ഞങ്ങൾ അർത്ഥമാക്കുന്നത്. കൂടാതെ, ഒരു പ്രീ-ഷെയർഡ് കീ (PSK) ഉപയോഗിച്ച് സമപ്രായക്കാർ പരസ്പരം ആധികാരികമാക്കും.

നിങ്ങളുടെ പരിസ്ഥിതി കോൺഫിഗർ ചെയ്യുന്നതിന് ഇനിപ്പറയുന്ന ഐപികൾ നിങ്ങളുടെ യഥാർത്ഥ ലോക ഐപികൾ ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിക്കാൻ ഓർക്കുക.

സൈറ്റ് 1 ഗേറ്റ്uവേ (ടെക്മിന്റ്-ദേവ്ഗേറ്റ്uവേ)

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 ഗേറ്റ്uവേ (ടെക്മിന്റ്-പ്രോഡ്ഗേറ്റ്uവേ)

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: കേർണൽ പാക്കറ്റ് ഫോർവേഡിംഗ് പ്രവർത്തനക്ഷമമാക്കുന്നു

1. ആദ്യം, രണ്ട് സെക്യൂരിറ്റി ഗേറ്റ്uവേകളിലും അനുയോജ്യമായ സിസ്റ്റം വേരിയബിളുകൾ /etc/sysctl.conf കോൺഫിഗറേഷൻ ഫയലിൽ ചേർത്തുകൊണ്ട് പാക്കറ്റ് ഫോർവേഡിംഗ് പ്രവർത്തനക്ഷമമാക്കുന്നതിന് നിങ്ങൾ കേർണൽ കോൺഫിഗർ ചെയ്യേണ്ടതുണ്ട്.

$ sudo vim /etc/sysctl.conf

ഇനിപ്പറയുന്ന വരികൾക്കായി നോക്കുക, അവ അഭിപ്രായമിടാതിരിക്കുക, കാണിച്ചിരിക്കുന്നതുപോലെ അവയുടെ മൂല്യങ്ങൾ സജ്ജമാക്കുക (കൂടുതൽ വിവരങ്ങൾക്ക് ഫയലിലെ അഭിപ്രായങ്ങൾ വായിക്കുക).

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. അടുത്തതായി, ഇനിപ്പറയുന്ന കമാൻഡ് പ്രവർത്തിപ്പിച്ച് പുതിയ ക്രമീകരണങ്ങൾ ലോഡ് ചെയ്യുക.

$ sudo sysctl -p

3. നിങ്ങൾക്ക് ഒരു UFW ഫയർവാൾ സേവനം പ്രവർത്തനക്ഷമമാക്കിയിട്ടുണ്ടെങ്കിൽ, സുരക്ഷാ ഗേറ്റ്uവേകളിലെ ഫിൽട്ടർ നിയമങ്ങൾക്ക് തൊട്ടുമുമ്പ് /etc/ufw/before.rules കോൺഫിഗറേഷൻ ഫയലിലേക്ക് ഇനിപ്പറയുന്ന നിയമങ്ങൾ ചേർക്കേണ്ടതുണ്ട്.

സൈറ്റ് 1 ഗേറ്റ്uവേ (ടെക്മിന്റ്-ദേവ്ഗേറ്റ്uവേ)

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

സൈറ്റ് 2 ഗേറ്റ്uവേ (ടെക്മിന്റ്-പ്രോഡ്ഗേറ്റ്uവേ)

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

4. ഫയർവാൾ നിയമങ്ങൾ ചേർത്തുകഴിഞ്ഞാൽ, കാണിച്ചിരിക്കുന്നതുപോലെ UFW പുനരാരംഭിച്ച് പുതിയ മാറ്റങ്ങൾ പ്രയോഗിക്കുക.

$ sudo ufw disable 
$ sudo ufw enable

ഘട്ടം 2: ഡെബിയനിലും ഉബുണ്ടുവിലും സ്ട്രോങ് സ്വാൻ ഇൻസ്റ്റാൾ ചെയ്യുന്നു

5. രണ്ട് സുരക്ഷാ ഗേറ്റ്uവേകളിലും നിങ്ങളുടെ പാക്കേജ് കാഷെ അപ്uഡേറ്റ് ചെയ്യുകയും APT പാക്കേജ് മാനേജർ ഉപയോഗിച്ച് സ്ട്രോങ്uസ്വാൻ പാക്കേജ് ഇൻസ്റ്റാൾ ചെയ്യുകയും ചെയ്യുക.

$ sudo apt update
$ sudo apt install strongswan 

6. ഇൻസ്റ്റലേഷൻ പൂർത്തിയായിക്കഴിഞ്ഞാൽ, ഇൻസ്റ്റാളർ സ്ക്രിപ്റ്റ് സ്ട്രോങ്സ്വാൻ സേവനം ആരംഭിക്കുകയും സിസ്റ്റം ബൂട്ടിൽ സ്വയമേവ ആരംഭിക്കാൻ പ്രാപ്തമാക്കുകയും ചെയ്യും. ഇനിപ്പറയുന്ന കമാൻഡ് ഉപയോഗിച്ച് നിങ്ങൾക്ക് അതിന്റെ നിലയും അത് പ്രവർത്തനക്ഷമമാക്കിയിട്ടുണ്ടോ എന്നും പരിശോധിക്കാം.

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

ഘട്ടം 3: സുരക്ഷാ ഗേറ്റ്uവേകൾ ക്രമീകരിക്കുന്നു

7. അടുത്തതായി, /etc/ipsec.conf കോൺഫിഗറേഷൻ ഫയൽ ഉപയോഗിച്ച് നിങ്ങൾ സുരക്ഷാ ഗേറ്റ്uവേകൾ ക്രമീകരിക്കേണ്ടതുണ്ട്.

സൈറ്റ് 1 ഗേറ്റ്uവേ (ടെക്മിന്റ്-ദേവ്ഗേറ്റ്uവേ)

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

ഫയലിൽ ഇനിപ്പറയുന്ന കോൺഫിഗറേഷൻ പകർത്തി ഒട്ടിക്കുക.

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 ഗേറ്റ്uവേ (ടെക്മിന്റ്-പ്രോഡ്ഗേറ്റ്uവേ)

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

ഇനിപ്പറയുന്ന കോൺഫിഗറേഷൻ ഫയലിലേക്ക് പകർത്തി ഒട്ടിക്കുക.

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

ഓരോ കോൺഫിഗറേഷൻ പാരാമീറ്ററിന്റെയും അർത്ഥം ഇതാ:

  • config സെറ്റപ്പ് - എല്ലാ കണക്ഷനുകൾക്കും ബാധകമായ IPSec-നുള്ള പൊതുവായ കോൺഫിഗറേഷൻ വിവരങ്ങൾ വ്യക്തമാക്കുന്നു.
  • charondebug – എത്രമാത്രം Charon ഡീബഗ്ഗിംഗ് ഔട്ട്uപുട്ട് ലോഗിൻ ചെയ്യണമെന്ന് നിർവചിക്കുന്നു.
  • അതുല്യതകൾ - ഒരു പ്രത്യേക പങ്കാളി ഐഡി അദ്വിതീയമായി സൂക്ഷിക്കണമോ എന്ന് വ്യക്തമാക്കുന്നു.
  • conn prodgateway-to-devgateway – കണക്ഷന്റെ പേര് നിർവചിക്കുന്നു.
  • തരം - കണക്ഷൻ തരം നിർവചിക്കുന്നു.
  • ഓട്ടോ - IPSec ആരംഭിക്കുമ്പോഴോ പുനരാരംഭിക്കുമ്പോഴോ എങ്ങനെ കണക്ഷൻ കൈകാര്യം ചെയ്യാം.
  • കീ എക്സ്ചേഞ്ച് - ഉപയോഗിക്കേണ്ട IKE പ്രോട്ടോക്കോളിന്റെ പതിപ്പ് നിർവ്വചിക്കുന്നു.
  • authby - സമപ്രായക്കാർ പരസ്പരം എങ്ങനെ ആധികാരികമാക്കണമെന്ന് നിർവ്വചിക്കുന്നു.
  • ഇടത് - ഇടത് പങ്കാളിയുടെ പൊതു-നെറ്റ്uവർക്ക് ഇന്റർഫേസിന്റെ IP വിലാസം നിർവചിക്കുന്നു.
  • leftsubnet – ഇടത് പങ്കാളിയുടെ പിന്നിലെ സ്വകാര്യ സബ്നെറ്റ് പ്രസ്താവിക്കുന്നു.
  • വലത് - ശരിയായ പങ്കാളിയുടെ പൊതു-നെറ്റ്uവർക്ക് ഇന്റർഫേസിന്റെ IP വിലാസം വ്യക്തമാക്കുന്നു.
  • rightsubnet – ഇടത് പങ്കാളിയുടെ പിന്നിലെ സ്വകാര്യ സബ്നെറ്റ് പ്രസ്താവിക്കുന്നു.
  • ike – ഉപയോഗിക്കേണ്ട IKE/ISAKMP SA എൻക്രിപ്ഷൻ/ആധികാരികത ആൽഗരിതങ്ങളുടെ ഒരു ലിസ്റ്റ് നിർവചിക്കുന്നു. നിങ്ങൾക്ക് കോമയാൽ വേർതിരിച്ച ഒരു ലിസ്റ്റ് ചേർക്കാം.
  • esp – കണക്ഷനുപയോഗിക്കേണ്ട ESP എൻക്രിപ്ഷൻ/ഓതന്റിക്കേഷൻ അൽഗോരിതങ്ങളുടെ ഒരു ലിസ്റ്റ് നിർവചിക്കുന്നു. നിങ്ങൾക്ക് കോമയാൽ വേർതിരിച്ച ഒരു ലിസ്റ്റ് ചേർക്കാം.
  • അഗ്രസീവ് - അഗ്രസീവ് അല്ലെങ്കിൽ മെയിൻ മോഡ് ഉപയോഗിക്കണമോ എന്ന് പ്രസ്താവിക്കുന്നു.
  • കീയിംഗ് ട്രീസ് - ഒരു കണക്ഷൻ ചർച്ച ചെയ്യാൻ എത്ര ശ്രമങ്ങൾ നടത്തണം എന്ന് പറയുന്നു.
  • ikelifetime – പുനരാലോചനയ്ക്ക് മുമ്പ് ഒരു കണക്ഷന്റെ കീയിംഗ് ചാനൽ എത്രത്തോളം നിലനിൽക്കണമെന്ന് പ്രസ്താവിക്കുന്നു.
  • ആജീവനാന്തം - വിജയകരമായ ചർച്ച മുതൽ കാലഹരണപ്പെടുന്നതുവരെ ഒരു കണക്ഷന്റെ ഒരു പ്രത്യേക സന്ദർഭം എത്രത്തോളം നിലനിൽക്കണമെന്ന് നിർവചിക്കുന്നു.
  • dpddelay – പിയർക്ക് R_U_THERE സന്ദേശങ്ങൾ/വിവരങ്ങൾ കൈമാറുന്ന സമയ ഇടവേള വ്യക്തമാക്കുന്നു.
  • dpdtimeout – കാലഹരണപ്പെടൽ ഇടവേള വ്യക്തമാക്കുന്നു, അതിന് ശേഷം ഒരു പിയറുമായുള്ള എല്ലാ കണക്ഷനുകളും നിഷ്uക്രിയമായാൽ ഇല്ലാതാക്കപ്പെടും.
  • dpdaction – കണക്ഷൻ മാനേജ് ചെയ്യുന്നതിനായി Dead Peer Detection(DPD) പ്രോട്ടോക്കോൾ എങ്ങനെ ഉപയോഗിക്കണമെന്ന് നിർവചിക്കുന്നു.

മുകളിലുള്ള കോൺഫിഗറേഷൻ പാരാമീറ്ററുകളെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾക്ക്, കമാൻഡ് പ്രവർത്തിപ്പിച്ച് ipsec.conf മാൻ പേജ് വായിക്കുക.

$ man ipsec.conf

ഘട്ടം 4: പിയർ-ടു-പിയർ പ്രാമാണീകരണത്തിനായി PSK കോൺഫിഗർ ചെയ്യുന്നു

8. രണ്ട് സുരക്ഷാ ഗേറ്റ്uവേകളും ക്രമീകരിച്ചതിന് ശേഷം, ഇനിപ്പറയുന്ന കമാൻഡ് ഉപയോഗിച്ച് സഹപാഠികൾക്ക് ഉപയോഗിക്കുന്നതിന് ഒരു സുരക്ഷിത PSK സൃഷ്ടിക്കുക.

$ head -c 24 /dev/urandom | base64

9. അടുത്തതായി, രണ്ട് ഗേറ്റ്uവേകളിലും /etc/ipsec.secrets ഫയലിൽ PSK ചേർക്കുക.

$ sudo vim /etc/ipsec.secrets

ഇനിപ്പറയുന്ന വരി പകർത്തി ഒട്ടിക്കുക.

------- 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. കണക്ഷനുകൾ കാണുന്നതിന് IPSec പ്രോഗ്രാം പുനരാരംഭിച്ച് അതിന്റെ നില പരിശോധിക്കുക.

$ sudo ipsec restart
$ sudo ipsec status

11. അവസാനമായി, ഒരു പിംഗ് കമാൻഡ് പ്രവർത്തിപ്പിച്ച് നിങ്ങൾക്ക് സുരക്ഷാ ഗേറ്റ്uവേകളിൽ നിന്ന് സ്വകാര്യ സബ്-നെറ്റുകൾ ആക്uസസ് ചെയ്യാൻ കഴിയുമെന്ന് സ്ഥിരീകരിക്കുക.

$ ping 192.168.0.101
$ ping 10.0.2.15

12. കൂടാതെ, കാണിച്ചിരിക്കുന്നതുപോലെ നിങ്ങൾക്ക് IPSec നിർത്താനും ആരംഭിക്കാനും കഴിയും.

$ sudo ipsec stop
$ sudo ipsec start

13. കണക്ഷനുകളും മറ്റും സ്വമേധയാ കൊണ്ടുവരുന്നതിനുള്ള IPSec കമാൻഡുകളെക്കുറിച്ച് കൂടുതലറിയാൻ, IPSec സഹായ പേജ് കാണുക.

$ ipsec --help

അത്രയേയുള്ളൂ! ഈ ലേഖനത്തിൽ, ഉബുണ്ടുവിലെയും ഡെബിയൻ സെർവറുകളിലെയും സ്ട്രോങ്സ്വാൻ ഉപയോഗിച്ച് ഒരു സൈറ്റ്-ടു-സൈറ്റ് IPSec VPN എങ്ങനെ സജ്ജീകരിക്കാമെന്ന് ഞങ്ങൾ വിവരിച്ചിട്ടുണ്ട്, അവിടെ രണ്ട് സുരക്ഷാ ഗേറ്റ്uവേകളും ഒരു PSK ഉപയോഗിച്ച് പരസ്പരം ആധികാരികമാക്കാൻ ക്രമീകരിച്ചിരിക്കുന്നു. നിങ്ങൾക്ക് പങ്കിടാൻ എന്തെങ്കിലും ചോദ്യങ്ങളോ ചിന്തകളോ ഉണ്ടെങ്കിൽ, ചുവടെയുള്ള ഫീഡ്uബാക്ക് ഫോം വഴി ഞങ്ങളെ ബന്ധപ്പെടുക.