Cara Mengatur Server OpenVPN di Ubuntu 20.04

Panduan utama untuk menyiapkan Server OpenVPN yang aman di Ubuntu 20.04

Virtual Private Network (VPN) memungkinkan Anda untuk secara aman dan pribadi terhubung ke jaringan pribadi jarak jauh, misalnya, jaringan kantor Anda, atau Internet sedemikian rupa seolah-olah Anda terhubung langsung ke jaringan pribadi.

VPN bekerja dalam arsitektur server-klien. Server VPN dikerahkan pada mesin dan dapat diakses publik melalui Internet. Server VPN dapat dikonfigurasi untuk mengizinkan koneksi ke LAN pribadi, seperti jaringan kantor, atau mengizinkan koneksi ke Internet. Pengguna terhubung ke server VPN menggunakan klien VPN di mesin lokalnya. Komunikasi antara server VPN dan klien berlangsung menggunakan protokol tunneling yang aman. Untuk Internet, seolah-olah tujuan lalu lintas adalah server VPN; namun, lalu lintas diteruskan ke klien melalui server.

VPN memiliki banyak kegunaan dalam kehidupan sehari-hari, seperti menghubungkan dengan aman ke jaringan Wifi publik, yang sering disusupi atau melewati pembatasan geografis di situs web tertentu dengan menyambungkan ke VPN yang berbasis di negara yang diizinkan oleh situs web tersebut.

OpenVPN adalah implementasi VPN yang banyak digunakan yang memungkinkan berbagai konfigurasi dan opsi. Ini menggunakan protokol Secure Sockets Layer (SSL) untuk enkripsi data dan kunci yang dibagikan sebelumnya, nama pengguna/kata sandi atau sertifikat untuk otentikasi klien VPN. Pada artikel ini, kita akan melihat cara mengatur server VPN dan klien VPN di Ubuntu 20.04.

Instalasi

OpenVPN tersedia di repositori resmi Ubuntu dalam paket openvpn. Paket ini menginstal server OpenVPN dan juga klien.

sudo apt install openvpn

Seperti disebutkan sebelumnya, OpenVPN menggunakan sertifikat SSL untuk mengenkripsi data antara server dan klien. Kami perlu menyiapkan otoritas sertifikat (CA) kami sendiri untuk menerbitkan sertifikat untuk VPN. Perhatikan bahwa ini harus diatur pada mesin yang berbeda dari mesin tempat OpenVPN diatur; alasannya adalah jika berada di server yang sama dan jika disusupi, penyerang dapat mengakses kunci pribadi dan dengan demikian menyerang koneksi VPN.

Kami akan menggunakan alat yang disebut 'Easy-RSA' untuk menyiapkan otoritas sertifikat. Untuk menginstalnya, jalankan yang berikut ini pada mesin CA, mesin server OpenVPN dan mesin klien, karena konfigurasi diperlukan pada ketiganya untuk mengatur CA.

sudo apt install easy-rsa

Kami sekarang akan terlebih dahulu mengonfigurasi otoritas sertifikat pada mesin CA dan melakukan beberapa langkah konfigurasi yang diperlukan untuk hal yang sama pada mesin server Open VPN.

Pengaturan Otoritas Sertifikat

Pengaturan awal pada mesin CA

Sekarang, paket ini menginstal perintah yang disebut make-cadir yang digunakan untuk membuat folder untuk konfigurasi otoritas sertifikat. Mari buat folder menggunakan ini dan masuk ke folder.

make-cadir cert_authority && cd cert_authority

Buka file bernama vars dibuat di direktori ini. File ini berisi beberapa variabel konfigurasi yang perlu kita modifikasi. Nilai yang perlu diubah ada pada baris 91-96, setelah komentar tentang Bidang Organisasi yang menggambarkan bidang-bidang tersebut. Hapus tanda komentar pada baris dan isi nilai yang sesuai sebagai pengganti nilai sampel.

Simpan dan keluar dari file. Jika Anda menggunakan editor vim, tekan ESC, Tipe :wq dan tekan Memasuki untuk menyimpan dan keluar.

Selanjutnya, kami menjalankan easyrsa program dalam direktori untuk menyiapkan infrastruktur kunci publik (PKI), yang akan digunakan untuk menghasilkan kunci publik dan sertifikat.

./easyrsa init-pki

Langkah selanjutnya akan menghasilkan kunci CA dan sertifikat. Saat perintah meminta kata sandi, masukkan kata sandi untuk kunci CA. Juga, masukkan nama umum saat diminta. Jika Anda membiarkannya kosong, nama default Easy-RSA CA name akan digunakan.

./easyrsa build-ca

Seperti yang dapat kita lihat dari output, sertifikat dan kunci telah dibuat. Kunci ini akan digunakan untuk menandatangani sertifikat klien dan server, oleh karena itu tidak boleh disentuh/dimodifikasi.

Sekarang, kami memiliki pengaturan PKI. Langkah selanjutnya adalah membuat server key dan certificate pada mesin yang akan kita gunakan sebagai server OpenVPN. Sertifikat ini nantinya akan ditandatangani oleh mesin CA.

Menghasilkan Kunci Server dan Sertifikat di mesin Server

Kami telah menginstal Easy RSA di mesin server. Sekarang lakukan tiga langkah pada mesin server, yang sebelumnya kami lakukan pada mesin CA, yaitu. membuat direktori CA menggunakan make-cadir dan masuk ke dalamnya, memodifikasi variabel di vars file dan menghasilkan PKI menggunakan ./easyrsa init-pki memerintah.

Selanjutnya, kita perlu menjalankan perintah untuk menghasilkan permintaan dan kunci sertifikat server.

./easyrsa gen-req server nopass

Perhatikan bahwa kami melewati opsi tidak lulus sehingga perintah tidak akan meminta kita memasukkan kata sandi untuk kunci server. Itu masih akan meminta nama umum untuk server, yang dapat Anda masukkan apa saja, atau biarkan kosong untuk nama default (pelayan) untuk digunakan.

Pindahkan file kunci yang dihasilkan ke dalam /etc/openvpn direktori.

sudo mv pki/private/server.key /etc/openvpn

Kirim permintaan sertifikat ke mesin CA. Kami akan menggunakan perintah scp untuk tujuan ini.

scp pki/reqs/server.req pengguna@CA_MACHINE_HOSTNAME:/direktori

Pada tangkapan layar di atas, host 45.79.125.41 adalah mesin CA. Kami telah menyalin sertifikat di direktori /root.

Sekarang, sertifikat server telah disalin ke mesin CA. Langkah selanjutnya adalah kembali ke mesin CA dan menandatangani sertifikat ini.

Menandatangani sertifikat server di CA

Pertama, mari kita verifikasi apakah file permintaan sertifikat dari server telah disalin pada mesin CA. Buka direktori tempat kami menyalin file (/ root dalam contoh saya) dan jalankan ls.

:~# cd /root && ls cert_authority server.req

Seperti yang bisa kita lihat, file server.req hadir. Selanjutnya, buka direktori CA dan impor permintaan ini.

cd cert_authority ./easyrsa import-req /root/server.req server

Untuk menandatangani permintaan ini, jalankan perintah berikut.

./easyrsa sign-req server server

Di sini argumen pertama adalah jenis permintaan, yaitu, pelayan, dan argumen kedua adalah nama umum dari mesin server, yang sebelumnya kami gunakan nilai defaultnya, yaitu, server.

Masukkan frasa Ya, dan kata sandi untuk kunci CA saat diminta.

Sekarang kita dapat menghapus file permintaan sertifikat dan menyalin sertifikat yang dihasilkan untuk server, serta sertifikat publik CA kembali ke mesin server.

rm /root/server.req scp pki/issued/server.crt [email protected]:/root scp pki/ca.crt [email protected]:/root

Selanjutnya, kita harus melakukan beberapa langkah lagi untuk memastikan koneksi VPN yang aman.

Pembuatan Parameter DH

Pertukaran kunci DH (Diffie-Hellman) adalah algoritme untuk memastikan pertukaran kunci kripto yang aman melalui saluran yang tidak aman. Pertama, mari pindahkan sertifikat yang diterima dan sertifikat publik CA ke /etc/openvpn.

mv /root/ca.crt /root/server.crt /etc/openvpn

Buka folder CA di mesin server dan jalankan perintah berikut untuk menghasilkan parameter DH. Mungkin butuh waktu lama untuk menghasilkan.

./easyrsa gen-dh

Sekarang, pindahkan file yang dihasilkan ke /etc/openvpn.

mv /root/cert_authority/pki/dh.pem /etc/openvpn

Membuat kunci TA

OpenVPN menggunakan tindakan keamanan tambahan lainnya menggunakan kunci autentikasi TLS. Untuk membuat kunci autentikasi TLS, jalankan:

openvpn --genkey --secret tls_auth.key

Dan pindahkan kuncinya ke /etc/openvpn.

mv tls_auth.key /etc/openvpn

Konfigurasi kunci server dan penyiapan otoritas sertifikat sekarang selesai. Mari kita beralih ke konfigurasi sebenarnya dari server VPN sekarang.

Konfigurasi Server OpenVPN

File konfigurasi untuk server OpenVPN tidak dibuat secara otomatis, namun kita dapat menggunakan file konfigurasi template dari openvpn kemasan.

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/ Sudo gzip -d /etc/openvpn/server.conf.gz

Buka file menggunakan vim atau editor pilihan Anda.

cd /etc/openvpn vim server.conf

Kita harus memasukkan nama umum kunci dan sertifikat yang kita buat sebelumnya. Pergi ke baris no. 78. Karena kami menggunakan semua nama default, kami tidak mengubahnya. Kemudian periksa nama file parameter DH pada baris 85. Kami telah menggunakan nama dh.pem, jadi mari kita ubah.

Selanjutnya, mari kita ubah hak istimewa untuk server OpenVPN. Pergi ke baris 274 dan 275 dan hapus yang terdepan ; untuk membatalkan komentar itu.

Demikian pula pergi ke baris 192 dan hapus titik koma. Arahan ini memungkinkan lalu lintas semua klien melewati VPN.

Simpan dan keluar dari file.

Ubah kepemilikan folder /etc/openvpn menjadi root.

sudo chown -R root:root /etc/openvpn

Pengaturan Jaringan dan Firewall

Kami perlu mengizinkan penerusan IP di server agar paket dapat diteruskan dari dan ke klien VPN. Batalkan komentar pada baris 28 /etc/sysctl.conf:

Simpan dan keluar dari file.

Mengulang kembali sistemctl agar perubahan ini terjadi.

sudo sysctl -p

Kita perlu mengatur Network Address Translation (NAT) di server menggunakan firewall UFW sehingga memungkinkan Klien VPN mengakses Internet menggunakan Alamat IP server VPN. Pertama, mari kita aktifkan penerusan paket dalam konfigurasi firewall. Membuka /etc/default/ufw dan ubah variabel pada baris 19 menjadi ACCEPT.

Simpan dan keluar dari file.

Sekarang tambahkan aturan berikut ke file /etc/ufw/before.rules sebelum Saring baris dalam file.

*nat :POSTROUTING MENERIMA [0:0] -A POSTROUTING -s 10.8.0.0/8 -o -j MASQUERADE COMMIT

Masukkan antarmuka jaringan Anda sebagai pengganti . Anda dapat melihat antarmuka jaringan Anda dengan perintah ifconfig.

Izinkan lalu lintas untuk layanan OpenVPN di Firewall dan izinkan port 1194.

sudo ufw izinkan openvpn && sudo ufw izinkan 1194

Muat ulang layanan firewall.

sudo ufw reload

Sekarang kita dapat memulai ulang daemon server Open VPN dengan menjalankan:

layanan sudo openvpn restart

Aktifkan untuk memulai saat boot dengan menjalankan:

sudo systemctl aktifkan openvpn

Server OpenVPN sekarang telah dikonfigurasi dan telah dimulai. Sekarang mari kita lanjutkan ke permintaan sertifikat klien dan pembuatan kunci dan konfigurasi lainnya.

Konfigurasi Klien OpenVPN

Kami perlu membuat kunci dan permintaan sertifikat untuk klien. Prosedur untuk melakukan ini sama dengan untuk server.

Meskipun kunci klien dan permintaan sertifikat dapat dibuat di mesin klien dan kemudian ditransfer ke mesin CA, disarankan untuk membuatnya di mesin server. Keuntungan melakukan ini di server adalah Anda dapat membuat skrip untuk melakukan semua langkah yang diperlukan di server yang memudahkan klien baru untuk bergabung dengan VPN.

Buka folder CA di server dan jalankan yang berikut:

cd ~/cert_authority ./easyrsa gen-req client nopass

Dengan cara yang sama seperti yang dilakukan sebelumnya, masukkan nama umum saat diminta, atau biarkan kosong untuk menggunakan nama umum default, yaitu, klien.

Sekarang mari salin permintaan sertifikat klien yang dihasilkan ke mesin CA.

scp pki/reqs/client.req [email protected]:/root

Mari impor permintaan ini di mesin CA:

./easyrsa import-req /root/client.req client

Dan sekarang mari kita tandatangani:

./easyrsa sign-req klien klien

MemasukiYa ketika diminta untuk melanjutkan. Masukkan kata sandi untuk kunci CA saat ditanya.

Kami sekarang dapat menghapus file yang diminta untuk klien dan menyalin permintaan kembali ke mesin server VPN.

rm /root/client.req scp pki/issued/client.crt [email protected]:/root

Mari kita buat folder bernama klien untuk menyimpan semua file yang terkait dengan klien di server VPN. Kami akan memindahkan kunci klien dan sertifikat ke folder ini.

mkdir ~/client Sudo mv ~/client.crt ~/cert_authority/pki/private/client.key ~/client

Sekarang, mari kita buat file konfigurasi dari template yang tersedia, mirip dengan cara kita membuat file konfigurasi server.

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client

Buka filenya klien.conf. Pada baris 42, masukkan nama host atau Alamat IP mesin server Anda sebagai ganti server saya-1.

Batalkan komentar pada baris 61 dan 62 dengan menghapus titik koma di depan, untuk menurunkan hak istimewa file.

Selanjutnya, beri komentar pada baris 88-90 dan baris 108. Alasannya adalah karena kita ingin menambahkan konten file yang disebutkan secara manual daripada menggunakan lokasi file. Tujuan melakukan ini adalah bahwa file konfigurasi klien nantinya akan ditransfer ke klien, di mana kita sebenarnya tidak akan memiliki kunci klien dan file sertifikat; maka kami menyalin konten yang ada di file konfigurasi itu sendiri.

Tambahkan berikut ini ke file konfigurasi klien. Masukkan isi file dari masing-masing file di dalam tag yang diberikan.

 # Tempel konten file ca.crt di sini # Tempel konten file client.crt di sini # Tempel konten file client.key di sini key-direction 1 # Tempel konten file tls_auth.key di sini 

Simpan dan keluar dari file. Ganti nama file ini dari klien.conf ke klien.ovpn, karena yang terakhir adalah ekstensi yang diperlukan untuk file konfigurasi yang dapat diimpor sebagai konfigurasi jaringan.

Sekarang, transfer file klien.ovpn ke klien, yaitu, mesin lokal.

Lari scp pada mesin klien Anda untuk mentransfer file dari mesin server ke mesin lokal Anda.

scp user@server_ip:/path_to_file local_destination_path

Terakhir, kita perlu menggunakan file konfigurasi ini untuk terhubung ke server VPN. Ini dapat dilakukan baik melalui baris perintah maupun GUI.

Untuk memulai klien VPN dari baris perintah, jalankan:

sudo openvpn --config client.ovpn

Dan itu adalah satu-satunya perintah yang perlu Anda jalankan untuk memulai Klien VPN.

Untuk memulai klien VPN melalui GUI, lakukan langkah-langkah berikut.

Buka Pengaturan » Jaringan di mesin klien Anda.

Klik pada + tombol di bagian VPN dan pilih 'Impor dari file ...' dari opsi.

Klik 'Tambah' untuk mulai menggunakan VPN.

Perhatikan bahwa di bawah 'Gateway', itu adalah Alamat IP server.

Terakhir, alihkan tombol 'VPN klien' untuk mengaktifkan VPN di mesin.

Mungkin perlu beberapa detik untuk membuat koneksi VPN. Logo kemajuan baru untuk VPN akan muncul di sudut kiri atas layar Anda saat sedang disiapkan, dan logo itu akan berubah menjadi logo VPN setelah disiapkan.

Untuk memverifikasi apakah VPN berfungsi dengan benar, jalankan yang berikut ini:

curl //ipinfo.io/ip

Itu harus mengembalikan alamat IP mesin server Anda. Atau Anda juga dapat memeriksa alamat IP Anda hanya dengan mencari 'IP Saya' di Google. Itu akan menunjukkan alamat IP server VPN Anda jika pengaturan VPN kami berfungsi dengan baik.

Kesimpulan

Pada artikel ini, kami melihat cara mengonfigurasi server OpenVPN, Otoritas Sertifikat, dan Klien OpenVPN. Untuk menambahkan lebih banyak klien ke VPN, sekarang kita harus mengikuti prosedur untuk membuat dan menandatangani sertifikat untuk klien dan menggunakan file konfigurasi yang sama yang dibuat di sini, dengan hanya kunci klien dan nilai sertifikat yang diubah.

Dalam kasus koneksi internet yang lebih lambat, ada kemungkinan bahwa jika UDP digunakan untuk komunikasi, ada kehilangan paket yang cukup besar. Pengguna dapat beralih ke TCP dengan membatalkan komentar pada baris proto tcp dan mengomentari baris proto udp dalam file konfigurasi server.

Juga, jika ada kesalahan lain, Anda dapat mengatur level logging dengan kata kerja direktif dalam file konfigurasi server dan klien. Anda dapat memasukkan nilai antara 0 dan 9. Semakin tinggi nilai direktif ini, log akan lebih verbose.