Strongswan adalah implementasi IPSec multiplatform open source. Ini adalah solusi VPN berbasis IPSec yang berfokus pada mekanisme otentikasi yang kuat. Strongswan menawarkan dukungan untuk protokol pertukaran kunci IKEv1 dan IKEv2, otentikasi berdasarkan sertifikat X.509 atau kunci yang dibagikan sebelumnya, dan otentikasi pengguna IKEv2 EAP yang aman.
Dalam tutorial ini, saya akan menunjukkan cara menginstal server VPN IPSec menggunakan Strongswan. Kami akan membuat server VPN IKEv2 dengan otentikasi 'EAP-MSCHAPv2' dan menggunakan sertifikat Letsencrypt di server CentOS 7.
Prasyarat
- Server CentOS 7
- Hak istimewa root
Apa yang akan kita lakukan?
- Instal Strongswan di CentOS 7
- Buat SSL Letsencrypt
- Konfigurasi Strongswan
- Aktifkan Firewall NAT
- Aktifkan Penerusan Port
- Pengujian
Langkah 1 - Instal Strongswan di CentOS 7
Pada langkah pertama ini, kita akan menginstal perangkat lunak implementasi strongswan IPsec dan semua paket yang dibutuhkan dari repositori EPEL.
Instal repositori EPEL dan instal paket strongswan menggunakan perintah yum di bawah ini.
yum -y install epel-release
yum -y install strongswan
Tunggu hingga paket strongswan diinstal.
Langkah 2 - Buat Sertifikat SSL dengan Let's encrypt
Kami akan membuat server VPN IKEv2 menggunakan nama domain 'ikev2.hakase-labs.io' dan menggunakan sertifikat yang dihasilkan dari letsencrypt.
Pada langkah ini, kita akan menginstal alat letsencrypt 'certbot' dan membuat sertifikat untuk nama domain server 'ikev2.hakase-labs.io'.
Instal alat letsencrypt 'certbot'.
yum -y install certbot
Setelah instalasi certbot, kita perlu membuka port HTTP dan HTTPS server menggunakan firewall-cmd.
Tambahkan layanan HTTP dan HTTPS ke daftar layanan firewalld dengan menjalankan perintah firewall-cmd di bawah ini.
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload
Sekarang kita dapat membuat file sertifikat SSL baru menggunakan alat letsencrypt certbot.
Jalankan perintah certbot di bawah ini.
certbot certonly --rsa-key-size 4096 --standalone --agree-tos --no-eff-email --email [email protected] -d ikev2.hakase-labs.io
Sertifikat Letsencrypt untuk nama domain vpn 'ikev2.hakase-labs.io' telah dibuat, dan terletak di direktori '/etc/letsencrypt/live'.
Selanjutnya, kita perlu menyalin file sertifikat 'fullchain.pem', 'privkey.pem', dan 'chain.pem' ke direktori '/etc/strongswan/ipsec.d/'.
cp /etc/letsencrypt/live/ikev2.hakase-labs.io/fullchain.pem /etc/strongswan/ipsec.d/certs/
cp /etc/letsencrypt/live/ikev2.hakase-labs.io/privkey.pem /etc/strongswan/ipsec.d/private/
cp /etc/letsencrypt/live/ikev2.hakase-labs.io/chain.pem /etc/strongswan/ipsec.d/cacerts/
Semua sertifikat letsencrypt untuk VPN Strongswan bernama 'ikev2.hakase-labs.io' telah dibuat dan disalin ke direktori '/etc/strongswan/ipsec.d'.
tree /etc/strongswan/ipsec.d/
Langkah 3 - Konfigurasikan Strongswan
Buka direktori '/etc/strongswan' dan buat cadangan file konfigurasi 'ipsec.conf' default.
cd /etc/strongswan/
mv ipsec.conf ipsec.conf.asli
Buat yang baru 'ipsec.conf' menggunakan vim editor.
vim ipsec.conf
Dan paste konfigurasi berikut.
#global configuration IPsec #chron logger config setup charondebug="ike 1, knl 1, cfg 0" uniqueids=no #define new ipsec connection conn hakase-vpn auto=add compress=no type=tunnel keyexchange=ikev2 ike=aes128-sha1-modp1024,aes128-sha1-modp1536,aes128-sha1-modp2048,aes128-sha256-ecp256,aes128-sha256-modp1024,aes128-sha256-modp1536,aes128-sha256-modp2048,aes256-aes128-sha256-sha1-modp2048-modp4096-modp1024,aes256-sha1-modp1024,aes256-sha256-modp1024,aes256-sha256-modp1536,aes256-sha256-modp2048,aes256-sha256-modp4096,aes256-sha384-ecp384,aes256-sha384-modp1024,aes256-sha384-modp1536,aes256-sha384-modp2048,aes256-sha384-modp4096,aes256gcm16-aes256gcm12-aes128gcm16-aes128gcm12-sha256-sha1-modp2048-modp4096-modp1024,3des-sha1-modp1024! esp=aes128-aes256-sha1-sha256-modp2048-modp4096-modp1024,aes128-sha1,aes128-sha1-modp1024,aes128-sha1-modp1536,aes128-sha1-modp2048,aes128-sha256,aes128-sha256-ecp256,aes128-sha256-modp1024,aes128-sha256-modp1536,aes128-sha256-modp2048,aes128gcm12-aes128gcm16-aes256gcm12-aes256gcm16-modp2048-modp4096-modp1024,aes128gcm16,aes128gcm16-ecp256,aes256-sha1,aes256-sha256,aes256-sha256-modp1024,aes256-sha256-modp1536,aes256-sha256-modp2048,aes256-sha256-modp4096,aes256-sha384,aes256-sha384-ecp384,aes256-sha384-modp1024,aes256-sha384-modp1536,aes256-sha384-modp2048,aes256-sha384-modp4096,aes256gcm16,aes256gcm16-ecp384,3des-sha1! fragmentation=yes forceencaps=yes dpdaction=clear dpddelay=300s rekey=no left=%any [email protected] leftcert=fullchain.pem leftsendcert=always leftsubnet=0.0.0.0/0 right=%any rightid=%any rightauth=eap-mschapv2 rightsourceip=10.15.1.0/24 rightdns=1.1.1.1,8.8.8.8 rightsendcert=never eap_identity=%identity
Simpan dan keluar.
Detail konfigurasi:
- Buat koneksi terowongan VPN IPSec baru bernama 'hakase-vpn'.
- Tentukan rangkaian sandi IKEv2 dan ESP untuk autentikasi.
- Konfigurasi server 'kiri' menggunakan nama domain 'ikev2.hakase-labs.io' dan menggunakan sertifikat letsencrypt 'fullchain.pem' yang terletak di direktori '/etc/strongswan/ipsec.d/certs'.
- Penyiapan klien/jarak jauh yang 'benar' dengan metode autentikasi EAP 'eap-mschapv2', menetapkan rentang alamat IP virtual '10.15.1.0/24' untuk semua klien yang terhubung, dan menggunakan DNS Cloudflare publik dan google.
Selanjutnya, kita perlu mengedit file 'ipsec.secrets' untuk menentukan kunci pribadi server RSA dan kredensial kata sandi pengguna EAP.
Edit file 'ipsec.secrets'.
vim ipsec.secrets
Tempelkan konfigurasi di bawah ini.
: RSA "privkey.pem" hakase : EAP "[email protected]" tensai : EAP "[email protected]"
Simpan dan keluar.
Detail konfigurasi:
- Tentukan kunci pribadi server RSA menggunakan sertifikat letsencrypt 'privkey.pem' yang terletak di direktori '/etc/strongswan/ipsec.d/private'.
- Tentukan kredensial pengguna EAP dengan format 'user :EAP "password"'.
Konfigurasi IPSec strongswan telah selesai. Mulai layanan strongswan dan aktifkan untuk diluncurkan setiap kali sistem boot.
systemctl start strongswan
systemctl enable strongswan
Langkah 4 - Aktifkan NAT di Firewalld
Pada langkah ini, kita akan mengaktifkan penyamaran NAT dan menambahkan protokol IPSec Authentication Header (AH) dan Encapsulating Security Payload (ESP) di Firewalld menggunakan konfigurasi 'rich-rule'.
Tambahkan 'AH' dan 'ESP' untuk otentikasi dan protokol enkripsi ke firewalld.
firewall-cmd --zone=public --permanent --add-rich-rule='rule protocol value="esp" accept'
firewall-cmd --zone=public --permanent --add-rich-rule='rule protocol value="ah" accept'
Tambahkan port dan layanan UDP ipsec.
firewall-cmd --zone=public --permanent --add-port=500/udp
firewall-cmd --zone=public --permanent --add-port=4500/udp
firewall-cmd --zone=public --permanent --add-service="ipsec"
Sekarang aktifkan penyamaran mode NAT dan muat ulang aturan konfigurasi firewall.
firewall-cmd --zone=public --permanent --add-masquerade
firewall-cmd --reload
Mode NAT pada firewalld telah diaktifkan, periksa menggunakan perintah di bawah ini.
firewall-cmd --list-all
Berikut adalah hasilnya.
Langkah 5 - Aktifkan Penerusan Port
Untuk mengaktifkan penerusan port, kita perlu mengedit file 'sysctl.conf'.
Edit file '/etc/sysctl.conf' menggunakan editor vim.
vim /etc/sysctl.conf
Tempelkan konfigurasi berikut di sana.
net.ipv4.ip_forward = 1 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.send_redirects = 0
Simpan dan keluar, sekarang muat ulang menggunakan perintah sysctl di bawah ini.
sysctl -p
Penerusan port telah diaktifkan. Sekarang restart layanan strongswan.
systemctl restart strongswan
Langkah 6 - Menguji VPN IPSec Strongswan
Dalam hal ini, kami akan melakukan pengujian pada MacOS X dan ponsel Android.
Di MacOS
- Buka 'System Preferences' dan klik menu 'Network'.
Klik tombol '+' untuk membuat koneksi VPN baru.
- Antarmuka:'VPN'
- Jenis VPN:'IKEv2'
- Nama Layanan:'IKEv2-vpn
- Pada 'Server Address' dan 'Remote ID', ketikkan nama domain VPN 'ikev2.hakase-labs.io'.
- Klik 'Authentication Settings'.
- Authentication using a 'Username' .
- Ketik nama pengguna 'tensai' dengan sandi '[email protected]'
- Klik 'OK' dan klik 'Terapkan'.
Koneksi VPN IKEv2 baru telah dibuat pada klien. Sekarang klik tombol sambungkan.
Dan klien telah terhubung ke server VPN strongswan dan memiliki alamat IP internal/pribadi 10.15.1.1.
Di Android
- Unduh dan instal aplikasi android strongswan asli dari Google-Play.
- Tambahkan profil VPN baru
- Ketik nama domain server 'ikev2.hakase-labs.io' dan gunakan Nama Pengguna dan Kata Sandi IKEv2 EAP otentikasi.
Berikut adalah hasil saat kita terhubung ke server VPN.
Server VPN berbasis IKEv2 IPSec telah dibuat menggunakan Strongswan dan Letsencrypt pada server CentOS 7.