VPN adalah Jaringan Pribadi Virtual yang memungkinkan Anda mengakses Internet atau layanan tertentu bahkan dari jaringan yang tidak tepercaya. Pada dasarnya, seolah-olah Anda terhubung secara fisik ke jaringan pribadi:misalnya, Anda dapat mengakses rekening bank Anda atau melakukan pembayaran tanpa takut ada yang mencegat lalu lintas yang dihasilkan oleh perangkat Anda.
OpenVPN adalah VPN berdasarkan protokol TLS (Transport Layer Security) dan SSL (Secure Sockets Layer). OpenVPN menggunakan beberapa sertifikat untuk mengenkripsi lalu lintas antara server dan klien.
Dalam tutorial ini Anda akan melihat cara mengkonfigurasi OpenVPN di server dengan Ubuntu 18.04.
Untuk mengimplementasikan tutorial ini, mesin server dan mesin lain yang bertindak sebagai CA (Otoritas Sertifikasi), yang akan menilai validitas sertifikat, diperlukan.
Anda harus terhubung ke server dan CA Anda melalui koneksi SSH. Jika Anda belum melakukannya, ikuti panduan kami disarankan untuk terhubung secara aman dengan protokol SSH.
Menginstal OpenVPN
Akses server Anda.
OpenVPN sudah tersedia di repositori Ubuntu resmi Ubuntu , oleh karena itu, tidak perlu menambahkan apa pun.
Ketik:
sudo apt update
sudo apt install openvpn
Pada titik ini, OpenVPN telah berhasil diinstal di server Anda.
Menginstal EasyRSA
Lanjutkan dengan mengunduh EasyRSA di Server dan CA Anda dengan mengetik di kedua mesin:
wget -P ~/ https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.4/EasyRSA-3.0.4.tgz
Versi terbaru dapat diunduh dari https://github.com/OpenVPN/easy-rsa/releases
$ cd ~
$ sudo tar xvf EasyRSA-3.0.4.tgz
Nama mungkin berbeda tergantung pada versi yang diunduh
Konfigurasi server
Selesaikan konfigurasi server dengan mengetik:
$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
$ sudo gzip -d /etc/openvpn/server.conf.gz
$ sudo nano /etc/openvpn/server.conf
Temukan bagian yang merujuk ke HMAC ("tls-auth"). Jika baris dikomentari, hapus ";".
Temukan bagian tentang enkripsi ("cipher"). Jika dikomentari, hapus tanda ";". Tambahkan baris baru yang berisi teks "auth SHA256" tepat di bawah .
Temukan bagian "dh" yang mendefinisikan parameter Diffie-Hellman dan hapus "2048" dari namanya ( "dh dh.pem" seharusnya diperoleh).
Temukan bagian "pengguna" dan "grup" dan hapus ";" untuk menghapus komentar pada baris.
Mengonfigurasi EasyRSA di CA
Setelah menginstal EasyRSA, file konfigurasi untuk menentukan variabel untuk CA Anda telah dibuat di CA Anda. Ketik:
$ cd ~/EasyRSA-3.0.4/
$ cp vars.example vars
$ nano vars
Hapus "#" ke petunjuk yang ditunjukkan pada gambar di bawah ini:
Mulai skrip "easyrsa" untuk menginisialisasi Infrastruktur Kunci Publik (PKI):
$ sudo ./easyrsa init-pki
$ sudo ./easyrsa build-ca nopass
dengan perintah ini dua file akan dibuat:
ca.crt:sertifikat CA publik yang digunakan oleh server dan klien untuk saling memberi tahu bahwa mereka adalah bagian dari jaringan tepercaya yang sama.
ca.key:kunci pribadi yang digunakan mesin CA untuk menandatangani kunci dan sertifikat untuk server dan klien. File ini harus disimpan hanya di mesin CA (yang tidak dapat diakses oleh pihak ketiga) jika tidak, keamanan jaringan dapat dikompromikan.
Anda akan diminta untuk memasukkan nama. Biarkan kosong dan tekan Enter.
Meminta sertifikat server dari CA
Sekarang setelah Mesin CA dikonfigurasi, minta server membuat kunci pribadi dan permintaan sertifikat dan mengirimkannya ke Mesin CA untuk ditandatangani:
$ cd ~/EasyRSA-3.0.4
$ ./easyrsa init-pki
$ ./easyrsa gen-req server nopass
Untuk mempermudah, biarkan "server" sebagai nama mesin, untuk menghindari beberapa perubahan di kemudian hari.
Anda baru saja membuat kunci pribadi untuk server dan permintaan sertifikat yang disebut "server.req":
$ sudo cp ~/EasyRSA-v3.0.6/pki/private/server.key /etc/openvpn/
Salin file server.req ke mesin CA:
$ sudo scp ~/EasyRSA-3.0.4/pki/reqs/server.req [email protected]_CA_ip:/tmp
Membuat dan menandatangani sertifikat
Pada CA Anda di folder EasyRSA, impor file yang baru saja Anda salin dan tanda tangani:
$ cd ~/EasyRSA-3.0.4/
$ sudo ./easyrsa import-req /tmp/server.req server
$ sudo ./easyrsa sign-req server server
Ketik “yes” dan tekan Enter.
Transfer sertifikat yang ditandatangani dan ca.crt ke Server VPN:
$ sudo scp pki/issued/server.crt [email protected]_server_ip:/tmp
$ sudo scp pki/ca.crt [email protected]_server_ip:/tmp
Kemudian di Server Anda
salin file yang diterima di direktori yang sesuai:
$ sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/
$ cd ~/EasyRSA-3.0.4/
Buat kunci pertukaran yang kuat berdasarkan Diffie-Hellman.
$ sudo ./easyrsa gen-dh
$ sudo openvpn --genkey --secret ta.key
Salin file yang dihasilkan ke folder "/ etc / openvpn /"
$ sudo cp ~/EasyRSA-3.0.4/ta.key /etc/openvpn/
$ sudo cp ~/EasyRSA-3.0.4/pki/dh.pem /etc/openvpn/
Konfigurasi klien
Buat folder untuk menyimpan sertifikat dan kunci klien (karena panduan ini hanya menyajikan satu klien, ini disebut 'klien1', tetapi operasi harus diulang untuk setiap klien, menggunakan denominasi)
$ sudo mkdir -p ~/client-configs/keys
$ sudo chmod -R 700 ~/client-configs
$ cd ~/EasyRSA-3.0.4/
$ sudo ./easyrsa gen-req client1 nopass
Tekan Enter untuk menerima nama standar yang diusulkan.
$ sudo cp pki/private/client1.key ~/client-configs/keys/
Salin kunci klien ke folder yang dibuat sebelumnya.
$ sudo scp pki/reqs/client1.req [email protected]_CA_IP:/tmp
Kirim file client1.req ke Mesin CA.
Impor permintaan sertifikat di CA Anda:
$ cd ~/EasyRSA-3.0.4/
$ sudo ./easyrsa import-req /tmp/client1.req client1
$ sudo ./easyrsa sign-req client client1
Ketik "ya" untuk mengotorisasi tanda tangan.
Unggah client1.crt di server Anda:
scp pki/issued/client1.crt [email protected]_SERVER:/tmp
Di Server Anda, salin file berikut ke folder yang sesuai.
$ sudo mkdir -p ~/client-configs/keys
$ sudo chmod -R 700 ~/client-configs
$ sudo cp /tmp/client1.crt ~/client-configs/keys/
$ sudo cp ~/EasyRSA-3.0.4/ta.key ~/client-configs/keys/
$ sudo cp /etc/openvpn/ca.crt ~/client-configs/keys/
Sekarang sertifikat dan kunci server dan klien telah dibuat.
Mengonfigurasi perutean IP dan firewall
Ubah aturan penerusan IP:
$ sudo nano /etc/sysctl.conf
Cari bagian "net.ipv4.ip_forward" dan hapus "#" untuk membuat instruksi "not commented".
Ubah beberapa aturan firewall untuk merutekan koneksi klien dengan benar.
$ ip route | grep default
Simpan nama setelah "dev" ( bernama "eth0" pada gambar di bawah):
$ sudo nano /etc/ufw/before.rules
Tambahkan perintah seperti pada gambar di bawah, ganti "eth0" dengan nama antarmuka jaringan Anda.
# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to eth0
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
# END OPENVPN RULES
Simpan dan keluar. Sekarang edit file konfigurasi UFW:
$ sudo nano /etc/default/ufw
Ubah nilai parameter "DEFAULT_FORWARD_POLICY" dengan "ACCEPT".
$ sudo ufw allow 1194/udp
Tambahkan port 1194 untuk lalu lintas UDP.
$ sudo ufw allow OpenSSH
Mulai ulang UFW:
$ sudo ufw disable
$ sudo ufw enable
Mulai layanan OpenVPN:
$ sudo systemctl start openvpn
Periksa status layanan:
$ sudo systemctl status openvpn
Setel layanan saat server mulai.
$ sudo systemctl enable openvpn
Buat file konfigurasi untuk klien:
$ sudo mkdir -p ~/client-configs/files
$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf
$ sudo nano ~/client-configs/base.conf
Temukan bagian "jarak jauh" dan pastikan tertulis "IP_Server jarak jauh 1194"
IP_Server:tulis IP Server
1194:port yang dipilih sebelumnya.
Temukan bagian "proto" untuk memastikan server disetel ke UDP (Anda akan menemukan baris TCP dikomentari dengan tanda ";").
Temukan bagian "pengguna" dan "grup" dan hapus ";" untuk membuat mereka "tidak ada komentar".
Temukan bagian "ca.crt" - "client.crt" - "client.key" - "ta.key" dan beri komentar dengan "#" di awal dari setiap baris.
Temukan bagian "cipher" dan tambahkan pernyataan "auth SHA256" di bawah pernyataan "cipher AES-256-CBC".
Tambahkan instruksi "key-direction 1" kapan saja.
Tambahkan baris komentar ini kapan saja. Jika klien adalah mesin Linux, buat mereka "tidak ada komentar".
# script-security 2
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf
Simpan dan keluar.
Membuat konfigurasi untuk klien
Di Server Anda, buat skrip untuk mengompilasi konfigurasi klien secara otomatis.
nano ~/client-configs/make_config.sh
Salin dan tempel teks:
#!/bin/bash
# First argument: Client identifier
KEY_DIR=~/client-configs/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/client-configs/base.conf
cat ${BASE_CONFIG} \
<(echo -e '<ca>') \
${KEY_DIR}/ca.crt \
<(echo -e '</ca>\n<cert>') \
${KEY_DIR}/${1}.crt \
<(echo -e '</cert>\n<key>') \
${KEY_DIR}/${1}.key \
<(echo -e '</key>\n<tls-auth>') \
${KEY_DIR}/ta.key \
<(echo -e '</tls-auth>') \
> ${OUTPUT_DIR}/${1}.ovpn
Simpan dan keluar.
chmod 700 ~/client-configs/make_config.sh
Coba sekarang untuk membuat "konfigurasi" klien klien.
$ cd ~/client-configs
$ sudo ./make_config.sh client1
File bernama “client1.ovpn” akan dibuat.
Sekarang transfer file ini ke perangkat yang ingin Anda gunakan. Ini akan digunakan oleh perangkat lunak VPN untuk koneksi.
Mencabut sertifikat Klien
$ cd EasyRSA-3.0.4/
$ sudo ./easyrsa revoke client1
klien1 adalah nama klien yang otorisasinya akan dicabut
Ketik "yes" untuk mengonfirmasi.
Buat dan unggah file crl.pem ke server Anda:
$ sudo ./easyrsa gen-crl
$ sudo scp ~/EasyRSA-3.0.4/pki/crl.pem [email protected]_Server:/tmp
Perbarui konfigurasi mesin server Anda untuk memverifikasi pencabutan.
$ sudo cp /tmp/crl.pem /etc/openvpn
$ sudo nano /etc/openvpn/server.conf
Di akhir file tambahkan "crl-verify crl.pem".
Simpan dan keluar.
$ sudo systemctl restart [email protected]
Mulai ulang Server untuk menerapkan perubahan.