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.