GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Mengatur Server OpenVPN di Ubuntu 18.04

Baik Anda ingin mengakses Internet dengan aman dan terlindungi saat terhubung di jaringan Wi-Fi publik yang tidak dapat dipercaya, melewati konten yang dibatasi oleh Geografis, atau mengizinkan rekan kerja Anda terhubung dengan aman ke jaringan perusahaan Anda saat bekerja dari jarak jauh, menggunakan VPN adalah solusi terbaik.

VPN memungkinkan Anda terhubung ke server VPN jarak jauh, membuat koneksi Anda terenkripsi dan aman, serta menjelajahi web secara anonim dengan menjaga kerahasiaan data lalu lintas Anda.

Ada banyak penyedia VPN komersial yang dapat Anda pilih, tetapi Anda tidak pernah dapat benar-benar yakin bahwa penyedia tersebut tidak mencatat aktivitas Anda. Opsi teraman adalah menyiapkan server VPN Anda sendiri.

Tutorial ini akan memandu Anda melalui proses pengaturan server VPN Anda sendiri dengan menginstal dan mengkonfigurasi OpenVPN di Ubuntu 18.04. Kami juga akan menunjukkan cara membuat sertifikat klien dan membuat file konfigurasi

OpenVPN adalah solusi VPN Open-source Secure Socket Layer (SSL) berfitur lengkap. Ini mengimplementasikan ekstensi jaringan aman OSI layer 2 atau 3 menggunakan protokol SSL/TLS.

Prasyarat #

Untuk menyelesaikan tutorial ini, Anda memerlukan:

  • Sudo akses ke server Ubuntu 18.04 untuk meng-host instance OpenVPN Anda.
  • Server harus memiliki firewall UFW dasar yang dikonfigurasi.
  • Mesin khusus yang terpisah untuk digunakan sebagai CA (otoritas sertifikat) Anda. Jika Anda tidak ingin menggunakan mesin khusus untuk CA Anda, Anda dapat membangun CA di server OpenVPN atau mesin lokal Anda. Setelah Anda selesai membangun CA, disarankan untuk memindahkan direktori CA ke tempat yang aman atau offline.

Tutorial ini mengasumsikan bahwa CA berada pada mesin Ubuntu 18.04 yang terpisah. Langkah yang sama (dengan sedikit modifikasi) akan berlaku jika Anda menggunakan server sebagai CA.

Alasan mengapa kami menggunakan mesin CA terpisah adalah untuk mencegah penyerang menyusup ke server. Jika penyerang berhasil mengakses kunci pribadi CA, mereka dapat menggunakannya untuk menandatangani sertifikat baru, yang akan memberi mereka akses ke server VPN.

Membangun CA dengan EasyRSA #

Saat menyiapkan server OpenVPN baru, langkah pertama adalah membangun Infrastruktur Kunci Publik (PKI). Untuk melakukannya, kita perlu membuat yang berikut ini:

  • Sertifikat Otoritas Sertifikat (CA) dan kunci pribadi.
  • Sertifikat terpisah dan pasangan kunci pribadi untuk server yang dikeluarkan oleh CA kami.
  • Sertifikat terpisah dan pasangan kunci pribadi untuk setiap klien yang diterbitkan oleh CA kami.

Seperti yang disebutkan dalam prasyarat untuk alasan keamanan, kami akan membangun CA pada mesin yang berdiri sendiri.

Untuk membuat CA, permintaan sertifikat, dan menandatangani sertifikat, kami akan menggunakan utilitas CLI bernama EasyRSA.

Lakukan langkah-langkah berikut di mesin CA your .

  1. Pertama, unduh rilis terbaru EasyRSA dari repositori Github proyek dengan perintah wget berikut:

    cd && wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.5/EasyRSA-nix-3.0.5.tgz
  2. Setelah unduhan selesai, ekstrak arsip dengan:

    tar xzf EasyRSA-nix-3.0.5.tgz
  3. Beralih ke direktori EasyRSA dan buat file konfigurasi bernama vars dengan menyalin vars.example berkas:

    cd ~/EasyRSA-3.0.5/cp vars.example vars
  4. Buka file dan batalkan komentar dan perbarui entri berikut agar sesuai dengan informasi Anda.

    nano ~/EasyRSA-3.0.5/vars
    ~/EasyRSA-3.0.5/vars
    set_var EASYRSA_REQ_COUNTRY    "US"
    set_var EASYRSA_REQ_PROVINCE   "Pennsylvania"
    set_var EASYRSA_REQ_CITY       "Pittsburgh"
    set_var EASYRSA_REQ_ORG        "Linuxize"
    set_var EASYRSA_REQ_EMAIL      "[email protected]"
    set_var EASYRSA_REQ_OU         "Community"
  5. Sebelum membuat pasangan kunci CA terlebih dahulu kita perlu menginisialisasi PKI baru dengan:

    ./easyrsa init-pki
    init-pki complete; you may now create a CA or requests.
    Your newly created PKI dir is: /home/causer/EasyRSA-3.0.5/pki
  6. Langkah selanjutnya adalah membangun CA:

    ./easyrsa build-ca

    Jika Anda tidak ingin dimintai sandi setiap kali Anda menandatangani sertifikat, jalankan build-ca perintah menggunakan nopass opsi:./easyrsa build-ca nopass .

    ...
    Enter PEM pass phrase:
    Verifying - Enter PEM pass phrase:
    -----
    ...
    -----
    Common Name (eg: your user, host, or server name) [Easy-RSA CA]:
    
    CA creation complete and you may now import and sign cert requests.
    Your new CA certificate file for publishing is at:
    /home/causer/EasyRSA-3.0.5/pki/ca.crt

    Anda akan diminta untuk menyetel sandi untuk kunci CA dan memasukkan nama umum untuk CA Anda.

    Setelah selesai, skrip akan membuat dua file — sertifikat publik CA ca.crt dan kunci pribadi CA ca.key .

    Sekarang setelah Otoritas Sertifikat (CA) dibuat, Anda dapat menggunakannya untuk menandatangani permintaan sertifikat untuk satu atau beberapa server dan klien OpenVPN.

Menginstal OpenVPN dan EasyRSA #

Langkah kami selanjutnya adalah menginstal paket OpenVPN yang tersedia di repositori Ubuntu dan mengunduh EasyRSA versi terbaru.

Langkah-langkah berikut dilakukan di server OpenVPN .

  1. Instalasi OpenVPN cukup mudah, jalankan saja perintah berikut di server OpenVPN :

    sudo apt updatesudo apt install openvpn
  2. Unduh rilis terbaru EasyRSA:

    cd && wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.5/EasyRSA-nix-3.0.5.tgz

    Setelah unduhan selesai, ketik perintah berikut untuk mengekstrak arsip:

    tar xzf EasyRSA-nix-3.0.5.tgz

    Meskipun kita telah menginisialisasi PKI di mesin CA, kita juga perlu membuat PKI baru di server OpenVPN. Untuk melakukannya, gunakan perintah yang sama seperti sebelumnya:

    cd ~/EasyRSA-3.0.5/./easyrsa init-pki

    Jika Anda masih bertanya-tanya mengapa kami memerlukan dua penginstalan EasyRSA, itu karena kami akan menggunakan instans EasyRSA ini untuk membuat permintaan sertifikat yang akan ditandatangani menggunakan instans EasyRSA pada mesin CA .

    Ini mungkin terdengar rumit, dan sedikit membingungkan, tetapi setelah Anda membaca seluruh tutorialnya, Anda akan melihat bahwa itu sebenarnya tidak rumit.

Membuat kunci Diffie-Hellman dan HMAC #

Di bagian ini, kami akan membuat kunci Diffie-Hellman yang kuat yang akan digunakan selama pertukaran kunci dan file tanda tangan HMAC untuk menambahkan lapisan keamanan tambahan ke koneksi.

  1. Pertama, navigasikan ke direktori EasyRSA di server OpenVPN Anda .

    cd ~/EasyRSA-3.0.5/
  2. Buat kunci Diffie-Hellman:

    ./easyrsa gen-dh

    Script akan menghasilkan parameter DH panjang 2048-bit. Ini bisa memakan waktu, terutama pada server dengan sedikit sumber daya. Setelah selesai, pesan berikut akan dicetak di layar Anda:

    DH parameters of size 2048 created at /home/serveruser/EasyRSA-3.0.5/pki/dh.pem

    Salin dh.pem file ke /etc/openvpn direktori:

    sudo cp ~/EasyRSA-3.0.5/pki/dh.pem /etc/openvpn/
  3. Buat tanda tangan HMAC:

    openvpn --genkey --secret ta.key

    Setelah selesai salin ta.key file ke /etc/openvpn direktori:

    sudo cp ~/EasyRSA-3.0.5/ta.key /etc/openvpn/

Membuat Sertifikat Server dan Kunci Pribadi #

Bagian ini menjelaskan cara membuat kunci pribadi dan permintaan sertifikat untuk server OpenVPN.

  1. Navigasikan ke direktori EasyRSA di server OpenVPN Anda dan buat kunci pribadi baru untuk server dan file permintaan sertifikat:

    cd ~/EasyRSA-3.0.5/./easyrsa gen-req server1 nopass

    Kami menggunakan nopass argumen karena kami ingin memulai server OpenVPN tanpa input kata sandi. Juga dalam contoh ini, kami menggunakan server1 sebagai pengidentifikasi nama server (entitas). Jika Anda memilih nama yang berbeda untuk server Anda, jangan lupa untuk menyesuaikan petunjuk di bawah di mana nama server digunakan.

    Perintah akan membuat dua file, kunci pribadi (server1.key ) dan file permintaan sertifikat (server1.req ).

    -----
    Common Name (eg: your user, host, or server name) [server1]:
    
    Keypair and certificate request completed. Your files are:
    req: /home/serveruser/EasyRSA-3.0.5/pki/reqs/server1.req
    key: /home/serveruser/EasyRSA-3.0.5/pki/private/server1.key
  2. Salin kunci pribadi ke /etc/openvpn direktori:

    sudo cp ~/EasyRSA-3.0.5/pki/private/server1.key /etc/openvpn/
  3. Transfer file permintaan sertifikat ke mesin CA Anda:

    scp ~/EasyRSA-3.0.5/pki/reqs/server1.req causer@your_ca_ip:/tmp

    Dalam contoh ini kita menggunakan scp untuk mentransfer file, Anda juga dapat menggunakan rsync melalui ssh atau metode aman lainnya.

  4. Masuk ke mesin CA your Anda , pindah ke direktori EasyRSA dan impor file permintaan sertifikat:

    cd ~/EasyRSA-3.0.5./easyrsa import-req /tmp/server1.req server1

    Argumen pertama adalah jalur ke file permintaan sertifikat dan yang kedua adalah nama pendek (entitas) server. Dalam kasus kami, nama servernya adalah server1 .

    The request has been successfully imported with a short name of: server1
    You may now use this name to perform signing operations on this request.

    Perintah ini hanya menyalin file permintaan ke pki/reqs direktori.

  5. Saat masih di direktori EasyRSA di mesin CA jalankan perintah berikut untuk menandatangani permintaan:

    cd ~/EasyRSA-3.0.5./easyrsa sign-req server server1

    Argumen pertama bisa berupa server atau client dan yang kedua adalah nama pendek (entitas) server.

    Anda akan diminta untuk memverifikasi bahwa permintaan tersebut berasal dari sumber tepercaya. Ketik yes dan tekan enter untuk mengonfirmasi:

    You are about to sign the following certificate.
    Please check over the details shown below for accuracy. Note that this request
    has not been cryptographically verified. Please be sure it came from a trusted
    source or that you have verified the request checksum with the sender.
    
    Request subject, to be signed as a server certificate for 1080 days:
    
    subject=
        commonName                = server1
    
    Type the word 'yes' to continue, or any other input to abort.
    Confirm request details: yes
    ...

    Jika kunci CA Anda dilindungi kata sandi, Anda akan diminta untuk memasukkan kata sandi. Setelah diverifikasi, skrip akan menghasilkan sertifikat SSL dan mencetak path lengkap ke sana.

    ...
    Certificate is to be certified until Sep 17 10:54:48 2021 GMT (1080 days)
    
    Write out database with 1 new entries
    Data Base Updated
    
    Certificate created at: /home/causer/EasyRSA-3.0.5/pki/issued/server1.crt
  6. Langkah selanjutnya adalah mentransfer sertifikat yang ditandatangani server1.crt dan ca.crt file kembali ke server OpenVPN Anda. Sekali lagi Anda dapat menggunakan scp , rsync atau metode aman lainnya:

    scp ~/EasyRSA-3.0.5/pki/issued/server1.crt serveruser@your_server_ip:/tmpscp ~/EasyRSA-3.0.5/pki/ca.crt serveruser@your_server_ip:/tmp
  7. Masuk ke server OpenVPN Anda , dan pindahkan server1.crt dan ca.crt file ke dalam /etc/openvpn/ direktori:

    sudo mv /tmp/{server1,ca}.crt /etc/openvpn/

Setelah menyelesaikan langkah-langkah yang diuraikan di bagian ini, Anda akan memiliki file baru berikut di server OpenVPN :

  • /etc/openvpn/ca.crt
  • /etc/openvpn/dh.pem
  • /etc/openvpn/ta.key
  • /etc/openvpn/server1.crt
  • /etc/openvpn/server1.key

Mengonfigurasi Layanan OpenVPN #

Sekarang setelah Anda memiliki sertifikat server yang ditandatangani oleh CA Anda dan ditransfer ke server OpenVPN Anda , saatnya mengkonfigurasi layanan OpenVPN.

Kami akan menggunakan contoh file konfigurasi yang disediakan dengan paket instalasi OpenVPN sebagai titik awal dan kemudian menambahkan opsi konfigurasi khusus kami sendiri ke dalamnya.

Mulailah dengan mengekstrak file konfigurasi ke /etc/openvpn/ direktori:

sudo sh -c "gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server1.conf"

Buka file dengan editor teks favorit Anda:

sudo nano /etc/openvpn/server1.conf
  • Temukan arahan parameter Sertifikat, Kunci dan DH dan ubah nama file:

    /etc/openvpn/server1.conf
    cert server1.crt
    key server1.key 
    
    dh dh.pem
  • Untuk mengalihkan lalu lintas klien melalui VPN, temukan dan batalkan komentar pada redirect-gateway dan dhcp-option pilihan:

    /etc/openvpn/server1.conf
    push "redirect-gateway def1 bypass-dhcp"
    
    push "dhcp-option DNS 208.67.222.222"
    push "dhcp-option DNS 208.67.220.220"

    Secara default, resolver OpenDNS digunakan. Anda dapat mengubahnya dan menggunakan CloudFlare, Google, atau resolver DNS lain yang Anda inginkan.

  • Temukan user dan group arahan dan batalkan komentar pengaturan ini dengan menghapus “; ” di awal setiap baris:

    /etc/openvpn/server1.conf
    user nobody
    group nogroup
  • Tambahkan baris berikut di akhir file. Arahan ini akan mengubah algoritma otentikasi pesan (HMAC) dari SHA1 menjadi SHA256

    /etc/openvpn/server1.conf
    auth SHA256

Setelah Anda selesai, file konfigurasi server (tidak termasuk komentar) akan terlihat seperti ini:

/etc/openvpn/server1.conf
port 1194
proto udp
dev tun
ca ca.crt
cert server1.crt
key server1.key  # This file should be kept secret
dh dh.pem
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 208.67.220.220"
keepalive 10 120
tls-auth ta.key 0 # This file is secret
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
verb 3
explicit-exit-notify 1
auth SHA256

Memulai Layanan OpenVPN #

Dalam tutorial ini, kami telah menggunakan server1.conf sebagai file konfigurasi. Untuk memulai layanan OpenVPN dengan konfigurasi ini, kita perlu menentukan nama file konfigurasi setelah nama file unit systemd:

Di server OpenVPN . Anda jalankan perintah berikut untuk memulai layanan OpenVPN:

sudo systemctl start openvpn@server1

Verifikasi apakah layanan telah berhasil dimulai dengan mengetik:

sudo systemctl status openvpn@server1

Jika layanan aktif dan berjalan, output akan terlihat seperti ini:

[email protected] - OpenVPN connection to server1
   Loaded: loaded (/lib/systemd/system/[email protected]; disabled; vendor preset: enabled)
   Active: active (running) since Mon 2018-10-08 20:11:57 UTC; 6min ago
     Docs: man:openvpn(8)
           https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
           https://community.openvpn.net/openvpn/wiki/HOWTO
 Main PID: 26739 (openvpn)
   Status: "Initialization Sequence Completed"

Aktifkan layanan untuk memulai secara otomatis saat boot dengan:

sudo systemctl enable openvpn@server1
Created symlink /etc/systemd/system/multi-user.target.wants/[email protected] → /lib/systemd/system/[email protected].
Jika layanan OpenVPN gagal memulai, periksa log dengan sudo journalctl -u openvpn@server1

Server OpenVPN akan membuat perangkat tun baru tun0 . Untuk memeriksa apakah perangkat tersedia, gunakan perintah ip berikut:

ip a show tun0

Outputnya akan terlihat seperti ini:

4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq state UNKNOWN group default qlen 100
    link/none 
    inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::1627:9a20:bca8:e6a5/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever

Pada titik ini, server OpenVPN Anda telah dikonfigurasi dan berjalan dengan benar.

Konfigurasi Firewall dan Jaringan Server #

Untuk meneruskan paket jaringan dengan benar, kita perlu mengaktifkan penerusan IP.

Langkah-langkah berikut dilakukan di server OpenVPN .

Buka /etc/sysctl.conf file dan tambahkan atau batalkan komentar pada baris yang bertuliskan net.ipv4.ip_forward = 1 :

sudo nano /etc/sysctl.conf
/etc/sysctl.conf
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

Setelah selesai, simpan dan tutup file.

Terapkan pengaturan baru dengan menjalankan perintah berikut:

sudo sysctl -p
net.ipv4.ip_forward = 1

Jika Anda mengikuti prasyarat, Anda seharusnya sudah memiliki firewall UFW yang berjalan di server Anda.

Sekarang kita perlu menambahkan aturan firewall untuk mengaktifkan penyamaran. Ini akan memungkinkan lalu lintas keluar dari VPN, memberi klien VPN Anda akses ke Internet.

Sebelum menambahkan aturan, Anda perlu mengetahui antarmuka jaringan publik Server OpenVPN Ubuntu Anda. Anda dapat dengan mudah menemukan antarmuka dengan menjalankan perintah berikut:

ip -o -4 route show to default | awk '{print $5}'

Dalam kasus kami, antarmuka diberi nama ens3 seperti yang ditunjukkan pada output di bawah ini. Antarmuka Anda mungkin akan memiliki nama yang berbeda.

ens3

Secara default, saat menggunakan UFW, paket yang diteruskan akan dihapus. Kami harus mengubahnya dan menginstruksikan firewall kami untuk mengizinkan paket yang diteruskan.

Buka file konfigurasi UFW, cari DEFAULT_FORWARD_POLICY kunci dan ubah nilainya dari DROP untuk ACCEPT :

sudo nano /etc/default/ufw
/etc/default/ufw
...
# Set the default forward policy to ACCEPT, DROP or REJECT.  Please note that
# if you change this you will most likely want to adjust your rules
DEFAULT_FORWARD_POLICY="ACCEPT"
...

Selanjutnya, kita perlu menetapkan kebijakan default untuk POSTROUTING rantai di tabel nat dan atur aturan penyamaran.

Untuk melakukannya, buka /etc/ufw/before.rules file dan tambahkan baris yang disorot dengan warna kuning seperti yang ditunjukkan di bawah ini.

sudo nano /etc/ufw/before.rules

Jangan lupa ganti ens3 di -A POSTROUTING baris untuk mencocokkan nama antarmuka jaringan publik yang Anda temukan di perintah sebelumnya. Tempel baris setelah baris terakhir yang dimulai dengan COMMIT .

/etc/ufw/before.rules
...
# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT

#NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]

# Forward traffic through ens3 - Change to public network interface
-A POSTROUTING -s 10.8.0.0/16 -o ens3 -j MASQUERADE

# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT

Setelah selesai, simpan dan tutup file.

Kita juga perlu membuka lalu lintas UDP pada port 1194 yang merupakan port OpenVPN default. Untuk melakukannya, jalankan perintah berikut:

sudo ufw allow 1194/udp

Jika Anda lupa membuka port SSH, agar tidak terkunci, jalankan perintah berikut untuk membuka port:

sudo ufw allow OpenSSH

Terakhir, muat ulang aturan UFW dengan menonaktifkan dan mengaktifkan kembali UFW:

sudo ufw disablesudo ufw enable

Untuk memverifikasi perubahan, jalankan perintah berikut untuk membuat daftar aturan POSTROUTING:

sudo iptables -nvL POSTROUTING -t nat
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 MASQUERADE  all  --  *      ens3    10.8.0.0/16          0.0.0.0/0  

Membuat Infrastruktur Konfigurasi Klien #

Dalam tutorial ini, kita akan membuat sertifikat SSL terpisah dan membuat file konfigurasi yang berbeda untuk setiap klien VPN.

Kunci pribadi klien dan permintaan sertifikat dapat dibuat di mesin klien atau di server. Untuk mempermudah, kami akan membuat permintaan sertifikat di server dan kemudian mengirimkannya ke CA untuk ditandatangani.

Seluruh proses pembuatan sertifikat klien dan file konfigurasi adalah sebagai berikut:

  1. Buat kunci pribadi dan permintaan sertifikat di server OpenVPN.
  2. Kirim permintaan ke mesin CA untuk ditandatangani.
  3. Salin sertifikat SSL yang ditandatangani ke server OpenVPN dan buat file konfigurasi.
  4. Kirim file konfigurasi ke mesin klien VPN.

Mulailah dengan membuat satu set direktori untuk menyimpan file klien:

mkdir -p ~/openvpn-clients/{configs,base,files}
  • base direktori akan menyimpan file dasar dan konfigurasi yang akan dibagikan ke semua file klien.
  • configs direktori akan menyimpan konfigurasi klien yang dihasilkan.
  • files direktori akan menyimpan pasangan sertifikat/kunci khusus klien.

Salin ca.crt dan ta.key file ke ~/openvpn-clients/base direktori:

cp ~/EasyRSA-3.0.5/ta.key ~/openvpn-clients/base/cp /etc/openvpn/ca.crt ~/openvpn-clients/base/

Selanjutnya salin contoh file konfigurasi klien VPN ke dalam client-~/openvpn-clients/base direktori. Kami akan menggunakan file ini sebagai konfigurasi dasar:

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

Sekarang kita perlu mengedit file agar sesuai dengan pengaturan dan konfigurasi server kita. Buka file konfigurasi dengan editor teks Anda:

nano ~/openvpn-clients/base/client.conf
  • Temukan arahan jarak jauh dan ubah placeholder default dengan alamat IP publik server OpenVPN Anda:

    ~/openvpn-clients/base/client.conf
    # The hostname/IP and port of the server.
    # You can have multiple remote entries
    # to load balance between the servers.
    remote YOUR_SERVER_IP 1194
  • Cari dan komentari ca , cert , dan key arahan. Sertifikat dan kunci akan ditambahkan dalam file konfigurasi:

    ~/openvpn-clients/base/client.conf
    # SSL/TLS parms.
    # See the server config file for more
    # description.  It's best to use
    # a separate .crt/.key file pair
    # for each client.  A single ca
    # file can be used for all clients.
    # ca ca.crt
    # cert client.crt
    # key client.key
  • Tambahkan baris berikut di akhir file agar sesuai dengan pengaturan server:

    ~/openvpn-clients/base/client.conf
    auth SHA256

Setelah Anda selesai, file konfigurasi server akan terlihat seperti ini:

~/openvpn-clients/base/client.conf
client
dev tun
proto udp
remote YOUR_SERVER_IP 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-CBC
verb 3
auth SHA256
key-direction 1

Selanjutnya, buat skrip bash sederhana yang akan menggabungkan konfigurasi dasar dan file dengan sertifikat dan kunci klien, dan simpan konfigurasi yang dihasilkan di ~/openvpn-clients/configs direktori.

Buka editor teks Anda dan buat skrip berikut:

nano ~/openvpn-clients/gen_config.sh
~/openvpn-clients/gen_config.sh
#!/bin/bash

FILES_DIR=$HOME/openvpn-clients/files
BASE_DIR=$HOME/openvpn-clients/base
CONFIGS_DIR=$HOME/openvpn-clients/configs

BASE_CONF=${BASE_DIR}/client.conf
CA_FILE=${BASE_DIR}/ca.crt
TA_FILE=${BASE_DIR}/ta.key

CLIENT_CERT=${FILES_DIR}/${1}.crt
CLIENT_KEY=${FILES_DIR}/${1}.key

# Test for files
for i in "$BASE_CONF" "$CA_FILE" "$TA_FILE" "$CLIENT_CERT" "$CLIENT_KEY"; do
    if [[ ! -f $i ]]; then
        echo " The file $i does not exist"
        exit 1
    fi

    if [[ ! -r $i ]]; then
        echo " The file $i is not readable."
        exit 1
    fi
done

# Generate client config
cat > ${CONFIGS_DIR}/${1}.ovpn <<EOF
$(cat ${BASE_CONF})
<key>
$(cat ${CLIENT_KEY})
</key>
<cert>
$(cat ${CLIENT_CERT})
</cert>
<ca>
$(cat ${CA_FILE})
</ca>
<tls-auth>
$(cat ${TA_FILE})
</tls-auth>
EOF

Simpan file dan buat itu dapat dieksekusi dengan menjalankan chmod berikut:perintah:

chmod u+x ~/openvpn-clients/gen_config.sh

Membuat Kunci Pribadi dan Konfigurasi Sertifikat Klien #

Proses pembuatan kunci pribadi klien dan permintaan sertifikat sama seperti yang kami lakukan saat membuat kunci server dan permintaan sertifikat.

Seperti yang telah kami sebutkan di bagian sebelumnya, kami akan membuat kunci pribadi klien dan permintaan sertifikat di server OpenVPN. Dalam contoh ini, nama klien VPN pertama adalah client1 .

  1. Navigasikan ke direktori EasyRSA di server OpenVPN Anda dan buat kunci pribadi baru dan file permintaan sertifikat untuk klien:

    cd ~/EasyRSA-3.0.5/./easyrsa gen-req client1 nopass

    Perintah akan membuat dua file, kunci pribadi (client1.key ) dan file permintaan sertifikat (client1.req ).

    Common Name (eg: your user, host, or server name) [client1]:
    
    Keypair and certificate request completed. Your files are:
    req: /home/serveruser/EasyRSA-3.0.5/pki/reqs/client1.req
    key: /home/serveruser/EasyRSA-3.0.5/pki/private/client1.key
  2. Salin kunci pribadi client1.key ke ~/openvpn-clients/files direktori yang Anda buat di bagian sebelumnya:

    cp ~/EasyRSA-3.0.5/pki/private/client1.key ~/openvpn-clients/files/
  3. Transfer file permintaan sertifikat ke mesin CA Anda:

    scp ~/EasyRSA-3.0.5/pki/reqs/client1.req causer@your_ca_ip:/tmp

    Dalam contoh ini kita menggunakan scp untuk mentransfer file, Anda juga dapat menggunakan rsync melalui ssh atau metode aman lainnya.

  4. Masuk ke mesin CA your Anda , pindah ke direktori EasyRSA dan impor file permintaan sertifikat:

    cd ~/EasyRSA-3.0.5./easyrsa import-req /tmp/client1.req client1

    Argumen pertama adalah jalur ke file permintaan sertifikat dan yang kedua adalah nama klien.

    The request has been successfully imported with a short name of: client1
    You may now use this name to perform signing operations on this request.
  5. Dari dalam direktori EasyRSA di mesin CA jalankan perintah berikut untuk menandatangani permintaan:

    cd ~/EasyRSA-3.0.5./easyrsa sign-req client client1

    Anda akan diminta untuk memverifikasi bahwa permintaan tersebut berasal dari sumber tepercaya. Ketik yes dan tekan enter untuk mengonfirmasi:

    Jika kunci CA Anda dilindungi kata sandi, Anda akan diminta untuk memasukkan kata sandi. Setelah diverifikasi, skrip akan menghasilkan sertifikat SSL dan mencetak path lengkap ke sana.

    ...
    Certificate created at: /home/causer/EasyRSA-3.0.5/pki/issued/client1.crt
  6. Selanjutnya, transfer sertifikat yang ditandatangani client1.crt file kembali ke server OpenVPN Anda. Anda dapat menggunakan scp , rsync atau metode aman lainnya:

    scp ~/EasyRSA-3.0.5/pki/issued/client1.crt serveruser@your_server_ip:/tmp
  7. Masuk ke server OpenVPN Anda , dan pindahkan client1.crt file ke dalam ~/openvpn-clients/files direktori:

    mv /tmp/client1.crt ~/openvpn-clients/files
  8. Langkah terakhir adalah membuat konfigurasi klien menggunakan gen_config.sh naskah. Beralih ke ~/openvpn-clients direktori dan jalankan skrip menggunakan nama klien sebagai argumen:

    cd ~/openvpn-clients./gen_config.sh client1

    Script akan membuat file bernama client1.ovpn di ~/client-configs/configs direktori. Anda dapat memeriksa dengan mencantumkan direktori:

    ls ~/openvpn-clients/configs
    client1.ovpn

Pada titik ini konfigurasi klien dibuat. Sekarang Anda dapat mentransfer file konfigurasi ke perangkat yang ingin Anda gunakan sebagai klien.

Misalnya untuk mentransfer file konfigurasi ke mesin lokal Anda dengan scp Anda harus menjalankan perintah berikut:

scp ~/openvpn-clients/configs/client1.ovpn your_local_ip:/

Untuk menambahkan klien tambahan, cukup ulangi langkah yang sama.

Menghubungkan Klien #

Linux #

Distribusi atau lingkungan desktop Anda mungkin menyediakan alat atau antarmuka pengguna grafis untuk terhubung ke server OpenVPN. Dalam tutorial ini, kami akan menunjukkan cara terhubung ke server menggunakan openvpn alat.

  • Instal OpenVPN di Ubuntu dan Debian

    sudo apt updatesudo apt install openvpn
  • Instal OpenVPN di CentOS dan Fedora

    sudo yum install epel-releasesudo yum install openvpn

Setelah paket diinstal, untuk terhubung ke server VPN gunakan openvpn perintah dan tentukan file konfigurasi klien:

sudo openvpn --config client1.ovpn

macOS #

Tunnelblickadalah antarmuka pengguna grafis sumber terbuka gratis untuk OpenVPN di OS X dan macOS.

Windows #

Unduh dan instal versi terbaru aplikasi OpenVPN halaman Unduhan OpenVPN.

Salin .ovpn file ke folder konfigurasi OpenVPN (\Users\<Name>\OpenVPN\Config atau \Program Files\OpenVPN\config ).

Luncurkan aplikasi OpenVPN.

Klik kanan pada ikon baki sistem OpenVPN dan nama file konfigurasi OpenVPN yang Anda salin akan tercantum pada menu. Klik Hubungkan.

Android &iOS #

Aplikasi VPN yang dikembangkan oleh OpenVPN tersedia untuk Android dan iOS. Instal aplikasi dan impor klien .ovp berkas.

  • Sambungan Android OpenVPN
  • iOS OpenVPN Connect

Mencabut Sertifikat Klien #

Mencabut sertifikat berarti membatalkan sertifikat yang ditandatangani sehingga tidak dapat lagi digunakan untuk mengakses server OpenVPN.

Untuk mencabut sertifikat klien, ikuti langkah-langkah di bawah ini:

  1. Masuk ke mesin CA your Anda dan beralih ke direktori EasyRSA:

    cd EasyRSA-3.0.5
  2. Jalankan skrip easyrsa menggunakan revoke argumen, diikuti dengan nama klien yang ingin Anda cabut:

    ./easyrsa revoke client1

    Anda akan diminta untuk memverifikasi bahwa Anda ingin mencabut sertifikat. Ketik yes dan tekan enter untuk mengonfirmasi:

    Please confirm you wish to revoke the certificate with the following subject:
    
    subject=
        commonName                = client1
    
    Type the word 'yes' to continue, or any other input to abort.
    Continue with revocation: yes
    ...

    Jika kunci CA Anda dilindungi kata sandi, Anda akan diminta untuk memasukkan kata sandi. Setelah diverifikasi, skrip akan mencabut sertifikat.

    ...
    Revocation was successful. You must run gen-crl and upload a CRL to your
    infrastructure in order to prevent the revoked cert from being accepted.
  3. Use the gen-crl option to generate a certificate revocation list (CRL):

    ./easyrsa gen-crl
    An updated CRL has been created.
    CRL file: /home/causer/EasyRSA-3.0.5/pki/crl.pem
  4. Upload the CRL file to the OpenVPN server:

    scp ~/EasyRSA-3.0.5/pki/crl.pem serveruser@your_server_ip:/tmp
  5. Login to your OpenVPN server server and move the file to the /etc/openvpn direktori:

    sudo mv /tmp/crl.pem /etc/openvpn
  6. Open the OpenVPN server configuration file:

    sudo nano /etc/openvpn/server1.conf

    Paste the following line at the end of the file

    /etc/openvpn/server1.conf
    crl-verify crl.pem

    Save and close the file.

  7. Restart the OpenVPN service for the revocation directive to take effect:

    sudo systemctl restart openvpn@server1

    At this point, the client should no longer be able to access the OpenVPN server using the revoked certificate.

If you need revoke additional client certificates just repeat the same steps.


Ubuntu
  1. Cara Mengatur Server LAMP Ubuntu/Debian

  2. Cara Mengatur Nginx sebagai Proxy Terbalik di Ubuntu 20.04

  3. Cara Mengatur Server OpenVPN di Debian 10

  1. Cara Mengatur WireGuard di Ubuntu 22.04

  2. Cara Mengatur Server TeamSpeak di Ubuntu 16.04

  3. Cara Menginstal OpenVPN di Ubuntu 18.04

  1. Cara Mengatur &Menginstal Server Proxy Squid di Ubuntu 18.04

  2. Cara mengatur server OpenVPN di Ubuntu 20.04

  3. Cara Mengatur Blok Server Nginx di Ubuntu 20.04