Cara Mengatur VPN berbasis IPsec dengan Strongswan di Debian dan Ubuntu


strongSwan adalah implementasi VPN (Virtual Private Network) berbasis IPsec yang open-source, lintas platform, berfitur lengkap, dan banyak digunakan yang berjalan di Linux, FreeBSD, OS X, Windows, Android, dan iOS. Ini pada dasarnya adalah daemon kunci yang mendukung protokol Internet Key Exchange (IKEv1 dan IKEv2) untuk membangun asosiasi keamanan (SA) antara dua rekan.

Artikel ini menjelaskan cara menyiapkan gateway IPSec VPN situs-ke-situs menggunakan strongSwan di server Ubuntu dan Debian . Yang kami maksud dengan situs-ke-situs adalah setiap gateway keamanan memiliki sub-jaringan di belakangnya. Selain itu, rekan-rekan akan mengautentikasi satu sama lain menggunakan kunci yang dibagikan sebelumnya (PSK).

Lingkungan Pengujian

Ingatlah untuk mengganti IP berikut dengan IP dunia nyata untuk mengonfigurasi lingkungan Anda.

Gerbang Situs 1 (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

Gerbang Situs 2 (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

Langkah 1: Mengaktifkan Penerusan Paket Kernel

1. Pertama, Anda perlu mengkonfigurasi kernel untuk mengaktifkan penerusan paket dengan menambahkan variabel sistem yang sesuai di file konfigurasi /etc/sysctl.conf di kedua gateway keamanan.

sudo vim /etc/sysctl.conf

Cari baris berikut dan hapus komentarnya dan tetapkan nilainya seperti yang ditunjukkan (baca komentar di file untuk informasi lebih lanjut).

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. Selanjutnya, muat pengaturan baru dengan menjalankan perintah berikut.

sudo sysctl -p

3. Jika Anda mengaktifkan layanan firewall UFW, Anda perlu menambahkan aturan berikut ke file konfigurasi /etc/ufw/before.rules tepat sebelum aturan filter di baik gateway keamanan.

Gerbang Situs 1 (tecmint-devgateway)

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

Gerbang Situs 2 (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. Setelah aturan firewall ditambahkan, terapkan perubahan baru dengan memulai ulang UFW seperti yang ditunjukkan.

sudo ufw disable 
sudo ufw enable

Langkah 2: Menginstal strongSwan di Debian dan Ubuntu

5. Perbarui cache paket Anda di kedua gateway keamanan dan instal paket strongswan menggunakan manajer paket APT.

sudo apt update
sudo apt install strongswan 

6. Setelah penginstalan selesai, skrip penginstal akan memulai layanan strongswan dan memungkinkannya dimulai secara otomatis saat boot sistem. Anda dapat memeriksa statusnya dan apakah diaktifkan menggunakan perintah berikut.

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

Langkah 3: Mengonfigurasi Gerbang Keamanan

7. Selanjutnya, Anda perlu mengonfigurasi gateway keamanan menggunakan file konfigurasi /etc/ipsec.conf.

Gerbang Situs 1 (tecmint-devgateway)

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

Salin dan tempel konfigurasi berikut ke dalam file.

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

Gerbang Situs 2 (tecmint-prodgateway)

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

Salin dan tempel konfigurasi berikut ke dalam file.

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

Berikut arti dari setiap parameter konfigurasi:

  • penyiapan konfigurasi – menentukan informasi konfigurasi umum untuk IPSec yang berlaku untuk semua koneksi.
  • charondebug – menentukan berapa banyak keluaran debug Charon yang harus dicatat.
  • uniqueids – menentukan apakah ID peserta tertentu harus tetap unik.
  • conn prodgateway-to-devgateway – mendefinisikan nama koneksi.
  • type – mendefinisikan jenis koneksi.
  • otomatis – cara menangani koneksi ketika IPSec dimulai atau dimulai ulang.
  • keyexchange – menentukan versi protokol IKE yang akan digunakan.
  • authby – mendefinisikan bagaimana rekan harus mengautentikasi satu sama lain.
  • kiri – menentukan alamat IP antarmuka jaringan publik peserta kiri.
  • subnet kiri – menyatakan subnet pribadi di belakang peserta kiri.
  • kanan – menentukan alamat IP antarmuka jaringan publik peserta yang tepat.
  • subnet kanan – menyatakan subnet pribadi di belakang peserta kiri.
  • ike – menentukan daftar algoritma enkripsi/autentikasi IKE/ISAKMP SA yang akan digunakan. Anda dapat menambahkan daftar yang dipisahkan koma.
  • esp – mendefinisikan daftar algoritma enkripsi/autentikasi ESP yang akan digunakan untuk koneksi. Anda dapat menambahkan daftar yang dipisahkan koma.
  • agresif – menyatakan apakah akan menggunakan Mode Agresif atau Utama.
  • keyingtries – menyatakan jumlah upaya yang harus dilakukan untuk menegosiasikan koneksi.
  • ikelifetime – menyatakan berapa lama saluran kunci suatu koneksi harus bertahan sebelum dinegosiasi ulang.
  • seumur hidup – menentukan berapa lama suatu koneksi tertentu akan bertahan, mulai dari negosiasi yang berhasil hingga habis masa berlakunya.
  • dpddelay – menentukan interval waktu pengiriman pesan/INFORMASI R_U_THERE ke rekan.
  • dpdtimeout – menentukan interval waktu habis, setelah itu semua koneksi ke rekan akan dihapus jika tidak ada aktivitas.
  • dpdaction – mendefinisikan cara menggunakan protokol Dead Peer Detection (DPD) untuk mengelola koneksi.

Untuk informasi selengkapnya tentang parameter konfigurasi di atas, baca halaman manual ipsec.conf dengan menjalankan perintah.

man ipsec.conf

Langkah 4: Mengonfigurasi PSK untuk Otentikasi Peer-to-Peer

8. Setelah mengonfigurasi kedua gateway keamanan, buat PSK aman untuk digunakan oleh rekan-rekan menggunakan perintah berikut.

head -c 24 /dev/urandom | base64

9. Selanjutnya, tambahkan PSK di file /etc/ipsec.secrets di kedua gateway.

sudo vim /etc/ipsec.secrets

Salin dan tempel baris berikut.

------- 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. Mulai ulang program IPSec dan periksa statusnya untuk melihat koneksi.

sudo ipsec restart
sudo ipsec status

11. Terakhir, verifikasi bahwa Anda dapat mengakses subnet privat dari salah satu gateway keamanan dengan menjalankan perintah ping.

ping 192.168.0.101
ping 10.0.2.15

12. Selain itu, Anda dapat menghentikan dan memulai IPSec seperti yang ditunjukkan.

sudo ipsec stop
sudo ipsec start

13. Untuk mengetahui lebih lanjut tentang perintah IPSec untuk memunculkan koneksi secara manual dan banyak lagi, lihat halaman bantuan IPSec.

ipsec --help

Itu saja! Dalam artikel ini, kami telah menjelaskan cara menyiapkan VPN IPSec situs-ke-situs menggunakan strongSwan di server Ubuntu dan Debian, di mana keduanya gateway keamanan dikonfigurasi untuk mengautentikasi satu sama lain menggunakan PSK. Jika Anda memiliki pertanyaan atau pemikiran untuk disampaikan, hubungi kami melalui formulir umpan balik di bawah.