GNU/Linux >> Belajar Linux >  >> Panels >> OpenVPN

Cara Mengatur Server VPN IKEv2 dengan StrongSwan di Ubuntu 22.04

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:

  1. sudo apt update

Kemudian instal perangkat lunak dengan mengetik:

  1. 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:

  1. mkdir -p ~/pki/{cacerts,certs,private}

Kemudian kunci izin agar file pribadi kita tidak dapat dilihat oleh pengguna lain:

  1. 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:

  1. 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:

  1. pki --self --ca --lifetime 3650 --in ~/pki/private/ca-key.pem \
  2. --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:

  1. 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:

  1. pki --pub --in ~/pki/private/server-key.pem --type rsa \
  2. | pki --issue --lifetime 1825 \
  3. --cacert ~/pki/cacerts/ca-cert.pem \
  4. --cakey ~/pki/private/ca-key.pem \
  5. --dn "CN=server_domain_or_IP" --san server_domain_or_IP \
  6. --flag serverAuth --flag ikeIntermediate --outform pem \
  7. > ~/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:

  1. 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:

  1. sudo mv /etc/ipsec.conf{,.original}

Buat dan buka file konfigurasi kosong baru menggunakan editor teks pilihan Anda. Di sini, Anda akan menggunakan nano :

  1. 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.conf
config 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 berikutnya leftcert , 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:

/etc/ipsec.conf
    . . .    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 untuk kanan 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 dari 10.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 :

/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.conf
config 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:

  1. 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.secrets
your_username : EAP "your_password"

Simpan dan tutup file. Sekarang setelah Anda selesai bekerja dengan parameter VPN, mulai ulang layanan VPN agar konfigurasi kami diterapkan:

  1. 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:

  1. sudo ufw allow OpenSSH

Kemudian aktifkan firewall dengan mengetik:

  1. sudo ufw enable

Kemudian, tambahkan aturan untuk mengizinkan lalu lintas UDP ke port IPSec standar, 500 dan 4500 :

  1. 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:

  1. 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.

  1. 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:

/etc/ufw/before.rules
*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:

/etc/ufw/before.rules
. . .
*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:

  1. 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:

/etc/ufw/sysctl.conf
. . .
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:

  1. sudo ufw disable
  2. 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:

  1. 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:

  1. Tekan WINDOWS+R untuk memunculkan Run dialog, dan masukkan mmc.exe untuk meluncurkan Konsol Manajemen Windows.

  2. Dari Berkas menu, navigasikan ke Tambah atau Hapus Snap-in , pilih Sertifikat dari daftar snap-in yang tersedia, dan klik Tambah .

  3. Kami ingin VPN berfungsi dengan pengguna mana pun, jadi pilih Akun Komputer dan klik Berikutnya .

  4. Kami mengonfigurasi berbagai hal di komputer lokal, jadi pilih Komputer Lokal , lalu klik Selesai .

  5. Di bawah Akar Konsol node, luaskan Sertifikat (Komputer Lokal) entri, perluas Otoritas Sertifikasi Root Tepercaya , lalu pilih Sertifikat masuk:

  6. Dari Tindakan menu, pilih Semua Tugas dan klik Impor untuk menampilkan Wisaya Impor Sertifikat. Klik Berikutnya untuk melewati pendahuluan.

  7. 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 .

  8. Pastikan Toko Sertifikat disetel ke Otoritas Sertifikasi Root Tepercaya , dan klik Berikutnya .

  9. Klik Selesai untuk mengimpor sertifikat.

Kemudian konfigurasikan VPN dengan langkah-langkah ini:

  1. Luncurkan Panel Kontrol , lalu navigasikan ke Jaringan dan Pusat Berbagi .
  2. Klik Siapkan koneksi atau jaringan baru , lalu pilih Hubungkan ke tempat kerja .
  3. Pilih Gunakan koneksi Internet saya (VPN) .
  4. 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.

  1. Import-Certificate `
  2. -CertStoreLocation cert:\LocalMachine\Root\ `
  3. -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 .

  1. Add-VpnConnection -Name "VPN Connection" `
  2. -ServerAddress "server_domain_or_IP" `
  3. -TunnelType "IKEv2" `
  4. -AuthenticationMethod "EAP" `
  5. -EncryptionLevel "Maximum" `
  6. -RememberCredential `

Jika perintah berhasil tidak akan ada output apapun. Untuk mengonfirmasi bahwa VPN telah dikonfigurasi dengan benar, gunakan Get-VPNConnection cmdlet:

  1. 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:

  1. Set-VpnConnectionIPsecConfiguration -Name "VPN Connection" `
  2. -AuthenticationTransformConstants GCMAES256 `
  3. -CipherTransformConstants GCMAES256 `
  4. -DHGroup ECP384 `
  5. -IntegrityCheckMethod SHA384 `
  6. -PfsGroup ECP384 `
  7. -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.

  1. 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:

  1. 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.”
  2. Enter your password, then click on Modify Keychain
  3. 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:

  1. Go to System Preferences and choose Network .
  2. Click on the small “plus” button on the lower-left of the list of networks.
  3. In the popup that appears, set Interface to VPN , set the VPN Type to IKEv2 , and give the connection a name.
  4. In the Server and Remote ID field, enter the server’s domain name or IP address. Leave the Local ID blank.
  5. 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

  1. sudo apt update

Next, install StrongSwan and the required plugins for authentication:

  1. 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:

  1. 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:

  1. 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:

  1. 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.secrets
your_username : EAP "your_password"

Finally, edit the /etc/ipsec.conf file to configure your client to match the server’s configuration:

/etc/ipsec.conf
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:

  1. sudo systemctl start strongswan-starter

To disconnect again, type:

  1. 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

  1. sudo apt update

Next, install StrongSwan and the required plugins for authentication:

  1. 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:

  1. 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:

  1. 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:

  1. Send yourself an email with the root certificate attached.
  2. 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 .
  3. Go to Settings , General , VPN and tap Add VPN Configuration . This will bring up the VPN connection configuration screen.
  4. Tap on Type and select IKEv2 .
  5. In the Description field, enter a short name for the VPN connection. This could be anything you like.
  6. In the Server and Remote ID field, enter the server’s domain name or IP address. The Local ID field can be left blank.
  7. Enter your username and password in the Authentication section, then tap Done .
  8. 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:

  1. Send yourself an email with the CA certificate attached. Save the CA certificate to your downloads folder.
  2. Download the StrongSwan VPN client from the Play Store.
  3. Open the app. Tap the “more” icon (. . . ) in the upper-right corner and select CA certificates .
  4. Tap the “more” icon (. . . ) in the upper-right corner again. Select Import certificate .
  5. 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:

  1. In the app, tap ADD VPN PROFILE at the top.
  2. Fill out the Server with your VPN server’s domain name or public IP address.
  3. Make sure IKEv2 EAP (Username/Password) is selected as the VPN Type.
  4. Fill out the Username and Password with the credentials you defined on the server.
  5. Deselect Select automatically in the CA certificate section and click Select CA certificate .
  6. 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).
  7. 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:

/etc/ipsec.conf
    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.


OpenVPN
  1. Cara Mengatur dan Mengonfigurasi Otoritas Sertifikat Di Ubuntu 22.04

  2. Cara Mengatur WireGuard di Ubuntu 22.04

  3. Cara Mengatur Server TeamSpeak di Ubuntu 16.04

  1. Cara Mengatur Server OpenVPN di Ubuntu 18.04

  2. Cara Mengatur VPN WireGuard di Ubuntu 18.04

  3. Cara Mengatur VPN WireGuard di Ubuntu (Panduan Langkah-demi-Langkah)

  1. Cara Mengatur VPN WireGuard di Ubuntu 20.04

  2. Cara Mengatur dan Mengonfigurasi Server OpenVPN di Ubuntu 22.04

  3. Cara Mengatur Server Email dengan Plesk di Ubuntu 20.04