Instal dan Siapkan Server OpenVPN di Ubuntu 20.04

Dalam panduan ini, kita akan belajar cara menginstal dan mengatur Server OpenVPN di Ubuntu 20.04. OpenVPN  adalah perangkat lunak VPN sumber terbuka yang tangguh dan sangat fleksibel yang menggunakan semua fitur enkripsi, otentikasi, dan sertifikasi dari perpustakaan OpenSSL untuk secara aman melakukan tunnel jaringan IP melalui satu port UDP atau TCP.

Ini memfasilitasi perluasan jaringan pribadi di seluruh jaringan publik, mengakses situs jarak jauh, membuat koneksi point-to-point yang aman, sambil mempertahankan keamanan yang akan dicapai dalam jaringan pribadi.

Instal dan Siapkan Server OpenVPN di Ubuntu 20.04

Jalankan pembaruan sistem

apt update apt upgrade

Instal OpenVPN di Ubuntu 20.04

Paket OpenVPN tersedia di repo default Ubuntu 20.04. Dengan demikian instalasi sesederhana menjalankan perintah di bawah ini;

apt install openvpn

Instal Easy-RSA CA Utility di Ubuntu 20.04

Paket Easy-RSA menyediakan utilitas untuk menghasilkan pasangan kunci SSL yang digunakan untuk mengamankan koneksi VPN.

apt install easy-rsa

Buat Infrastruktur Kunci Publik OpenVPN

Setelah Anda menginstal easy-rsa, Anda perlu menginisialisasi OpenVPN PKI. PKI terdiri dari:

  • kunci publik dan kunci pribadi untuk server dan setiap client
  • sertifikat dan kunci Certificate Authority (CA) master yang digunakan untuk menandatangani setiap sertifikat server dan client.

Sebelum Anda dapat melanjutkan, copy direktori konfigurasi easy-rsa ke lokasi lain untuk memastikan bahwa pemutakhiran paket OpenVPN di masa mendatang tidak akan menimpa modifikasi Anda.

cp -r /usr/share/easy-rsa /etc/

Selanjutnya, inisialisasi PKI.

cd /etc/easy-rsa/
./easyrsa init-pki

Setelah PKI diinisialisasi, /etc/easy-rsa/pkidibuat.

Hasilkan Sertifikat dan Kunci Otoritas Sertifikat (CA)

Selanjutnya, buat sertifikat CA dan kunci untuk menandatangani server OpenVPN dan sertifikat client.

cd /etc/easy-rsa/./easyrsa build-ca

Ini akan meminta Anda untuk frasa sandi kunci CA dan nama umum server.

Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020 Enter New CA Key Passphrase: ENTER PASSWORD Re-Enter New CA Key Passphrase: RE-ENTER PASSWORD Generating RSA private key, 2048 bit long modulus (2 primes)...................+++++..............+++++ e is 65537 (0x010001) Can't load /etc/easy-rsa/pki/.rnd into RNG 139840045897024:error:2406F079:random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:98:Filename=/etc/easy-rsa/pki/.rnd You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Common Name (eg: your user, host, or server name) [Easy-RSA CA]:Kifarunix-demo CA CA creation complete and you may now import and sign cert requests. Your new CA certificate file for publishing is at: /etc/easy-rsa/pki/ca.crt

Sertifikat CA dibuat dan disimpan di  /etc/easy-rsa/pki/ca.crt.

Hasilkan Parameter Diffie Hellman

Hasilkan kunci Diffie-Hellman yang digunakan untuk pertukaran kunci selama jabat tangan TLS antara server OpenVPN dan client penghubung. Perintah ini telah dijalankan dalam direktori Easy-RSA;

./easyrsa gen-dh

Parameter DH ukuran 2048 dibuat di /etc/easy-rsa/pki/dh.pem.

Hasilkan Sertifikat dan Kunci Server OpenVPN

Untuk menghasilkan sertifikat dan kunci pribadi untuk server OpenVPN, jalankan perintah di bawah ini;

cd /etc/easy-rsa
./easyrsa build-server-full server nopass

Masukkan frasa sandi kunci CA buat di atas untuk menghasilkan sertifikat dan kunci.

nopass menonaktifkan useran frasa sandi.

Hasilkan kunci Kode Otentikasi Pesan (HMAC) berbasis Hash

Kunci otentikasi pra-berbagi TLS/SSL digunakan sebagai tanda tangan HMAC tambahan pada semua paket handshake SSL/TLS untuk menghindari serangan DoS dan banjir port UDP. Ini dapat dihasilkan menggunakan perintah;

openvpn --genkey --secret /etc/easy-rsa/pki/ta.key

Hasilkan Sertifikat Pencabutan OpenVPN

Untuk membatalkan sertifikat yang ditandatangani sebelumnya, Anda perlu membuat sertifikat pencabutan. Jalankan skrip di dalam direktori Easy-RSA;

./easyrsa gen-crl

Sertifikat pencabutan dibuat dan disimpan di  /etc/easy-rsa/pki/crl.pem.

Copy Sertifikat dan Kunci Server ke Direktori Konfigurasi Server

Copy semua sertifikat/kunci server yang dihasilkan ke direktori konfigurasi server OpenVPN.

cp -rp /etc/easy-rsa/pki/{ca.crt,dh.pem,ta.key,crl.pem,issued,private} /etc/openvpn/server/

Hasilkan Sertifikat dan Kunci Client OpenVPN

Sertifikat client OpenVPN dan kunci pribadi dapat dibuat sebagai berikut:

cd /etc/easy-rsa
./easyrsa build-client-full koromicha nopass
  • di mana koromicha adalah nama client yang sertifikat dan kuncinya dibuat.
  • Selalu gunakan nama umum yang unik untuk setiap client yang Anda buat sertifikat dan kuncinya.

Untuk menghasilkan untuk client kedua,

./easyrsa build-client-full janedoe nopass

Anda dapat melihat cara menggunakan easyrsaperintah dengan./easyrsa –help.

Copy Sertifikat dan Kunci Client ke Direktori Client

Buat direktori client OpenVPN. Misalnya, kami telah membuat sertifikat dan file kunci untuk dua client, koromicha dan janedoe, oleh karena itu kami membuat direktori sebagai;

mkdir /etc/openvpn/client/{koromicha,janedoe}

Setelah itu, copy sertifikat/kunci yang dibuat client dan sertifikat CA server ke direktori konfigurasi client OpenVPN. Kamu bisa

cp -rp /etc/easy-rsa/pki/{ca.crt,issued/koromicha.crt,private/koromicha.key} /etc/openvpn/client/koromicha
cp -rp /etc/easy-rsa/pki/{ca.crt,issued/janedoe.crt,private/janedoe.key} /etc/openvpn/client/janedoe/

Konfigurasikan Server OpenVPN di Ubuntu 20.04

Langkah selanjutnya adalah mengkonfigurasi server OpenVPN. Copy contoh konfigurasi server OpenVPN ke /etc/openvpn/serverdirektori seperti yang ditunjukkan di bawah ini;

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

Ekstrak konfigurasi dan modifikasi sesuai kebutuhan Anda;

cd /etc/openvpn/server/ gunzip server.conf.gz
vim /etc/openvpn/server/server.conf

Beginilah tampilan konfigurasi sampel kami tanpa komentar. Konfigurasi sangat dikomentari untuk membantu Anda memahami berbagai useran opsi.

port 1194 proto udp dev tun ca ca.crt cert issued/server.crt key private/server.key # This file should be kept secret dh dh.pem topology subnet server 10.8.0.0 255.255.255.0 ifconfig-pool-persist /var/log/openvpn/ipp.txt push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 192.168.2.11" client-to-client keepalive 10 120 tls-auth ta.key 0 # This file is secret cipher AES-256-CBC comp-lzo persist-key persist-tun status /var/log/openvpn/openvpn-status.log log-append /var/log/openvpn/openvpn.log verb 3 explicit-exit-notify 1 auth SHA512

Simpan dan keluar dari konfigurasi setelah selesai mengedit.

Konfigurasikan Penerusan IP OpenVPN

Untuk memastikan bahwa lalu lintas dari client dirutekan melalui alamat IP server OpenVPN (membantu menutupi alamat IP client), Anda perlu mengaktifkan pene
rusan IP di server OpenVPN.

Batalkan komentar pada baris, net.ipv4.ip_forward=1, /etc/sysctl.confuntuk mengaktifkan penerusan paket untuk IPv4

sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf

Terapkan perubahan tanpa me-reboot server.

sysctl --system

Izinkan port service OpenVPN melalui firewall;

ufw allow 1194/udp

Konfigurasikan Penyamaran IP di UFW

Temukan interface default tempat paket Anda dikirim.

ip route get 8.8.8.8
8.8.8.8 via 10.0.2.2 dev enp0s3 src 10.0.2.15 uid 0

Selanjutnya, perbarui aturan UFW;

vim /etc/ufw/before.rules

Tambahkan baris yang disorot berikut tepat sebelum *filterpengaturan meja. Perhatikan interface yang digunakan harus sesuai dengan nama interface di atas.

... *nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.8.0.0/8 -o enp0s3 -j MASQUERADE COMMIT # Don't delete these required lines, otherwise there will be errors *filter...

Simpan dan keluar dari konfigurasi.

Aktifkan penerusan paket UFW;

sed -i 's/DEFAULT_FORWARD_POLICY="DROP"/DEFAULT_FORWARD_POLICY="ACCEPT"/' /etc/default/ufw

Reload UFW;

ufw reload

Menjalankan OpenVPN Server di Ubuntu 20.04

Mulai dan aktifkan server OpenVPN untuk berjalan pada boot sistem;

systemctl enable --now [email protected]

Memeriksa statusnya;

systemctl status [email protected]
● [email protected] - OpenVPN service for server Loaded: loaded (/lib/systemd/system/[email protected]; enabled; vendor preset: enabled) Active: active (running) since Fri 2020-05-01 16:07:33 UTC; 3s ago Docs: man:openvpn(8) https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage https://community.openvpn.net/openvpn/wiki/HOWTO Main PID: 11980 (openvpn) Status: "Initialization Sequence Completed" Tasks: 1 (limit: 2281) Memory: 1.0M CGroup: /system.slice/system-openvpnx2dserver.slice/[email protected] └─11980 /usr/sbin/openvpn --status /run/openvpn-server/status-server.log --status-version 2 --suppress-timestamps --config server.conf May 01 16:07:33 vpn.kifarunix-demo.com systemd[1]: Starting OpenVPN service for server... May 01 16:07:33 vpn.kifarunix-demo.com systemd[1]: Started OpenVPN service for server.

Ketika service OpenVPN berjalan, itu akan membuat interface tunneling, tun0;

ip add s
... 4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100 link/none inet 10.8.0.1/24 brd 10.8.0.255 scope global tun0 valid_lft forever preferred_lft forever inet6 fe80::1989:2bf2:1e7f:7415/64 scope link stable-privacy valid_lft forever preferred_lft forever

Juga, pastikan untuk memeriksa log;

tail /var/log/openvpn/openvpn.log
/sbin/ip link set dev tun0 up mtu 1500 /sbin/ip addr add dev tun0 10.8.0.1/24 broadcast 10.8.0.255 Could not determine IPv4/IPv6 protocol. Using AF_INET Socket Buffers: R=[212992->212992] S=[212992->212992] UDPv4 link local (bound): [AF_INET][undef]:1194 UDPv4 link remote: [AF_UNSPEC] MULTI: multi_init called, r=256 v=256 IFCONFIG POOL: base=10.8.0.2 size=252, ipv6=0 IFCONFIG POOL LIST Initialization Sequence Completed

Agung. Server OpenVPN sekarang sudah siap. Itu menandai akhir dari panduan kami tentang cara menginstal OpenVPN Server di Ubuntu 20.04.

Anda sekarang dapat mengonfigurasi client Anda sesuai dengan itu.

Tutorial Terkait

Instal dan Konfigurasikan Client OpenVPN di CentOS 8/Ubuntu 18.04

Konfigurasikan Otentikasi Berbasis OpenVPN LDAP

Konfigurasikan IPSEC VPN menggunakan StrongSwan di Ubuntu 18.04

Konfigurasikan Client VPN strongSwan di Ubuntu 18.04/CentOS 8

Hubungkan ke Cisco VPN Menggunakan file PCF di Ubuntu