Pengantar
Jaringan pribadi virtual, atau VPN, memungkinkan Anda mengenkripsi lalu lintas dengan aman saat melewati jaringan yang tidak tepercaya, seperti jaringan di kedai kopi, konferensi, atau bandara.
Internet Key Exchange v2, atau IKEv2, adalah protokol yang memungkinkan tunneling IPSec langsung antara server dan klien. Dalam implementasi VPN IKEv2, IPSec menyediakan enkripsi untuk lalu lintas jaringan. IKEv2 secara native didukung pada beberapa platform (OS X 10.11+, iOS 9.1+, dan Windows 10) tanpa aplikasi tambahan yang diperlukan, dan menangani cegukan klien dengan cukup lancar.
Dalam tutorial ini, Anda akan menyiapkan server VPN IKEv2 menggunakan StrongSwan di server Ubuntu 22.04. Anda kemudian akan mempelajari cara menghubungkannya dengan klien Windows, macOS, Ubuntu, iOS, dan Android.
Prasyarat
Untuk menyelesaikan tutorial ini, Anda memerlukan:
- Satu server Ubuntu 22.04 yang dikonfigurasi dengan mengikuti panduan penyiapan server awal Ubuntu 22.04, termasuk
sudo
pengguna non-root dan firewall.
Langkah 1 — Memasang StrongSwan
Pertama, Anda akan menginstal StrongSwan, daemon IPSec open-source yang akan Anda konfigurasikan sebagai server VPN Anda. Anda juga akan menginstal komponen infrastruktur kunci publik (PKI) sehingga Anda dapat membuat Otoritas Sertifikat (CA) untuk memberikan kredensial bagi infrastruktur Anda.
Mulailah dengan memperbarui cache paket lokal:
- sudo apt update
Kemudian instal perangkat lunak dengan mengetik:
- sudo apt install strongswan strongswan-pki libcharon-extra-plugins libcharon-extauth-plugins libstrongswan-extra-plugins
libcharon-extauth-plugins
tambahan package digunakan untuk memastikan bahwa berbagai klien dapat mengautentikasi ke server Anda menggunakan nama pengguna dan frasa sandi yang dibagikan. libstrongswan-extra-plugins
paket disertakan sehingga Strongswan mendukung suite cipher kurva eliptik yang menggunakan Curve25519
rangkaian kriptografi.
Setelah semuanya terpasang, lanjutkan ke pembuatan sertifikat Anda.
Langkah 2 — Membuat Otoritas Sertifikat
Server IKEv2 memerlukan sertifikat untuk mengidentifikasi dirinya kepada klien. Untuk membantu membuat sertifikat yang diperlukan, strongswan-pki
paket dilengkapi dengan utilitas bernama pki
untuk menghasilkan Otoritas Sertifikat dan sertifikat server.
Untuk memulai, buat beberapa direktori untuk menyimpan semua aset yang akan Anda kerjakan. Struktur direktori cocok dengan beberapa direktori di /etc/ipsec.d
, tempat Anda pada akhirnya akan memindahkan semua item yang Anda buat:
- mkdir -p ~/pki/{cacerts,certs,private}
Kemudian kunci izin agar file pribadi kita tidak dapat dilihat oleh pengguna lain:
- chmod 700 ~/pki
Sekarang Anda memiliki struktur direktori untuk menyimpan semuanya, Anda dapat membuat kunci root. Ini akan menjadi kunci RSA 4096-bit yang akan digunakan untuk menandatangani sertifikat Otoritas Sertifikat root Anda.
Jalankan perintah ini untuk menghasilkan kunci:
- pki --gen --type rsa --size 4096 --outform pem > ~/pki/private/ca-key.pem
Setelah itu Anda dapat melanjutkan ke pembuatan Root Certificate Authority Anda, menggunakan kunci yang baru saja Anda buat untuk menandatangani root certificate:
- pki --self --ca --lifetime 3650 --in ~/pki/private/ca-key.pem \
- --type rsa --dn "CN=VPN root CA" --outform pem > ~/pki/cacerts/ca-cert.pem
--lifetime 3650
flag digunakan untuk memastikan bahwa sertifikat root otoritas sertifikat akan berlaku selama 10 tahun. Sertifikat root untuk otoritas biasanya tidak berubah, karena harus didistribusikan kembali ke setiap server dan klien yang bergantung padanya, jadi 10 tahun adalah nilai kedaluwarsa default yang aman.
Anda dapat mengubah nama terhormat (DN) nilai untuk sesuatu yang lain jika Anda ingin. Nama umum (bidang CN) di sini hanyalah indikator, sehingga tidak harus cocok dengan apa pun di infrastruktur Anda.
Sekarang setelah Anda mengaktifkan dan menjalankan Otoritas Sertifikat root, Anda dapat membuat sertifikat yang akan digunakan server VPN.
Langkah 3 — Membuat Sertifikat untuk Server VPN
Anda sekarang akan membuat sertifikat dan kunci untuk server VPN. Sertifikat ini akan memungkinkan klien untuk memverifikasi keaslian server menggunakan sertifikat CA yang baru saja kita buat.
Pertama, buat kunci pribadi untuk server VPN dengan perintah berikut:
- pki --gen --type rsa --size 4096 --outform pem > ~/pki/private/server-key.pem
Sekarang, buat dan tanda tangani sertifikat server VPN dengan kunci otoritas sertifikat yang Anda buat di langkah sebelumnya. Jalankan perintah berikut, tetapi ubah bidang Nama Umum (CN) dan Nama Alternatif Subjek (SAN) menjadi nama DNS atau alamat IP server VPN Anda:
- pki --pub --in ~/pki/private/server-key.pem --type rsa \
- | pki --issue --lifetime 1825 \
- --cacert ~/pki/cacerts/ca-cert.pem \
- --cakey ~/pki/private/ca-key.pem \
- --dn "CN=server_domain_or_IP" --san server_domain_or_IP \
- --flag serverAuth --flag ikeIntermediate --outform pem \
- > ~/pki/certs/server-cert.pem
Catatan :Jika Anda menggunakan alamat IP alih-alih nama DNS, Anda harus menentukan beberapa --san
entri. Baris di blok perintah sebelumnya tempat Anda menentukan nama khusus (--dn ...
) perlu diubah dengan entri tambahan seperti kutipan baris berikut:
--dn "CN=IP address" --san @IP_address --san IP_address \
Alasan untuk tambahan ini--san @IP_address
entri adalah bahwa beberapa klien akan memeriksa apakah sertifikat TLS memiliki entri DNS dan entri Alamat IP untuk server saat mereka memverifikasi identitasnya.
--flag serverAuth
opsi digunakan untuk menunjukkan bahwa sertifikat akan digunakan secara eksplisit untuk otentikasi server, sebelum terowongan terenkripsi dibuat. --flag ikeIntermediate
opsi digunakan untuk mendukung klien macOS lama.
Sekarang setelah Anda membuat semua file TLS/SSL yang dibutuhkan StrongSwan, Anda dapat memindahkan file ke tempatnya di /etc/ipsec.d
direktori dengan mengetik:
- sudo cp -r ~/pki/* /etc/ipsec.d/
Pada langkah ini, Anda telah membuat pasangan sertifikat yang akan digunakan untuk mengamankan komunikasi antara klien dan server. Anda juga menandatangani sertifikat dengan kunci CA, sehingga klien dapat memverifikasi keaslian server VPN menggunakan sertifikat CA. Dengan semua sertifikat ini siap, Anda siap melanjutkan ke konfigurasi SrongSwan.
Langkah 4 — Mengonfigurasi StrongSwan
StrongSwan memiliki file konfigurasi default dengan beberapa contoh, tetapi kita harus melakukan sebagian besar konfigurasi sendiri. Mari buat cadangan file untuk referensi sebelum memulai dari awal:
- sudo mv /etc/ipsec.conf{,.original}
Buat dan buka file konfigurasi kosong baru menggunakan editor teks pilihan Anda. Di sini, Anda akan menggunakan nano
:
- sudo nano /etc/ipsec.conf
Catatan :Saat Anda mengerjakan bagian ini untuk mengonfigurasi bagian server VPN Anda, Anda akan menemukan pengaturan yang merujuk ke kiri dan benar sisi sambungan. Saat bekerja dengan VPN IPSec, tombol kiri konvensi berdampingan mengacu pada sistem lokal yang Anda konfigurasikan, dalam hal ini server. Arahan sisi kanan dalam pengaturan ini akan merujuk ke klien jarak jauh, seperti ponsel dan komputer lain.
Saat Anda beralih ke mengonfigurasi klien nanti dalam tutorial ini, file konfigurasi klien akan merujuk ke dirinya sendiri menggunakan berbagai kiri arahan, dan server akan dirujuk menggunakan kanan terminologi sampingan.
Pertama, kami akan memberi tahu StrongSwan untuk mencatat status daemon untuk debugging dan mengizinkan koneksi duplikat. Tambahkan baris berikut ke file:
/etc/ipsec.confconfig setup
charondebug="ike 1, knl 1, cfg 0"
uniqueids=no
Kemudian, kami akan membuat bagian konfigurasi untuk VPN kami. Kami juga akan memberi tahu StrongSwan untuk membuat Terowongan VPN IKEv2 dan memuat bagian konfigurasi ini secara otomatis saat dimulai. Tambahkan baris berikut ke file:
/etc/ipsec.conf. . .
conn ikev2-vpn
auto=add
compress=no
type=tunnel
keyexchange=ikev2
fragmentation=yes
forceencaps=yes
Kami juga akan mengonfigurasi deteksi rekan mati untuk menghapus koneksi "menggantung" jika klien tiba-tiba terputus. Tambahkan baris berikut:
/etc/ipsec.conf. . .
conn ikev2-vpn
. . .
dpdaction=clear
dpddelay=300s
rekey=no
Selanjutnya, kami akan mengonfigurasi parameter IPSec sisi "kiri" server. Masing-masing parameter berikut memastikan bahwa server dikonfigurasi untuk menerima koneksi dari klien dan mengidentifikasi dirinya dengan benar. Anda akan menambahkan setiap pengaturan ini ke /etc/ipsec.conf
file setelah Anda mengetahui apa itu dan mengapa mereka digunakan:
kiri=%any
%any
value memastikan bahwa server akan menggunakan antarmuka jaringan tempat server menerima koneksi masuk untuk komunikasi selanjutnya dengan klien. Misalnya, jika Anda menghubungkan klien melalui jaringan pribadi, server akan menggunakan alamat IP pribadi yang menerima lalu lintas untuk sisa koneksi.leftid=@server_domain_or_IP
Opsi ini mengontrol nama yang disajikan server kepada klien. Ketika digabungkan dengan opsi berikutnyaleftcert
,leftid
opsi memastikan bahwa nama server yang dikonfigurasi dan Distinguished Name (DN) yang terdapat dalam sertifikat publik cocok.leftcert=server-cert.pem
Opsi ini adalah jalur ke sertifikat publik untuk server yang Anda konfigurasikan di Langkah 3. Tanpanya, server tidak akan dapat mengotentikasi dirinya sendiri dengan klien, atau menyelesaikan negosiasi penyiapan IKEv2.leftsendcert=selalu
selalu
value memastikan bahwa setiap klien yang terhubung ke server akan selalu menerima salinan sertifikat publik server sebagai bagian dari penyiapan koneksi awal.leftsubnet=0.0.0.0/0
Opsi sisi "kiri" terakhir yang akan Anda tambahkan memberi tahu klien tentang subnet yang dapat dijangkau di belakang server. Dalam hal ini,0.0.0.0/0
digunakan untuk mewakili seluruh rangkaian alamat IPv4, artinya server akan memberi tahu klien untuk mengirim semua lalu lintas mereka melalui VPN secara default.
Sekarang setelah Anda terbiasa dengan setiap opsi sisi "kiri" yang relevan, tambahkan semuanya ke file seperti ini:
/etc/ipsec.conf. . .
conn ikev2-vpn
. . .
left=%any
leftid=@server_domain_or_IP
leftcert=server-cert.pem
leftsendcert=always
leftsubnet=0.0.0.0/0
Catatan :Saat mengonfigurasi ID server (leftid
), hanya sertakan @
karakter jika server VPN Anda akan diidentifikasi dengan nama domain:
. . . leftid=@vpn.example.com
. . .
Jika server akan diidentifikasi dengan alamat IP-nya, cukup masukkan alamat IP di:
/etc/ipsec.conf . . .
leftid=your_server_ip
. . .
Selanjutnya, kita dapat mengonfigurasi parameter IPSec sisi "kanan" klien. Masing-masing parameter berikut memberi tahu server cara menerima koneksi dari klien, bagaimana klien harus mengautentikasi ke server, dan rentang alamat IP pribadi dan server DNS yang akan digunakan klien. Tambahkan setiap pengaturan ini ke /etc/ipsec.conf
file setelah Anda mengetahui apa itu dan mengapa mereka digunakan:
kanan=%any
%any
opsi untukkanan
sisi koneksi menginstruksikan server untuk menerima koneksi masuk dari klien jarak jauh mana pun.rightid=%any
Opsi ini memastikan bahwa server tidak akan menolak koneksi dari klien yang memberikan identitas sebelum terowongan terenkripsi dibuat.rightauth=eap-mschapv2
Opsi ini mengonfigurasi metode autentikasi yang akan digunakan klien untuk mengautentikasi ke server.eap-mschapv2
digunakan di sini untuk kompatibilitas luas guna mendukung klien seperti Windows, macOS, dan perangkat Android.rightsourceip=10.10.10.0/24
Opsi ini menginstruksikan server untuk menetapkan alamat IP pribadi ke klien dari10.10.10.0/24
yang ditentukan kumpulan IP.rightdns=8.8.8.8,8.8.4.4
Alamat IP ini adalah resolver DNS publik Google. Mereka dapat diubah untuk menggunakan resolver publik lainnya, resolver server VPN, atau resolver lain yang dapat dijangkau klien.rightsendcert=never
Opsi ini menginstruksikan server bahwa klien tidak perlu mengirim sertifikat untuk mengautentikasi dirinya sendiri.
Sekarang setelah Anda terbiasa dengan opsi sisi "kanan" yang diperlukan untuk VPN, tambahkan baris berikut ke /etc/ipsec.conf
:
. . .
conn ikev2-vpn
. . .
right=%any
rightid=%any
rightauth=eap-mschapv2
rightsourceip=10.10.10.0/24
rightdns=8.8.8.8,8.8.4.4
rightsendcert=never
Sekarang kami akan memberi tahu StrongSwan untuk meminta kredensial pengguna kepada klien saat mereka terhubung:
/etc/ipsec.conf. . .
conn ikev2-vpn
. . .
eap_identity=%identity
Terakhir, tambahkan baris berikut untuk mendukung klien Linux, Windows, macOS, iOS, dan Android. Baris ini menentukan berbagai pertukaran kunci, hashing, otentikasi, dan algoritma enkripsi (biasanya disebut sebagai Cipher Suites ) bahwa StrongSwan akan mengizinkan klien yang berbeda untuk menggunakan:
/etc/ipsec.conf. . .
conn ikev2-vpn
. . .
ike=chacha20poly1305-sha512-curve25519-prfsha512,aes256gcm16-sha384-prfsha384-ecp384,aes256-sha1-modp1024,aes128-sha1-modp1024,3des-sha1-modp1024!
esp=chacha20poly1305-sha512,aes256gcm16-ecp384,aes256-sha256,aes256-sha1,3des-sha1!
Setiap cipher suite yang didukung digambarkan dari yang lain dengan koma. Misalnya chacha20poly1305-sha512-curve25519-prfsha512
adalah satu suite, dan aes256gcm16-sha384-prfsha384-ecp384
adalah yang lain. Rangkaian sandi yang tercantum di sini dipilih untuk memastikan rentang kompatibilitas terluas di seluruh klien Windows, macOS, iOS, Android, dan Linux.
File konfigurasi lengkap akan terlihat seperti ini:
/etc/ipsec.confconfig setup
charondebug="ike 1, knl 1, cfg 0"
uniqueids=no
conn ikev2-vpn
auto=add
compress=no
type=tunnel
keyexchange=ikev2
fragmentation=yes
forceencaps=yes
dpdaction=clear
dpddelay=300s
rekey=no
left=%any
leftid=@server_domain_or_IP
leftcert=server-cert.pem
leftsendcert=always
leftsubnet=0.0.0.0/0
right=%any
rightid=%any
rightauth=eap-mschapv2
rightsourceip=10.10.10.0/24
rightdns=8.8.8.8,8.8.4.4
rightsendcert=never
eap_identity=%identity
ike=chacha20poly1305-sha512-curve25519-prfsha512,aes256gcm16-sha384-prfsha384-ecp384,aes256-sha1-modp1024,aes128-sha1-modp1024,3des-sha1-modp1024!
esp=chacha20poly1305-sha512,aes256gcm16-ecp384,aes256-sha256,aes256-sha1,3des-sha1!
Simpan dan tutup file setelah Anda memverifikasi bahwa Anda telah menambahkan setiap baris dengan benar. Jika Anda menggunakan nano
, lakukan dengan menekan CTRL + X
, Y
, lalu ENTER
.
Sekarang setelah Anda mengonfigurasi parameter VPN, Anda dapat melanjutkan ke pembuatan akun sehingga pengguna dapat terhubung ke server.
Langkah 5 — Mengonfigurasi Otentikasi VPN
Server VPN Anda sekarang dikonfigurasi untuk menerima koneksi klien, tetapi belum ada kredensial yang dikonfigurasi. Anda harus mengonfigurasi beberapa hal dalam file konfigurasi khusus bernama ipsec.secrets
:
- Anda perlu memberi tahu StrongSwan di mana menemukan kunci pribadi untuk sertifikat server kami, sehingga server dapat mengautentikasi ke klien.
- Anda juga perlu menyiapkan daftar pengguna yang akan diizinkan untuk terhubung ke VPN.
Mari kita buka file rahasia untuk diedit:
- sudo nano /etc/ipsec.secrets
Pertama, beri tahu StrongSwan di mana menemukan kunci pribadi dan cara menguraikannya.
/etc/ipsec.secrets: RSA "server-key.pem"
Pastikan baris dimulai dengan :
karakter dan ada spasi setelahnya sehingga seluruh baris terbaca :RSA "server-key.pem"
.
Kemudian, Anda akan menentukan kredensial pengguna. Anda dapat membuat kombinasi nama pengguna atau kata sandi apa pun yang Anda suka:
/etc/ipsec.secretsyour_username : EAP "your_password"
Simpan dan tutup file. Sekarang setelah Anda selesai bekerja dengan parameter VPN, mulai ulang layanan VPN agar konfigurasi kami diterapkan:
- sudo systemctl restart strongswan-starter
Sekarang server VPN telah sepenuhnya dikonfigurasi dengan opsi server dan kredensial pengguna, saatnya untuk beralih ke konfigurasi bagian terpenting:firewall.
Langkah 6 — Mengonfigurasi Firewall &Penerusan IP Kernel
Setelah konfigurasi StrongSwan selesai, Anda perlu mengonfigurasi firewall untuk mengizinkan lalu lintas VPN melewati dan meneruskannya.
Jika Anda mengikuti tutorial penyiapan server awal prasyarat, Anda harus mengaktifkan firewall UFW. Jika Anda belum mengonfigurasi UFW, Anda harus mulai dengan menambahkan aturan untuk mengizinkan koneksi SSH melalui firewall sehingga sesi Anda saat ini tidak ditutup saat Anda mengaktifkan UFW:
- sudo ufw allow OpenSSH
Kemudian aktifkan firewall dengan mengetik:
- sudo ufw enable
Kemudian, tambahkan aturan untuk mengizinkan lalu lintas UDP ke port IPSec standar, 500
dan 4500
:
- sudo ufw allow 500,4500/udp
Selanjutnya, Anda akan membuka salah satu file konfigurasi UFW untuk menambahkan beberapa kebijakan tingkat rendah untuk perutean dan penerusan paket IPSec. Namun, sebelum melakukan ini, Anda perlu menemukan antarmuka jaringan di server kami yang digunakan untuk akses internet. Temukan antarmuka ini dengan menanyakan perangkat yang terkait dengan rute default:
- ip route show default
Antarmuka publik Anda harus mengikuti kata "dev". Misalnya, hasil ini menunjukkan antarmuka bernama eth0
, yang disorot dalam contoh berikut:
Outputdefault via your_server_ip dev eth0 proto static
Saat Anda memiliki antarmuka jaringan publik, buka /etc/ufw/before.rules
file di editor teks Anda. Aturan dalam file ini ditambahkan ke firewall sebelum aturan input dan output lainnya. Mereka digunakan untuk mengonfigurasi terjemahan alamat jaringan (NAT) sehingga server dapat merutekan koneksi dengan benar ke dan dari klien dan Internet.
- sudo nano /etc/ufw/before.rules
Di dekat bagian atas file (sebelum *filter
baris), tambahkan blok konfigurasi berikut. Ubah setiap contoh eth0
dalam konfigurasi di atas untuk mencocokkan nama antarmuka yang Anda temukan dengan ip route
. *nat
baris membuat aturan sehingga firewall dapat dengan benar merutekan dan memanipulasi lalu lintas antara klien VPN dan internet. *mangle
line menyesuaikan ukuran segmen paket maksimum untuk mencegah potensi masalah dengan klien VPN tertentu:
*nat
-A POSTROUTING -s 10.10.10.0/24 -o eth0 -m policy --pol ipsec --dir out -j ACCEPT
-A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE
COMMIT
*mangle
-A FORWARD --match policy --pol ipsec --dir in -s 10.10.10.0/24 -o eth0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360
COMMIT
*filter
:ufw-before-input - [0:0]
:ufw-before-output - [0:0]
:ufw-before-forward - [0:0]
:ufw-not-local - [0:0]
. . .
Selanjutnya, setelah *filter
dan garis definisi rantai, tambahkan satu blok konfigurasi lagi:
. . .
*filter
:ufw-before-input - [0:0]
:ufw-before-output - [0:0]
:ufw-before-forward - [0:0]
:ufw-not-local - [0:0]
-A ufw-before-forward --match policy --pol ipsec --dir in --proto esp -s 10.10.10.0/24 -j ACCEPT
-A ufw-before-forward --match policy --pol ipsec --dir out --proto esp -d 10.10.10.0/24 -j ACCEPT
Baris-baris ini memberi tahu firewall untuk meneruskan lalu lintas ESP (Encapsulating Security Payload) sehingga klien VPN dapat terhubung. ESP memberikan keamanan tambahan untuk paket VPN kami karena paket tersebut melintasi jaringan yang tidak tepercaya.
Setelah selesai, simpan dan tutup file setelah Anda memverifikasi bahwa Anda telah menambahkan setiap baris dengan benar. Jika Anda menggunakan nano
, lakukan dengan menekan CTRL + X
, Y
, lalu ENTER
.
Sebelum memulai ulang firewall, Anda juga perlu mengubah beberapa parameter kernel jaringan untuk memungkinkan perutean dari satu antarmuka ke antarmuka lainnya. File yang mengontrol pengaturan ini disebut /etc/ufw/sysctl.conf
. Anda perlu mengonfigurasi beberapa hal dalam file.
Penerusan paket IPv4 pertama perlu diaktifkan agar lalu lintas dapat berpindah antara VPN dan antarmuka jaringan yang menghadap publik di server. Selanjutnya Anda akan menonaktifkan penemuan Path MTU untuk mencegah masalah fragmentasi paket. Terakhir, kami tidak akan menerima pengalihan ICMP atau mengirim pengalihan ICMP untuk mencegah serangan man-in-the-middle.
Buka file konfigurasi parameter kernel UFW menggunakan nano
atau editor teks pilihan Anda:
- sudo nano /etc/ufw/sysctl.conf
Sekarang tambahkan net/ipv4/ip_forward=1
berikut ini pengaturan di akhir file untuk mengaktifkan paket penerusan antar antarmuka:
. . .
net/ipv4/ip_forward=1
Blok selanjutnya mengirim dan menerima paket redirect ICMP dengan menambahkan baris berikut ke akhir file:
/etc/ufw/sysctl.conf. . .
net/ipv4/conf/all/accept_redirects=0
net/ipv4/conf/all/send_redirects=0
Terakhir, matikan penemuan Path MTU dengan menambahkan baris ini ke akhir file:
/etc/ufw/sysctl.conf. . .
net/ipv4/ip_no_pmtu_disc=1
Simpan file ketika Anda selesai. Sekarang Anda dapat mengaktifkan semua perubahan Anda dengan menonaktifkan dan mengaktifkan kembali firewall, karena UFW menerapkan pengaturan ini setiap kali dimulai ulang:
- sudo ufw disable
- sudo ufw enable
Anda akan diminta untuk mengonfirmasi prosesnya. Ketik Y
untuk mengaktifkan kembali UFW dengan pengaturan baru.
Langkah 7 — Menguji Koneksi VPN di Windows, macOS, Ubuntu, iOS, dan Android
Sekarang setelah Anda menyiapkan semuanya, saatnya untuk mencobanya. Pertama, Anda harus menyalin sertifikat CA yang Anda buat dan menginstalnya di perangkat klien Anda yang akan terhubung ke VPN. Cara termudah untuk melakukannya adalah dengan masuk ke server Anda dan menampilkan konten file sertifikat:
- cat /etc/ipsec.d/cacerts/ca-cert.pem
Anda akan melihat output seperti ini:
Output-----BEGIN CERTIFICATE-----
MIIFNDCCAxygAwIBAgIIHCsidG5mXzgwDQYJKoZIhvcNAQEMBQAwODELMAkGA1UE
. . .
H2YUdz8XNHrJHvMQKWFpi0rlEcMs+MSXPFWE3Q7UbaZJ/h8wpSldSUbQRUlphExJ
dJ4PX+MUJO/vjG1/ie6Kh25xbBAc3qNq8siiJZDwrg6vjEK7eiZ1rA==
-----END CERTIFICATE-----
Salin output ini ke komputer Anda, termasuk -----BEGIN CERTIFICATE------code> dan
-----AKHIR SERTIFIKAT------code> baris, dan simpan ke file dengan nama yang dapat dikenali, seperti
ca-cert.pem
. Pastikan file yang Anda buat memiliki .pem
ekstensi.
Atau, gunakan SFTP untuk mentransfer file ke komputer Anda.
Setelah Anda memiliki ca-cert.pem
file yang diunduh ke komputer Anda, Anda dapat mengatur koneksi ke VPN.
Menghubungkan dari Windows
Ada beberapa cara untuk mengimpor sertifikat root dan mengonfigurasi Windows untuk terhubung ke VPN. Metode pertama menggunakan alat grafis untuk setiap langkah. Metode kedua menggunakan perintah PowerShell, yang dapat ditulis dan dimodifikasi agar sesuai dengan konfigurasi VPN Anda.
Catatan: Petunjuk ini telah diuji pada penginstalan Windows 10 yang menjalankan versi 1903 dan 1909.
Mengonfigurasi Windows dengan Alat Grafis
Pertama, impor sertifikat root dengan mengikuti langkah-langkah berikut:
-
Tekan
WINDOWS+R
untuk memunculkan Run dialog, dan masukkanmmc.exe
untuk meluncurkan Konsol Manajemen Windows. -
Dari Berkas menu, navigasikan ke Tambah atau Hapus Snap-in , pilih Sertifikat dari daftar snap-in yang tersedia, dan klik Tambah .
-
Kami ingin VPN berfungsi dengan pengguna mana pun, jadi pilih Akun Komputer dan klik Berikutnya .
-
Kami mengonfigurasi berbagai hal di komputer lokal, jadi pilih Komputer Lokal , lalu klik Selesai .
-
Di bawah Akar Konsol node, luaskan Sertifikat (Komputer Lokal) entri, perluas Otoritas Sertifikasi Root Tepercaya , lalu pilih Sertifikat masuk:
-
Dari Tindakan menu, pilih Semua Tugas dan klik Impor untuk menampilkan Wisaya Impor Sertifikat. Klik Berikutnya untuk melewati pendahuluan.
-
Pada File untuk Diimpor layar, tekan tombol Jelajahi , pastikan Anda mengubah jenis file dari “X.509 Certificate (.cer; .crt)” menjadi “Semua File (. )”, dan pilih
ca-cert.pem
file yang telah Anda simpan. Kemudian klik Berikutnya . -
Pastikan Toko Sertifikat disetel ke Otoritas Sertifikasi Root Tepercaya , dan klik Berikutnya .
-
Klik Selesai untuk mengimpor sertifikat.
Kemudian konfigurasikan VPN dengan langkah-langkah ini:
- Luncurkan Panel Kontrol , lalu navigasikan ke Jaringan dan Pusat Berbagi .
- Klik Siapkan koneksi atau jaringan baru , lalu pilih Hubungkan ke tempat kerja .
- Pilih Gunakan koneksi Internet saya (VPN) .
- Masukkan detail server VPN. Masukkan nama domain atau alamat IP server di alamat Internet isian, lalu isi Destination name dengan sesuatu yang menjelaskan koneksi VPN Anda. Kemudian klik Selesai .
Mengonfigurasi Windows menggunakan PowerShell
Untuk mengimpor sertifikat CA root menggunakan PowerShell, pertama buka prompt PowerShell dengan hak administrator. Untuk melakukannya, klik kanan ikon menu Start dan pilih Windows PowerShell (Admin)
. Anda juga dapat membuka prompt perintah sebagai administrator dan ketik powershell
.
Selanjutnya kita akan mengimport sertifikat menggunakan Import-Certificate
cmdlet PowerShell. Pada perintah berikut, -CertStoreLocation
pertama argumen akan memastikan bahwa sertifikat diimpor ke Otoritas Sertifikasi Root Tepercaya komputer simpan sehingga semua program dan pengguna dapat memverifikasi sertifikat server VPN. -FilePath
argumen harus mengarah ke lokasi tempat Anda menyalin sertifikat. Pada contoh berikut pathnya adalah C:\Users\sammy\Documents\ca-cert.pem
. Pastikan Anda mengedit perintah agar sesuai dengan lokasi yang Anda gunakan.
- Import-Certificate `
- -CertStoreLocation cert:\LocalMachine\Root\ `
- -FilePath C:\users\sammy\Documents\ca-cert.pem
Perintah akan menampilkan sesuatu seperti berikut:
Output PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\Root
Thumbprint Subject
---------- -------
DB00813B4087E9367861E8463A60CEA0ADC5F002 CN=VPN root CA
Sekarang untuk mengkonfigurasi VPN menggunakan PowerShell, jalankan perintah berikut. Ganti nama DNS server Anda atau alamat IP di -ServerAddress
garis. Berbagai flag akan memastikan bahwa Windows dikonfigurasi dengan benar dengan parameter keamanan yang sesuai yang cocok dengan opsi yang Anda atur di /etc/ipsec.conf
.
- Add-VpnConnection -Name "VPN Connection" `
- -ServerAddress "server_domain_or_IP" `
- -TunnelType "IKEv2" `
- -AuthenticationMethod "EAP" `
- -EncryptionLevel "Maximum" `
- -RememberCredential `
Jika perintah berhasil tidak akan ada output apapun. Untuk mengonfirmasi bahwa VPN telah dikonfigurasi dengan benar, gunakan Get-VPNConnection
cmdlet:
- Get-VpnConnection -Name "VPN Connection"
Anda akan menerima output seperti berikut:
OutputName : VPN Connection
ServerAddress : your_server_ip
AllUserConnection : False
Guid : {B055A1AB-175C-4028-B4A8-D34309A2B20E}
TunnelType : Ikev2
AuthenticationMethod : {Eap}
EncryptionLevel : Maximum
L2tpIPsecAuth :
UseWinlogonCredential : False
EapConfigXmlStream : #document
ConnectionStatus : Disconnected
RememberCredential : True
SplitTunneling : False
DnsSuffix :
IdleDisconnectSeconds : 0
Secara default Windows memilih algoritma yang lebih lama dan lebih lambat. Jalankan Set-VpnConnectionIPsecConfiguration
cmdlet to upgrade the encryption parameters that Windows will use for the IKEv2 key exchange, and to encrypt packets:
- Set-VpnConnectionIPsecConfiguration -Name "VPN Connection" `
- -AuthenticationTransformConstants GCMAES256 `
- -CipherTransformConstants GCMAES256 `
- -DHGroup ECP384 `
- -IntegrityCheckMethod SHA384 `
- -PfsGroup ECP384 `
- -EncryptionMethod GCMAES256
Catatan :If you would like to delete the VPN connection and reconfigure it with different options, you can run the Remove-VpnConnection
cmdlet.
- Remove-VpnConnection -Name "VPN Connection" -Force
The -Force
flag will skip prompting you to confirm the removal. You must be disconnected from the VPN if you attempt to remove it using this command.
Connecting to the VPN
Once you have the certificate imported and the VPN configured using either method, your new VPN connection will be visible under the list of networks. Select the VPN and click Connect . You’ll be prompted for your username and password. Type them in, click OK , and you’ll be connected.
Connecting from macOS
Follow these steps to import the certificate:
- Double-click the certificate file. Keychain Access will pop up with a dialog that says “Keychain Access is trying to modify the system keychain. Enter your password to allow this.”
- Enter your password, then click on Modify Keychain
- Double-click the newly imported VPN certificate. This brings up a small properties window where you can specify the trust levels. Set IP Security (IPSec) to Always Trust and you’ll be prompted for your password again. This setting saves automatically after entering the password.
Now that the certificate is imported and trusted, configure the VPN connection with these steps:
- Go to System Preferences and choose Network .
- Click on the small “plus” button on the lower-left of the list of networks.
- In the popup that appears, set Interface to VPN , set the VPN Type to IKEv2 , and give the connection a name.
- In the Server and Remote ID field, enter the server’s domain name or IP address. Leave the Local ID blank.
- Click on Authentication Settings , select Username , and enter your username and password you configured for your VPN user. Kemudian klik Oke .
Finally, click on Connect to connect to the VPN. You should now be connected to the VPN.
Connecting from Ubuntu
To connect from an Ubuntu machine, you can set up and manage StrongSwan as a service or use a one-off command every time you wish to connect. Instructions are provided for both.
Managing StrongSwan as a Service
To manage StrongSwan as a service, you will need to perform the following configuration steps.
First, update your local package cache using apt
- sudo apt update
Next, install StrongSwan and the required plugins for authentication:
- sudo apt install strongswan libcharon-extra-plugins
Now you’ll need a copy of the CA certificate in the /etc/ipsec.d/cacerts
directory so that your client can verify the server’s identity. Run the following command to copy the ca-cert.pem
file into place:
- sudo cp /tmp/ca-cert.pem /etc/ipsec.d/cacerts
To ensure the VPN only runs on demand, use systemctl
to disable StrongSwan from running automatically:
- sudo systemctl disable --now strongswan-starter
Next configure the username and password that you will use to authenticate to the VPN server. Edit /etc/ipsec.secrets
using nano or your preferred editor:
- sudo nano /etc/ipsec.secrets
Add the following line, editing the highlighted username and password values to match the ones that you configured on the server:
/etc/ipsec.secretsyour_username : EAP "your_password"
Finally, edit the /etc/ipsec.conf
file to configure your client to match the server’s configuration:
config setup
conn ikev2-rw
right=server_domain_or_IP
# This should match the `leftid` value on your server's configuration
rightid=server_domain_or_IP
rightsubnet=0.0.0.0/0
rightauth=pubkey
leftsourceip=%config
leftid=username
leftauth=eap-mschapv2
eap_identity=%identity
auto=start
To connect to the VPN, type:
- sudo systemctl start strongswan-starter
To disconnect again, type:
- sudo systemctl stop strongswan-starter
Using the charon-cmd
Client for One-Off Connections
To manage StrongSwan as a service, you will need to perform the following configuration steps.
First, update your local package cache using apt
- sudo apt update
Next, install StrongSwan and the required plugins for authentication:
- sudo apt install strongswan libcharon-extra-plugins
Now you’ll need a copy of the CA certificate in the /etc/ipsec.d/cacerts
directory so that your client can verify the server’s identity. Run the following command to copy the ca-cert.pem
file into place:
- sudo cp /tmp/ca-cert.pem /etc/ipsec.d/cacerts
At this point you can connect to the VPN server with charon-cmd
using the server’s CA certificate, the VPN server’s IP address, and the username you configured.
Run the following command whenever you want to connect to the VPN:
- sudo charon-cmd --cert ca-cert.pem --host vpn_domain_or_IP --identity your_username
When prompted, provide the VPN user’s password and you will be connected to the VPN. To disconnect, press CTRL+C
in the terminal and wait for the connection to close.
Connecting from iOS
To configure the VPN connection on an iOS device, follow these steps:
- Send yourself an email with the root certificate attached.
- Open the email on your iOS device and tap on the attached certificate file, then tap Install and enter your passcode. Once it installs, tap Done .
- Go to Settings , General , VPN and tap Add VPN Configuration . This will bring up the VPN connection configuration screen.
- Tap on Type and select IKEv2 .
- In the Description field, enter a short name for the VPN connection. This could be anything you like.
- In the Server and Remote ID field, enter the server’s domain name or IP address. The Local ID field can be left blank.
- Enter your username and password in the Authentication section, then tap Done .
- Select the VPN connection that you just created, tap the switch on the top of the page, and you’ll be connected.
Connecting from Android
Follow these steps to import the certificate:
- Send yourself an email with the CA certificate attached. Save the CA certificate to your downloads folder.
- Download the StrongSwan VPN client from the Play Store.
- Open the app. Tap the “more” icon (. . . ) in the upper-right corner and select CA certificates .
- Tap the “more” icon (. . . ) in the upper-right corner again. Select Import certificate .
- Browse to the CA certificate file in your downloads folder and select it to import it into the app.
Now that the certificate is imported into the StrongSwan app, you can configure the VPN connection with these steps:
- In the app, tap ADD VPN PROFILE at the top.
- Fill out the Server with your VPN server’s domain name or public IP address.
- Make sure IKEv2 EAP (Username/Password) is selected as the VPN Type.
- Fill out the Username and Password with the credentials you defined on the server.
- Deselect Select automatically in the CA certificate section and click Select CA certificate .
- Tap the IMPORTED tab at the top of the screen and choose the CA you imported (it will be named “VPN root CA” if you didn’t change the “DN” earlier).
- If you’d like, fill out Profile name (optional) with a more descriptive name.
When you wish to connect to the VPN, click on the profile you just created in the StrongSwan application.
Troubleshooting Connections
If you are unable to import the certificate, ensure the file has the .pem
extension, and not .pem.txt
.
If you’re unable to connect to the VPN, check the server name or IP address you used. The server’s domain name or IP address must match what you’ve configured as the common name (CN) while creating the certificate. If they don’t match, the VPN connection won’t work. For example, if you set up a certificate with the CN of vpn.example.com
, you must use vpn.example.com
when you enter the VPN server details. Double-check the command you used to generate the certificate, and the values you used when creating your VPN connection.
Finally, double-check the VPN configuration to ensure the leftid
value is configured with the @
symbol if you’re using a domain name:
leftid=@vpn.example.com
If you’re using an IP address, ensure that the @
symbol is omitted. Also make sure that when you generated the server-cert.pem
file that you included both --san @IP_address
and --san IP_address
bendera.
Kesimpulan
In this tutorial, you’ve built a VPN server that uses the IKEv2 protocol. You learned about the directives that control the left
and right
sides of a connection on both server and clients. You also configured a Windows, macOS, iOS, Android, or Linux client to connect to the VPN.
To add or remove users, skip to Step 5 again. Each line in /etc/ipsec.secrets
is for one user, so adding or removing users, or changing passwords just requires editing the file.
Now you can be assured that your online activities will remain secure wherever you go and with any device that you use to access the internet.