One place for hosting & domains

      OpenVPN

      Cara Menyiapkan dan Mengonfigurasi Server OpenVPN pada Ubuntu 20.04


      Pengantar

      Jaringan Privat Virtual (VPN) memungkinkan Anda menjelajahi jaringan tidak tepercaya seolah-olah Anda berada di suatu jaringan privat. Ini memberi Anda kebebasan untuk mengakses internet dengan aman dan selamat dari ponsel cerdas atau laptop Anda saat terhubung ke jaringan yang tidak tepercaya, seperti WiFi di hotel atau kedai kopi.

      Saat dikombinasikan dengan koneksi HTTPS, penyiapan ini memungkinkan Anda mengamankan log masuk nirkabel dan transaksi Anda. Anda dapat memintas batasan geografis dan penyensoran, serta melindungi lokasi Anda dan segala lalu lintas HTTP yang tidak terenkripsi dari jaringan yang tidak tepercaya.

      OpenVPN adalah solusi VPN Transport Layer Security (TLS) sumber terbuka lengkap yang mengakomodasi beragam konfigurasi. Dalam tutorial ini, Anda akan menyiapkan OpenVPN pada server Ubuntu 20.04, lalu mengonfigurasinya supaya dapat diakses dari mesin klien.

      Catatan: Jika Anda berencana menyiapkan Server OpenVPN pada DigitalOcean Droplet, mohon diketahui bahwa kami, seperti banyak penyedia layanan hos lain, mengenakan biaya penggunaan bandwidth yang berlebih. Karena alasan ini, harap Anda perhatikan seberapa banyak lalu lintas yang ditangani server Anda.

      Lihat laman ini untuk info lebih lanjut.

      Prasyarat

      Untuk mengikuti tutorial ini, Anda akan membutuhkan:

      Catatan: Walaupun secara teknis memungkinkan untuk menggunakan Server OpenVPN Anda atau mesin lokal Anda sebagai CA, ini tidak disarankan karena membuka VPN Anda kepada beberapa kerentanan keamanan. Sesuai dokumentasi OpenVPN resmi, Anda harus menempatkan CA Anda pada mesin mandiri yang dikhususkan untuk mengimpor dan menandatangani permintaan sertifikat. Karena alasan ini, panduan ini mengasumsikan bahwa CA Anda berada pada server Ubuntu 20.04 terpisah yang juga memiliki pengguna non-root dengan privilese sudo dan firewall dasar yang sudah diaktifkan.

      Selain itu, Anda akan membutuhkan mesin klien yang Anda akan gunakan untuk terhubung ke Server OpenVPN Anda. Dalam panduan ini, kita akan menyebutnya Klien OpenVPN. Untuk tutorial ini, sebaiknya Anda menggunakan mesin lokal Anda sebagai klien OpenVPN.

      Setelah prasyarat ini terpenuhi, Anda siap untuk mulai menyiapkan dan mengonfigurasi Server OpenVPN pada Ubuntu 20.04.

      Catatan: Harap diperhatikan bahwa jika Anda menonaktifkan autentikasi kata sandi saat mengonfigurasi server ini, Anda mungkin akan mengalami kesulitan ketika mentransfer berkas di antara beberapa server pada panduan ini. Untuk menyelesaikan masalah ini, Anda dapat mengaktifkan kembali autentikasi kata sandi pada masing-masing server. Sebagai alternatif, Anda dapat menghasilkan pasangan kunci SSH untuk masing-masing server, lalu tambahkan kunci SSH publik pada Server OpenVPN ke berkas authorized_keys milik mesin CA dan sebaliknya. Lihat Cara Menyiapkan Kunci SSH pada Ubuntu 20.04 untuk instruksi tentang cara melakukan salah satu dari solusi ini.

      Langkah 1 — Menginstal OpenVPN dan Easy-RSA

      Langkah pertama dalam tutorial ini adalah menginstal OpenVPN dan Easy-RSA. Easy-RSA adalah alat manajemen infrastruktur kunci publik (PKI) yang Anda akan gunakan pada Server OpenVPN untuk menghasilkan permintaan sertifikat yang selanjutnya Anda akan verifikasi dan tanda tangani pada Server CA.

      Untuk memulai, perbarui indeks paket Server OpenVPN Anda serta instal OpenVPN dan Easy-RSA. Kedua paket itu tersedia di repositori asali Ubuntu, sehingga Anda dapat menggunakan apt untuk instalasi:

      • sudo apt update
      • sudo apt install openvpn easy-rsa

      Selanjutnya, Anda perlu menciptakan direktori baru pada Server OpenVPN sebagai pengguna non-root yang bernama ~/easy-rsa:

      Sekarang Anda perlu membuat symlink dari skrip easyrsa yang diinstal paket ke direktori ~/easy-rsa yang baru saja Anda buat:

      • ln -s /usr/share/easy-rsa/* ~/easy-rsa/

      Catatan: Walaupun panduan lain mungkin menginstruksikan Anda untuk menyalin berkas paket easy-rsa ke direktori PKI Anda, tutorial ini mengadopsi pendekatan symlink. Hasilnya, pembaruan apa pun pada paket easy-rsa akan secara otomatis tercermin pada skrip PKI Anda.

      Terakhir, pastikan pemilik direktor adalah pengguna sudo non-root Anda dan batasi akses ke pengguna itu menggunakan chmod:

      • sudo chown sammy ~/easy-rsa
      • chmod 700 ~/easy-rsa

      Setelah program-program ini terinstal dan dipindahkan ke lokasi yang tepat pada sistem Anda, langkah selanjutnya adalah membuat Infrastruktur Kunci Publik (PKI) di server OpenVPN supaya Anda dapat meminta dan mengelola sertifikat TLS untuk klien dan server lain yang akan terhubung ke VPN Anda.

      Langkah 2 — Menciptakan PKI untuk OpenVPN

      Sebelum Anda dapat membuat kunci dan sertifikat privat dari server OpenVPN, Anda perlu membuat direktori Infrastruktur Kunci Publik lokal pada server OpenVPN Anda. Anda akan menggunakan direktori ini untuk mengelola permintaan sertifikat server dan klien alih-alih membuatnya secara langsung pada server CA Anda.

      Untuk membangun direktori PKI pada server OpenVPN, Anda perlu mengisi berkas bernama vars dengan beberapa nilai asali. Pertama-tama, Anda akan memasukkan cd ke direktori easy-rsa, lalu Anda akan menciptakan dan mengedit berkas vars menggunakan nano atau editor teks pilihan Anda.

      Setelah berkas dibuka, lekatkan dua baris berikut:

      ~/easy-rsa/vars

      set_var EASYRSA_ALGO "ec"
      set_var EASYRSA_DIGEST "sha512"
      

      Hanya dua baris inilah yang Anda butuhkan di dalam berkas vars di server OpenVPN Anda karena tidak akan digunakan sebagai Otoritas Sertifikat. Kedua baris ini akan memastikan bahwa permintaan kunci dan sertifikat privat Anda dikonfigurasi untuk menggunakan Elliptic Curve Cryptography (ECC) yang menghasilkan kunci dan tanda tangan aman untuk klien dan server OpenVPN Anda.

      Mengonfigurasi server OpenVPN dan CA Anda untuk menggunakan ECC berarti bahwa ketika klien dan server berupaya membuat kunci simetris bersama, kedua sever itu dapat menggunakan algoritma Elliptic Curve untuk melakukan pertukaran di antara keduanya. Menggunakan ECC untuk pertukaran kunci secara signifikan lebih cepat daripada menggunakan Diffie-Hellman biasa dengan algoritma RSA klasik, karena angka-angkanya jauh lebih kecil dan komputasinya lebih cepat.

      Latar Belakang: Ketika terhubung ke OpenVPN, klien menggunakan enkripsi asimetris (juga dikenal sebagai kunci publik/privat) untuk melakukan TLS handshake. Namun, ketika mengirim lalu lintas VPN terenkripsi, server dan klien menggunakan enkripsi simetris, yang juga dikenal sebagai enkripsi kunci bersama.

      Ada beban operasi komputasional yang lebih sedikit dengan enkripsi simetris dibandingkan asimetris: angka-angka yang digunakan jauh lebih kecil, dan CPU modern mengintegrasikan instruksi untuk melakukan operasi enkripsi simetris yang dioptimalkan. Untuk membuat peralihan dari enkripsi asimetris ke enkripsi simetris, server dan klien OpenVPN akan menggunakan algoritma Eliptic Curve Diffie-Hellman (ECDH) untuk menyetujui kunci rahasia bersama secepat mungkin.

      Setelah Anda mengisi berkas vars, Anda dapat melanjutkan dengan menciptakan direktori PKI. Untuk melakukan itu, jalankan skrip easyrsa dengan opsi init-pki. Meskipun Anda telah menjalankan perintah ini pada server CA sebagai bagian dari prasyarat, ini perlu dijalankan di sini karena server OpenVPN dan server CA memiliki direktori PKI terpisah:

      Perhatikan bahwa pada server OpenVPN, Anda tidak perlu menciptakan Otoritas Sertifikat. Server CA Anda hanya bertanggung jawab atas pemvalidasian dan penandatanganan sertifikat. PKI pada server VPN Anda hanya digunakan sebagai tempat yang sesuai dan tersentralisasi untuk menyimpan permintaan sertifikat dan sertifikat publik.

      Setelah Anda menginisialisasi PKI pada server OpenVPN, Anda siap untuk melanjutkan ke langkah selanjutnya, yaitu menciptakan permintaan sertifikat server OpenVPN dan kunci privat.

      Langkah 3 — Menciptakan Permintaan Sertifikat dan Kunci Privat Server OpenVPN

      Karena sekarang semua prasyarat untuk server OpenVPN sudah terinstal, langkah selanjutnya adalah membuat kunci privat dan Permintaan Penandatanganan Serfifikat (CSR) di server OpenVPN Anda. Setelah itu, Anda akan mentransfer permintaan ke CA Anda untuk ditandatangani, yang membuat sertifikat yang dibutuhkan. Setelah Anda menandatangani sertifikat, Anda akan mentransfernya kembali ke server OpenVPN dan menginstalnya untuk digunakan server itu.

      Untuk memulai, bernavigasilah ke direktori ~/easy-rsa di Server OpenVPN Anda sebagai pengguna non-root:

      Sekarang Anda akan memanggil easyrsa dengan opsi gen-req yang diikuti dengan Nama Umum (CN) untuk mesin itu. CN bisa apa pun yang Anda sukai, tetapi akan membantu jika menggunakan sesuatu yang lebih deskriptif. Dalam tutorial ini, CN dari Server OpenVPN adalah server. Pastikan untuk memasukkan opsi nopass juga. Jika itu gagal dilakukan, berkas permintaan akan dilindungi dengan kata sandi sehingga bisa menyebabkan masalah izin nantinya.

      Catatan: Jika Anda memilih nama selain dari server di sini, Anda harus menyesuaikan beberapa instruksi di bawah ini. Misalnya, saat menyalin berkas yang dihasilkan ke direktori /etc/openvpn, Anda harus mengganti dengan nama yang benar. Anda juga harus mengubah berkas /etc/openvpn/server.conf nantinya untuk menunjuk ke berkas .crt dan .key yang benar.

      • ./easyrsa gen-req server nopass

      Output

      Common Name (eg: your user, host, or server name) [server]: Keypair and certificate request completed. Your files are: req: /home/sammy/easy-rsa/pki/reqs/server.req key: /home/sammy/easy-rsa/pki/private/server.key

      Ini akan menciptakan kunci privat untuk server dan suatu berkas permintaan sertifikat yang bernama server.req. Salin kunci server ke direktori /etc/openvpn/server:

      • sudo cp /home/sammy/easy-rsa/pki/private/server.key /etc/openvpn/server/

      Setelah menyelesaikan langkah-langkah ini, Anda telah berhasil menciptakan kunci privat untuk server OpenVPN. Anda juga harus membuat Permintaan Penandatangan Sertifikat (CSR) untuk server OpenVPN. CSR sekarang siap untuk penandatanganan oleh CA Anda. Pada bagian selanjutnya dalam tutorial ini, Anda akan belajar cara menandatangani CSR dengan kunci privat server CA Anda.

      Langkah 4 — Menandatangani Permintaan Sertifikat Server OpenVPN

      Dalam langkah sebelumnya, Anda telah membuat Permintaan Penandatanganan Sertifikat (CSR) dan kunci privat untuk server OpenVPN. Sekarang, server CA harus mengetahui sertifikat server dan memvalidasinya. Setelah CA memvalidasi dan mengirimkan kembali sertifikat ke server OpenVPN, klien yang memercayai CA Anda akan dapat memercayai server OpenVPN juga.

      Pada server OpenVPN, sebagai pengguna non-root, gunakan SCP atau metode transfer lain untuk menyalin permintaan sertifikat server.req ke server CA untuk penandatanganan:

      • scp /home/sammy/easy-rsa/pki/reqs/server.req sammy@your_ca_server_ip:/tmp

      Jika Anda sudah mengikuti tutorial prasyarat Cara Menyiapkan dan Mengonfigurasi Otoritas Sertifikat (CA) pada Ubuntu 20.04 langkah selanjutnya adalah log masuk ke server CA sebagai pengguna non-root yang Anda ciptakan untuk mengelola CA Anda. Anda akan memasukkan cd ke direktori ~/easy-rsa tempat Anda membuat PK, lalu mengimpor permintaan sertifikat menggunakan skrip easyrsa:

      • cd ~/easy-rsa
      • ./easyrsa import-req /tmp/server.req server

      Output

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

      Selanjutnya, tanda tangani permintaan dengan menjalankan skrip easyrsa menggunakan opsi sign-req, diikuti oleh tipe permintaan dan Nama Umum. Tipe permintaan dapat berupa klien atau server. Karena kita bekerja dengan permintaan sertfikat server OpenVPN, pastikan Anda menggunakan tipe permintaan server:

      • ./easyrsa sign-req server server

      Pada keluaran, Anda akan diminta memverifikasi bahwa permintaan itu berasal dari sumber tepercaya. Ketik yes, lalu tekan ENTER untuk mengonfirmasi:

      Output

      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 3650 days: subject= commonName = server Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes . . . Certificate created at: /home/sammy/easy-rsa/pki/issued/server.crt

      Perhatikan bahwa jika Anda mengenkripsi kunci privat CA, Anda akan diminta memasukkan kata sandi Anda pada langkah ini.

      Setelah langkah-langkah itu selesai, Anda telah menandatangani permintaan sertifikat server OpenVPN menggunakan kunci privat server CA. Berkas server.crt yang dihasilkan memuat kunci enkripsi publik dari server OpenVPN dan juga tanda tangan dari server CA. Maksud tanda tangan adalah memberi tahu siapa pun yang memercayai server CA bahwa mereka juga dapat memercayai server OpenVPN saat mereka terhubung dengannya.

      Untuk menyelesaikan pengonfigurasian sertifikat, salin berkasserver.crt dan ca.crt dari server CA ke server OpenVPN:

      • scp pki/issued/server.crt sammy@your_vpn_server_ip:/tmp
      • scp pki/ca.crt sammy@your_vpn_server_ip:/tmp

      Sekarang kita kembali ke server OpenVPN Anda, salin berkas dari /tmp ke /etc/openvpn/server:

      • sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/server

      Sekarang server OpenVPN Anda hampir siap menerima koneksi. Pada langkah selanjutnya, Anda akan melakukan langkah-langkah tambahan untuk meningkatkan keamanan server.

      Langkah 5 — Mengonfigurasi Materi Kriptografis OpenVPN

      Untuk lapisan keamanan tambahan, kita akan menambah kunci rahasia bersama ekstra yang akan digunakan server dan semua klien dengan arahan tls-crypt dari OpenVPN. Opsi ini digunakan untuk mengaburkan sertifikat TLS yang digunakan saat server dan klien saling terhubung pada awalnya. Ini juga digunakan oleh server OpenVPN untuk melakukan pemeriksaan cepat pada paket masuk: jika paket ditandatangani menggunakan kunci yang dibagikan sebelumnya, maka server memprosesnya; jika tidak ditandatangani, maka server tahu kalau paket itu berasal dari sumber tidak tepercaya dan bisa mengabaikannya tanpa perlu melakukan pekerjaan dekripsi tambahan.

      Opsi ini akan membantu memastikan bahwa server OpenVPN Anda dapat mengatasi lalu lintas tidak terautentikasi, port, pemindaian porta, dan serangan Denial of Service, yang dapat membebani sumber daya server. Ini juga menyulitkan untuk mengidentifikasi lalu lintas jaringan OpenVPN.

      Untuk membuat kunci tls-crypt yang dibagikan sebelumnya, jalankan yang berikut ini pada server OpenVPN di direktori ~/easy-rsa:

      • cd ~/easy-rsa
      • openvpn --genkey --secret ta.key

      Hasilnya akan berupa berkas yang bernama ta.key. Salinlah ke direktori /etc/openvpn/server/:

      • sudo cp ta.key /etc/openvpn/server

      Dengan berkas-berkas ini berada di server OpenVPN, Anda siap membuat sertifikat klien dan berkas kunci untuk pengguna Anda, yang Anda akan gunakan untuk terhubung ke VPN.

      Langkah 6 — Membuat Sertifikat Klien dan Pasangan Kunci

      Walaupun Anda bisa membuat kunci privat dan permintaan sertifikat pada mesin klien Anda lalu mengirimnya ke CA untuk ditandatangani, panduan ini menguraikan proses untuk membuat permintaan sertifikat pada server OpenVPN. Manfaat dari pendekatan ini adalah kita bisa membuat skrip yang akan secara otomatis membuat berkas konfiguasi klien yang memuat semua kunci dan sertifikat yang dibutuhkan. Ini membuat Anda tidak perlu mentransfer kunci, sertifikat, dan berkas konfigurasi ke klien dan merampingkan proses untuk bergabung dengan VPN.

      Kita akan membuat kunci klien tunggal dan pasangan sertifikat untuk panduan ini. Jika Anda memiliki lebih dari satu klien, Anda dapat mengulangi proses ini untuk masing-masingnya. Namun, harap diperhatikan, Anda perlu memberi nilai nama yang unik ke skrip untuk setiap klien. Sepanjang tutorial ini, pasangan kunci/sertifikat pertama disebut sebagai client1.

      Mulailah dengan membuat struktur direktori di dalam direktori rumah Anda untuk menyimpan berkas sertifikat dan kunci klien:

      • mkdir -p ~/client-configs/keys

      Karena Anda akan menyimpan pasangan kunci/sertifikat dan berkas konfigurasi di dalam direktori ini, Anda harus mengunci izinnya sekarang sebagai tindakan keamanan:

      • chmod -R 700 ~/client-configs

      Selanjutnya, navigasi kembali ke direktori EasyRSA dan jalankan skrip easyrsa dengan opsi gen-req dan nopass, bersama dengan nama umum untuk klien:

      • cd ~/easy-rsa
      • ./easyrsa gen-req client1 nopass

      Tekan ENTER untuk mengonfirmasi nama umum. Lalu, salin berkas client1.key ke direktori ~/client-configs/keys/ yang sudah Anda buat sebelumnya:

      • cp pki/private/client1.key ~/client-configs/keys/

      Selanjutnya, transfer berkas client1.req ke Server CA Anda menggunakan metode aman:

      • scp pki/reqs/client1.req sammy@your_ca_server_ip:/tmp

      Sekarang log masuk ke Server CA. Lalu, bernavigasilah ke direktori EasyRSA, dan impor permintaan sertifikat:

      • cd ~/easy-rsa
      • ./easyrsa import-req /tmp/client1.req client1

      Selanjutnya, tanda tangani permintaan sama seperti yang Anda lakukan untuk server pada langkah sebelumnya. Namun kali ini, pastikan untuk menentukan tipe permintaan klien:

      • ./easyrsa sign-req client client1

      Ketika diminta, ketikkan yes untuk mengonfirmasi bahwa Anda berniat menandatangani permintaan sertifikat dan bahwa itu berasal dari sumber tepercaya:

      Output

      Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes

      Sekali lagi, jika Anda mengenkripsi kunci CA, Anda akan diminta memasukkan kata sandi Anda di sini.

      Ini akan membuat berkas sertifikat klien yang bernama client1.crt. Transfer berkas ini kembali ke server:

      • scp pki/issued/client1.crt sammy@your_server_ip:/tmp

      Kembali pada server OpenVPN Anda, salin sertifikat klien ke direktori ~/client-configs/keys/:

      • cp /tmp/client1.crt ~/client-configs/keys/

      Selanjutnya, salin berkas ca.crt dan ta.key ke direktori ~/client-configs/keys/ juga, dan atur izin yang sesuai untuk pengguna sudo Anda:

      • cp ~/easy-rsa/ta.key ~/client-configs/keys/
      • sudo cp /etc/openvpn/server/ca.crt ~/client-configs/keys/
      • sudo chown sammy.sammy ~/client-configs/keys/*

      Dengan itu, sertifikat dan kunci server dan klien Anda telah dibuat dan disimpan di dalam direktori yang sesuai pada server OpenVPN Anda. Masih ada beberapa tindakan yang perlu dilakukan dengan berkas-berkas ini, tetapi itu akan dilakukan pada langkah selanjutnya. Untuk saat ini, Anda bisa melanjutkan untuk mengonfigurasi OpenVPN.

      Langkah 7 — Mengonfigurasi OpenVPN

      Seperti berbagai alat sumber terbuka lainnya yang banyak digunakan, OpenVPN memiliki banyak opsi konfigurasi yang tersedia untuk mengatur server Anda sesuai kebutuhan spesifik Anda. Pada bagian ini, kami akan memberikan instruksi tentang cara menyiapkan konfigurasi server OpenVPN yang didasarkan pada salah satu berkas konfigurasi sampel yang disertakan dalam dokumentasi perangkat lunak ini.

      Pertama-tama, salin berkas server.conf sampel sebagai titik awal untuk berkas konfigurasi Anda:

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

      Buka berkas baru untuk mengedit dengan editor teks pilihan Anda. Kita akan menggunakan nano dalam contoh kita:

      • sudo nano /etc/openvpn/server/server.conf

      Kita perlu mengubah beberapa baris di dalam berkas ini. Pertama-tama, temukan bagian HMAC dari konfigurasi dengan mencari arahan tls-auth. Baris ini harus dihapus tanda komentarnya. Buat baris itu menjadi komentar dengan menambahkan ; ke awal baris. Kemudian, tambah baris baru yang hanya memuat nilai tls-crypt ta.key:

      /etc/openvpn/server/server.conf

      ;tls-auth ta.key 0 # This file is secret
      tls-crypt ta.key
      

      Selanjutnya, temukan bagian pada sandi kriptografis dengan mencari baris cipher. Nilai asalinya diatur ke AES-256-CBC, akan tetapi, sandi AES-256-GCM menawarkan tingkat dan kinerja enkripsi yang lebih baik, serta didukung dengan baik pada klien OpenVPN yang terbaru. Kita akan memberikan komentar nilai asali dengan menambahkan tanda ; di awal baris ini, lalu kita akan menambahkan baris lagi setelah baris itu yang mengandung nilai AES-256-GCM yang telah diperbarui:

      /etc/openvpn/server/server.conf

      ;cipher AES-256-CBC
      cipher AES-256-GCM
      

      Tepat setelah baris ini, tambahkan arahan auth untuk memilih algoritma inti pesan HMAC. Untuk ini, SHA256 adalah pilihan yang baik:

      /etc/openvpn/server/server.conf

      auth SHA256
      

      Selanjutnya, temukan baris yang berisi arahan dh, yang mendefinisikan parameter Diffie-Hellman. Karena kita telah mengonfigurasi semua sertifikat untuk menggunakan Elliptic Curve Cryptography, tidak perlu memiliki berkas benih Diffie-Hellman. Tambahkan tanda komentar pada baris yang sudah ada yang terlihat seperti dhq2048.pem atau dh dh.pem. Nama berkas untuk kunci Diffie-Hellman mungkin berbeda dengan nama berkas yang terdaftar pada berkas konfigurasi server contoh. Lalu tambahkan baris setelahnya dengan konten dh none:

      /etc/openvpn/server/server.conf

      ;dh dh2048.pem
      dh none
      

      Selanjutnya, kita ingin OpenVPN berjalan tanpa privilese setelah dimulai, sehingga kita perlu menyuruhnya untuk berjalan dengan pengguna nobody dan grup nogroup. Untuk mengaktifkan ini, temukan dan hapus tanda komentar pada baris user nobody dan group nogroup dengan menghapus tanda ; dari awal masing-masing baris:

      /etc/openvpn/server/server.conf

      user nobody
      group nogroup
      

      (Opsional) Mendorong Perubahan DNS untuk Mengalihkan Semua Lalu Lintas Melewati VPN

      Pengaturan di atas akan menciptakan koneksi VPN antara klien dan server Anda, tetapi tidak akan memaksa koneksi apa pun untuk menggunakan terowongan itu. Jika Anda ingin menggunakan VPN untuk mengalirkan semua lalu lintas Anda melewati VPN, Anda mungkin ingin mendorong beberapa pengaturan ekstra ke komputer klien.

      Untuk memulai, temukan dan hapus tanda komentar baris yang mengandung push "redirect-gateway deff bypass dhcp. Melakukan ini akan memberi tahu klien Anda untuk mengalihkan semua lalu lintasnya melalui Server OpenVPN Anda. Harap diperhatikan bahwa mengaktifkan fungsionalitas ini dapat menyebabkan masalah konektivitas dengan layanan jaringan lainnya, seperti SSH:

      /etc/openvpn/server/server.conf

      push "redirect-gateway def1 bypass-dhcp"
      

      Tepat di bawah baris ini, temukan bagian dhcp-option. Sekali lagi, hapus ; dari awal kedua baris untuk menghapus komentar yang ada di situ:

      /etc/openvpn/server/server.conf

      push "dhcp-option DNS 208.67.222.222"
      push "dhcp-option DNS 208.67.220.220"
      

      Ini akan memberi tahu klien Anda untuk menggunakan OpenDNS resolver gratis pada alamat IP yang terdaftar. Jika Anda lebih memilih DNS resolver lain, Anda dapat menggantinya pada IP yang disoroti.

      Ini akan membantu klien dalam mengonfigurasi ulang pengaturan DNS-nya untuk menggunakan terowongan VPN sebagai gateway asali.

      (Opsional) Menyesuaikan Porta dan Protokol

      Secara asali, server OpenVPN menggunakan porta 1194 dan protokol UDP untuk menerima koneksi klien. Jika Anda perlu menggunakan porta jaringan lain dikarenakan lingkungan jaringan yang membatasi tempat klien Anda mungkin berada, Anda dapat mengubah opsi port. Jika Anda tidak melakukan hos konten web pada server OpenVPN Anda, porta 443 adalah pilihan populer karena biasanya diizinkan melalui aturan firewall.

      Untuk mengubah OpenVPN agar mendengarkan porta 443, buka berkas server.conf dan temukan baris yang terlihat seperti ini:

      /etc/openvpn/server/server.conf

      port 1194
      

      Edit sehingga porta menjadi 443:

      /etc/openvpn/server/server.conf

      # Optional!
      port 443
      

      Seringkali, protokol dibatasi untuk porta itu juga. Jika demikian, temukan baris proto di bawah baris port dan ubah protokol dari udp ke tcp:

      /etc/openvpn/server/server.conf

      # Optional!
      proto tcp
      

      Jika Anda memang mengalihkan protokol ke TCP, Anda perlu mengubah nilai arahan explicit-exit-notify dari 1 menjadi 0, karena arahan ini hanya digunakan oleh UDP. Jika Anda tidak melakukan itu saat menggunakan TCP, kesalahan akan terjadi saat Anda memulai layanan OpenVPN.

      Temukan baris explicit-exit-notify di akhir berkas dan ubah nilainya menjadi 0:

      /etc/openvpn/server/server.conf

      # Optional!
      explicit-exit-notify 0
      

      Jika Anda tidak perlu menggunakan porta dan protokol lain, sebaiknya jangan mengubah pengaturan ini.

      Jika Anda memilih nama lain selama perintah server ./easyrsa gen-req sebelumnya, ubah baris cert dan key pada berkas konfigurasi server.conf, sehingga itu menunjuk ke berkas .crt dan .key yang benar. Jika Anda menggunakan nama baku, server, ini sudah diatur dengan benar:“”

      /etc/openvpn/server/server.conf

      cert server.crt
      key server.key
      

      Setelah Anda selesai, simpan dan tutup berkas.

      Kini Anda telah selesai mengonfigurasi pengaturan umum OpenVPN Anda. Pada langkah selanjutnya, kita akan mengkustomisasi opsi jaringan server.

      Langkah 8 — Menyesuaikan Konfigurasi Jaringan Server OpenVPN

      Ada beberapa aspek dari konfigurasi jaringan server yang perlu diubah supaya OpenVPN dapat mengalirkan lalu lintas melalui VPN dengan benar. Yang pertama adalah penerusan IP, suatu metode untuk menentukan ke mana lalu lintas IP harus dialirkan. Ini esensial untuk fungsionalitas VPN yang akan diberikan oleh server Anda.

      Untuk menyesuaikan pengaturan penerusan IP asali dari server OpenVPN Anda, buka berkas /etc/sysctl.conf menggunakan nano atau editor pilihan Anda:

      • sudo nano /etc/sysctl.conf

      Lalu tambahkan baris berikut di bagian bawah berkas:

      /etc/sysctl.conf

      net.ipv4.ip_forward = 1
      

      Simpan dan tutup berkas saat Anda sudah selesai.

      Untuk membaca berkas dan memuat nilai baru untuk sesi ini, ketik:

      Output

      net.ipv4.ip_forward = 1

      Sekarang server OpenVPN Anda akan bisa meneruskan lalu lintas masuk dari satu perangkat ethernet ke perangkat lain. Pengaturan ini memastikan bahwa server dapat mengarahkan lalu lintas dari klien yang terhubung pada antarmuka VPN virtual melalui perangkat ethernet fisik lain miliknya. Konfigurasi ini akan mengalirkan semua lalu lintas web dari klien Anda melalui alamat IP server Anda, dan alamat IP publik pada klien Anda akan secara efektif disembunyikan.

      Pada langkah selanjutnya, Anda perlu mengonfigurasi beberapa aturan firewall untuk memastikan lalu lintas ke dan dari server OpenVPN Anda mengalir dengan benar.

      Langkah 9 — Konfigurasi Firewall

      Sejauh ini, Anda telah menginstal OpenVPN pada server Anda, mengonfigurasinya, serta membuat kunci dan sertifikat yang dibutuhkan supaya klien Anda dapat mengakses VPN. Namun, Anda belum memberi instruksi kepada OpenVPN tentang ke mana mengirim lalu lintas web masuk dari klien. Anda dapat menetapkan bagaimana server harus menangani lalu lintas klien dengan membuat beberapa aturan firewall dan konfigurasi aliran.

      Dengan asumsi Anda mengikuti prasyarat pada awal tutorial ini, seharusnya ufw sudah terinstal dan berjalan pada server Anda. Untuk mengizinkan OpenVPN melintasi firewall, Anda perlu mengaktifkan penyamaran, suatu konsep iptables yang menyediakan penafsiran alamat jaringan (NAT) secara langsung untuk mengalirkan koneksi klien dengan benar.

      Sebelum membuka berkas konfigurasi firewall untuk menambah aturan penyamaran, Anda harus menemukan antarmuka jaringan publik dari mesin Anda terlebih dahulu. Untuk melakukan ini, ketik:

      Antarmuka publik Anda adalah string yang ditemukan di dalam keluaran perintah ini yang mengikuti kata “dev”. Sebagai contoh, hasil ini menunjukkan antarmuka bernama eth0, yang disorot di bawah ini:

      Output

      default via 159.65.160.1 dev eth0 proto static

      Ketika Anda memiliki antarmuka yang terhubung dengan rute asali, buka berkas /etc/ufw/before.rules untuk menambahkan konfigurasi yang relevan:

      • sudo nano /etc/ufw/before.rules

      Aturan UFW biasanya ditambahkan menggunakan perintah ufw. Namun, aturan yang terdaftar di berkas before.rules dibaca dan diterapkan sebelum aturan UFW konvensional dimuat. Pada bagian atas berkas, tambahkan baris yang disorot di bawah ini. Ini akan mengatur kebijakan asali untuk rantai POSTROUTING pada tabel nat dan menyamarkan lalu lintas apa pun yang berasal dari VPN. Jangan lupa menggganti eth0 pada baris -A POSTROUTING di bawah ini dengan antarmuka yang Anda temukan pada perintah di atas:

      /etc/ufw/before.rules

      #
      # rules.before
      #
      # Rules that should be run before the ufw command line added rules. Custom
      # rules should be added to one of these chains:
      #   ufw-before-input
      #   ufw-before-output
      #   ufw-before-forward
      #
      
      # START OPENVPN RULES
      # NAT table rules
      *nat
      :POSTROUTING ACCEPT [0:0]
      # Allow traffic from OpenVPN client to eth0 (change to the interface you discovered!)
      -A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
      COMMIT
      # END OPENVPN RULES
      
      # Don't delete these required lines, otherwise there will be errors
      *filter
      . . .
      

      Simpan dan tutup berkas saat Anda sudah selesai.

      Selanjutnya, Anda perlu memberi tahu UFW untuk mengizinkan paket yang diteruskan secara asali juga. Untuk melakukan ini, buka berkas /etc/default/ufw:

      • sudo nano /etc/default/ufw

      Di dalam berkas itu, temukan arahan DEFAULT_FORWARD_POLICY dan ubah nilai dari DROP menjadi ACCEPT:

      /etc/default/ufw

      DEFAULT_FORWARD_POLICY="ACCEPT"
      

      Simpan dan tutup berkas saat Anda sudah selesai.

      Selanjutnya, sesuaikan firewall itu untuk mengizinkan lalu lintas ke OpenVPN. Jika Anda tidak mengubah porta dan protokol pada berkas /etc/openvpn/server.conf, Anda perlu membuka lalu lintas UDP ke porta 1194. Jika Anda sudah mengubah porta dan/atau protokol, ganti nilai yang Anda pilih di sini.

      Jika Anda lupa menambahkan porta SSH saat mengikuti tutorial prasyarat, tambahkan di sini juga:

      • sudo ufw allow 1194/udp
      • sudo ufw allow OpenSSH

      Setelah menambahkan aturan itu, aktifkan kembali UFW untuk memulai ulang dan memuat perubahan dari semua berkas yang sudah Anda modifikasi:

      • sudo ufw disable
      • sudo ufw enable

      Server Anda kini terkonfigurasi untuk menangani lalu lintas OpenVPN dengan benar. Dengan sudah adanya aturan firewall, kita dapat memulai layanan OpenVPN pada server.

      Langkah 10 — Memulai OpenVPN

      OpenVPN berjalan sebagai layanan systemd, sehingga kita dapat menggunakan systemctl untuk mengelolanya. Kita akan mengonfigurasi OpenVPN untuk memulai saat melakukan boot sehingga Anda dapat terhubung ke VPN kapan saja selama server Anda aktif. Untuk melakukan ini, aktifkan layanan OpenVPN dengan menambahkan itu ke systemctl:

      • sudo systemctl -f enable openvpn-server@server.service

      Lalu, mulai layanan OpenVPN:

      • sudo systemctl start openvpn-server@server.service

      Periksa ulang bahwa layanan OpenVPN sudah aktif dengan perintah berikut. Anda akan melihat active (running) pada keluaran:

      • sudo systemctl status openvpn-server@server.service

      Output

      ● openvpn-server@server.service - OpenVPN service for server Loaded: loaded (/lib/systemd/system/openvpn-server@.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2020-04-29 15:39:59 UTC; 6s ago Docs: man:openvpn(8) https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage https://community.openvpn.net/openvpn/wiki/HOWTO Main PID: 16872 (openvpn) Status: "Initialization Sequence Completed" Tasks: 1 (limit: 1137) Memory: 1.0M CGroup: /system.slice/system-openvpnx2dserver.slice/openvpn-server@server.service └─16872 /usr/sbin/openvpn --status /run/openvpn-server/status-server.log --status-version 2 --suppress-timestamps --c> . . . . . . Apr 29 15:39:59 ubuntu-20 openvpn[16872]: Initialization Sequence Completed

      Kini kita sudah menyelesaikan konfigurasi bagian server untuk OpenVPN. Selanjutnya, Anda akan mengonfigurasi mesin klien Anda dan terhubung ke Server OpenVPN.

      Langkah 11 — Menciptakan Infrastruktur Konfigurasi Klien

      Menciptakan berkas konfigurasi untuk klien OpenVPN dapat sedikit merepotkan, karena setiap klien harus memiliki konfigurasi sendiri dan masing-masing konfigurasi harus sesuai dengan pengaturan yang sudah dijabarkan pada berkas konfigurasi server. Alih-alih menulis berkas konfigurasi tunggal yang hanya dapat digunakan pada satu klien, langkah ini menjabarkan proses untuk membangun infrastruktur konfigurasi klien yang dapat Anda gunakan untuk membuat berkas konfigurasi dengan cepat. Pertama-tama, Anda akan membuat berkas konfigurasi “base”, lalu membuat skrip yang akan mengizinkan Anda untuk membuat berkas konfigurasi klien, sertifikat, dan kunci yang unik sesuai kebutuhan.

      Mulailah dengan membuat direktori baru tempat Anda akan menyimpan berkas konfigurasi klien di dalam direktori client-configs yang Anda buat sebelumnya:

      • mkdir -p ~/client-configs/files

      Selanjutnya, salin berkas konfigurasi klien contoh ke direktori client-configs yang digunakan sebagai konfigurasi dasar Anda:

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

      Buka berkas baru ini menggunakan nano atau editor teks pilihan Anda:

      • nano ~/client-configs/base.conf

      Di dalam berkas itu, temukan arahan remote. Ini menunjukkan alamat server OpenVPN Anda — alamat IP publik dari server OpenVPN Anda. Jika Anda memutuskan untuk mengubah porta yang didengarkan oleh OpenVPN, Anda juga perlu mengubah 1194 ke porta yang Anda pilih:

      ~/client-configs/base.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
      . . .
      

      Pastikan bahwa protokol sesuai dengan nilai yang Anda gunakan pada konfigurasi server:

      ~/client-configs/base.conf

      proto udp
      

      Selanjutnya, hapus komentar pada arahan user dan group dengan menghapus tanda ; pada awal masing-masing baris:

      ~/client-configs/base.conf

      # Downgrade privileges after initialization (non-Windows only)
      user nobody
      group nogroup
      

      Temukan arahan yang mengatur ca, cert, dan key. Beri tanda komentar pada arahan ini karena Anda akan menambahkan cert dan key di dalam berkas itu sendiri nanti:

      ~/client-configs/base.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
      

      Dengan cara yang serupa, beri tanda komentar pada arahan tls-auth, karena Anda akan menambahkan ta.key langsung ke dalam berkas konfigurasi klien (dan server disiapkan untuk menggunakan tls-crypt):

      ~/client-configs/base.conf

      # If a tls-auth key is used on the server
      # then every client must also have the key.
      ;tls-auth ta.key 1
      

      Salin pengaturan cipher dan auth yang Anda atur pada berkas /etc/openvpn/server/server/server.conf:

      ~/client-configs/base.conf

      cipher AES-256-GCM
      auth SHA256
      

      Selanjutnya, tambahkan arahan key-direction di suatu tempat di dalam berkas. Anda harus mengatur ini ke “1” supaya VPN berfungsi dengan benar pada mesin klien:

      ~/client-configs/base.conf

      key-direction 1
      

      Terakhir, tambahkan beberapa baris komentar untuk menangani berbagai metode klien VPN berbasis Linux yang akan digunakan untuk resolusi DNS. Anda akan menambahkan dua baris yang mirip, tetapi pisahkan rangkaian baris komentar. Rangkaian pertama untuk klien yang tidak menggunakan systemd-resolved untuk mengelola DNS. Klien ini bergantung pada utilitas resolvconf untuk memperbarui informasi DNS klien Linux.

      ~/client-configs/base.conf

      ; script-security 2
      ; up /etc/openvpn/update-resolv-conf
      ; down /etc/openvpn/update-resolv-conf
      

      Sekarang tambahkan rangkaian baris untuk klien yang menggunakan systemd-resolved untuk resolusi DNS:

      ~/client-configs/base.conf

      ; script-security 2
      ; up /etc/openvpn/update-systemd-resolved
      ; down /etc/openvpn/update-systemd-resolved
      ; down-pre
      ; dhcp-option DOMAIN-ROUTE .
      

      Simpan dan tutup berkas saat Anda sudah selesai.

      Nanti pada Langkah 13 - Menginstal Konfigurasi Klien dari tutorial ini, Anda akan belajar cara menentukan cara kerja resolusi DNS pada klien Linux dan bagian mana yang harus dihapus komentarnya.

      Selanjutnya, kita akan membuat skrip yang akan mengompilasi konfigurasi dasar Anda dengan berkas sertifikat, kunci, dan enkripsi yang relevan, lalu menaruh konfigurasi yang dibuat di dalam direktori ~/client-configs/files. Buka berkas baru yang bernama make_config.sh di dalam direktori ~/client-configs:

      • nano ~/client-configs/make_config.sh

      Di dalam berkas itu, tambahkan konten berikut:

      ~/client-configs/make_config.sh

      #!/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-crypt>') 
          ${KEY_DIR}/ta.key 
          <(echo -e '</tls-crypt>') 
          > ${OUTPUT_DIR}/${1}.ovpn
      

      Simpan dan tutup berkas saat Anda sudah selesai.

      Sebelum melanjutkan, pastikan untuk menandai berkas ini agar dapat dieksekusi dengan mengetik:

      • chmod 700 ~/client-configs/make_config.sh

      Skrip ini akan membuat salinan berkas base.conf yang sudah Anda buat, mengumpulkan semua berkas sertifikat dan kunci yang Anda buat untuk klien Anda, mengekstrak kontennya, menambahkannya ke salinan berkas konfigurasi dasar, dan mengekspor semua konten ini ke dalam berkas konfigurasi klien yang baru. Ini berarti bahwa, alih-alih mengelola berkas konfigurasi, sertifikat, dan kunci secara terpisah, semua informasi yang dibutuhkan akan disimpan di satu tempat. Manfaat menggunakan metode ini adalah bahwa jika Anda perlu menambah klien di masa depan, Anda dapat menjalankan skrip ini untuk dengan cepat membuat berkas konfigurasi baru dan memastikan bahwa semua informasi penting sudah disimpan di dalam satu lokasi yang mudah diakses.

      Harap diperhatikan bahwa setiap kali Anda menambahkan klien baru, Anda perlu membuat kunci dan sertifikat baru untuk klien itu sebelum Anda dapat menjalankan skrip ini dan membuat berkas konfigurasinya. Anda akan melakukan beberapa latihan menggunakan skrip ini pada langkah selanjutnya.

      Langkah 12 — Membuat Konfigurasi Klien

      Jika Anda mengikuti panduan ini, Anda sudah membuat sertifikat dan kunci klien yang bernama client1.crt dan client1, secara berurutan, pada Langkah 6. Anda dapat membuat berkas konfigurasi untuk kredensial ini dengan pindah ke direktori ~/client-configs dan menjalankan skrip yang sudah Anda buat pada akhir langkah sebelumnya:

      • cd ~/client-configs
      • ./make_config.sh client1

      Ini akan membuat berkas bernama client1.ovpn pada direktori ~/client-configs/files Anda:

      • ls ~/client-configs/files

      Output

      client1.ovpn

      Anda perlu mentransfer berkas ini ke perangkat yang Anda rencanakan untuk digunakan sebagai klien. Misalnya, ini bisa berupa komputer lokal atau perangkat seluler Anda.

      Walaupun aplikasi yang tepat digunakan untuk mewujudkan transfer ini tergantung pada sistem operasi perangkat Anda dan pengaturan pribadi Anda, suatu metode yang dapat diandalkan dan aman adalah menggunakan SFTP (protokol transfer berkas SSH) atau SCP (Salinan Aman) pada backend. Ini akan memindahkan berkas autentikasi VPN klien Anda melalui koneksi yang terenkripsi.

      Berikut ini adalah contoh perintah SFTP yang Anda dapat jalankan dari komputer lokal Anda (macOS atau Linux). Ini akan menyalin berkas client1.ovpn yang sudah kita buat pada langkah terakhir ke direktori home Anda:

      • sftp sammy@openvpn_server_ip:client-configs/files/client1.ovpn ~/

      Berikut ini adalah beberapa alat dan tutorial untuk mentransfer berkas dengan aman dari server OpenVPN ke komputer lokal:

      Langkah 13 — Menginstal Konfigurasi Klien

      Bagian ini mencakup cara menginstal profil VPN klien pada Windows, MacOS, Linux, iOS, dan Android. Tidak satu pun instruksi klien ini tergantung satu sama lain, jadi silakan melewati ke bagian mana pun yang berlaku untuk perangkat Anda.

      Koneksi OpenVPN akan memiliki nama yang sama seperti nama berkas ovpn Anda. Sehubungan dengan tutorial ini, ini berarti bahwa koneksi bernama client1.ovpn, selaras dengan berkas klien pertama yang Anda buat.

      Windows

      Menginstal

      Unduh aplikasi klien OpenVPN untuk Windows dari laman Unduhan OpenVPN. Pilih versi penginstal yang sesuai untuk versi Windows Anda.

      Catatan: OpenVPN perlu privilese administratif untuk menginstal.

      Setelah menginstal OpenVPN, salin berkas .ovpn ke:

      C:Program FilesOpenVPNconfig
      

      Ketika Anda meluncurkan OpenVPN, itu akan secara otomatis menemukan profil dan membuatnya tersedia.

      Anda harus menjalankan OpenVPN sebagai administrator setiap kali digunakan, bahkan dengan akun administratif. Untuk melakukan ini tanpa harus mengeklik kanan dan memilih Run as administrator setiap kali Anda menggunakan VPN, Anda harus mengatur ini lebih dahulu dari akun administratif. Ini juga berarti bahwa pengguna standar perlu memasukkan kata sandi administrator untuk menggunakan OpenVPN. Di samping itu, pengguna standar tidak dapat terhubung dengan benar ke server kecuali aplikasi OpenVPN pada klien memiliki hak admin, sehingga privilese yang ditingkatkan merupakan kebutuhan.

      Untuk mengatur aplikasi OpenVPN untuk selalu berjalan sebagai administrator, klik kanan pada ikon pintasan dan buka Properties. Pada bagian bawah tab Compatibility, klik tombol untuk Mengubah pengaturan untuk semua pengguna. Pada jendela baru, centang Run this program as an administrator.

      Menghubungkan

      Setiap kali Anda meluncurkan GUI OpenVPN, Windows akan bertanya apakah Anda ingin mengizinkan program untuk membuat perubahan pada komputer Anda. Klik Yes. Meluncurkan aplikasi klien OpenVPN hanya menempatkan applet di nampan sistem sehingga Anda dapat menghubungkan dan memutus hubungan VPN sesuai kebutuhan; itu tidak benar-benar membuat koneksi VPN.

      Setelah OpenVPN dimulai, jalankan koneksi dengan masuk ke applet nampan sistem dan klik kanan pada ikon applet OpenVPN. Ini membuka menu konteks. Pilih client1 di bagian atas menu (itu profil client1.ovpn Anda) dan pilih Connect.

      Jendela status akan terbuka yang menunjukkan keluaran log saat koneksi dibuat, dan pesan akan ditampilkan saat klien terhubung.

      Putuskan hubungan dari VPN dengan cara yang sama: Buka ke applet nampan sistem, klik kanan ikon applet OpenVPN, pilih profil klien, dan klik Disconnect.

      macOS

      Menginstal

      Tunnelblick adalah klien OpenVPN sumber terbuka yang gratis untuk macOS. Anda dapat mengunduh citra diska terbaru dari laman Unduhan Tunnelblick. Klik dua kali berkas .dmg yang sudah diunduh dan ikuti petunjuk untuk menginstal.

      Menjelang akhir proses instalasi, Tunnelblick akan menanyakan apakah Anda memiliki berkas konfigurasi. Jawab I have configuration files dan biarkan Tunnelblick menyelesaikan. Buka jendela Finder dan klik dua kali clien1.ovpn. Tunnelblick akan menginstal profil klien. Perlu privilese administratif.

      Menghubungkan

      Luncurkan Tunnelblick dengan mengeklik dua kali ikon Tunnelblick pada folder Applications. Setelah Tunnelblick diluncurkan, akan ada ikon Tunnelblick di bilah menu pada bagian kanan atas layar untuk mengendalikan koneksi. Klik ikon itu, lalu klik item menu Connect client1 untuk memulai koneksi VPN.

      Linux

      Menginstal

      Jika Anda menggunakan Linux, ada berbagai alat yang dapat Anda gunakan tergantung pada distribusi Anda. Lingkungan desktop atau manajer jendela Anda juga mungkin menyertakan utilitas koneksi.

      Namun, cara yang paling universal untuk terhubung adalah menggunakan perangkat lunak OpenVPN.

      Pada Ubuntu atau Debian, Anda dapat menginstalnya seperti yang Anda lakukan pada server dengan mengetik:

      • sudo apt update
      • sudo apt install openvpn

      Pada CentOS, Anda dapat mengaktifkan repositori EPEL, lalu menginstalnya dengan mengetik:

      • sudo dnf install epel-release
      • sudo dnf install openvpn

      Mengonfigurasi Klien yang menggunakan systemd-resolved

      Pertama-tama, tentukan apakah sistem Anda menggunakan systemd-resolved untuk menangani resolusi DNS dengan memeriksa berkas /etc/resolv.conf:

      Output

      # This file is managed by man:systemd-resolved(8). Do not edit. . . . nameserver 127.0.0.53 options edns0

      Jika sistem Anda dikonfigurasi untuk menggunakan systemd-resolved untuk resolusi DNS, alamat IP setelah opsi nameserver adalah 127.0.0.53. Juga harus ada komentar di dalam berkas seperti keluaran yang ditampilkan yang menjelaskan cara systemd-resolved mengelola berkas. Jika Anda memiliki alamat IP yang berbeda dari 127.0.0.53 maka kemungkinannya adalah sistem Anda tidak menggunakan systemd-resolved dan sebagai gantinya, Anda dapat melanjutkan ke bagian selanjutnya tentang mengonfigurasi klien Linux yang memiliki skrip update-resolv-conf.

      Untuk mendukung klien ini, instal paket openvpn-systemd-resolved terlebih dahulu. Ini menyediakan skrip yang akan memaksa systemd-resolved untuk menggunakan server VPN untuk resolusi DNS.

      • sudo apt install openvpn-systemd-resolved

      Setelah paket itu terinstal, konfigurasi klien untuk menggunakannya, dan untuk mengirim semua kueri DNS melalui antarmuka VPN. Buka berkas VPN klien:

      Sekarang hapus tanda komentar pada baris berikut yang Anda tambahkan sebelumnya:

      client1.ovpn

      script-security 2
      up /etc/openvpn/update-systemd-resolved
      down /etc/openvpn/update-systemd-resolved
      down-pre
      dhcp-option DOMAIN-ROUTE .
      

      Mengonfigurasi Klien yang menggunakan update-resolv.conf

      Jika sistem Anda tidak menggunakan systemd-resolved untuk mengelola DNS, lihat apakah distribusi Anda alih-alih menyertakan skrip /etc/openvpn/update-resolv-conf:

      Output

      update-resolv-conf

      Jika klien Anda menyertakan berkas update-resolv-conf, edit berkas konfigurasi klien OpenVPN yang Anda transfer sebelumnya:

      Hapus tanda komentar pada tiga baris yang Anda tambahkan untuk menyesuaikan pengaturan DNS:

      client1.ovpn

      script-security 2
      up /etc/openvpn/update-resolv-conf
      down /etc/openvpn/update-resolv-conf
      

      Jika Anda menggunakan CentOS, ubah arahan group dari nogroup ke nobody untuk mencocokkan grup distribusi yang tersedia:

      client1.ovpn

      group nobody
      

      Simpan dan tutup berkas.

      Menghubungkan

      Sekarang, Anda dapat terhubung ke VPN hanya dengan menunjuk perintah openvpn ke berkas konfigurasi klien:

      • sudo openvpn --config client1.ovpn

      Ini akan menghubungkan Anda ke VPN Anda.

      Catatan: Jika klien Anda menggunakan systemd-resolved untuk mengelola DNS, periksa bahwa pengaturan sudah diterapkan dengan benar dengan menjalankan perintah systemmd-resolve --status seperti ini:

      • systemd-resolve --status tun0

      Anda akan melihat keluaran seperti yang berikut:

      Output

      Link 22 (tun0) . . . DNS Servers: 208.67.222.222 208.67.220.220 DNS Domain: ~.

      Jika Anda melihat alamat IP dari server DNS yang sudah Anda konfigurasikan pada server OpenVPN, bersama dengan pengaturan ~. untuk DNS Domain pada keluaran, berarti Anda sudah mengonfigurasi klien Anda dengan benar untuk menggunakan resolver DNS dari server VPN. Anda juga dapat memeriksa bahwa Anda mengirimkan kueri DNS melalui VPN menggunakan situs seperti DNS leak test.com.

      iOS

      Menginstal

      Dari iTunes App Store, cari dan instal OpenVPN Connect, aplikasi klien OpenVPN resmi untuk iOS. Untuk mentransfer konfigurasi klien iOS Anda ke perangkat, hubungkan secara langsung ke komputer.

      Proses untuk menyelesaikan transfer dengan iTunes dijabarkan di sini. Buka iTunes pada komputer dan klik pada iPhone > apps. Gulir turun ke bagian File Sharing dan klik aplikasi OpenVPN. Jendela kosong di sebelah kanan, OpenVPN Documents, adalah untuk berbagi berkas. Seret berkas .ovpn ke jendela OpenVPN Documents. iTunes menunjukkan profil VPN yang siap untuk dimuat pada iPhone

      Sekarang, luncurkan aplikasi OpenVPN pada iPhone. Anda akan menerima notifikasi bahwa profil baru siap untuk diimpor. Ketuk tanda plus berwarna hijau untuk mengimpornya.

      Aplikasi OpenVPN iOS menunjukkan bahwa profil baru siap untuk diimporMenghubungkan

      OpenVPN kini siap digunakan dengan profil baru. Mulai koneksi dengan menggeser tombol Connect ke posisi On. Putuskan koneksi dengan menggeser tombol yang sama ke posisi Off.

      Catatan: Sakelar VPN di bawah Settings tidak dapat digunakan untuk terhubung ke VPN. Jika Anda mencobanya, Anda akan menerima pemberitahuan untuk hanya terhubung menggunakan aplikasi OpenVPN.

      Aplikasi OpenVPN iOS terhubung ke VPN

      Android

      Menginstal

      Buka Google Play Store. Cari dan instal Android OpenVPN Connect, aplikasi klien OpenVPN resmi untuk Android.

      Anda dapat mentransfer profil .ovpn dengan menghubungkan perangkat Android ke komputer Anda dengan USB dan menyalin berkas itu. Alternatifnya, jika Anda memiliki pembaca kartu SD, Anda dapat melepas kartu SD di perangkat, menyalin profil ke dalamnya, lalu memasukkan kartu itu kembali ke perangkat Android.

      Mulai aplikasi OpenVPN dan ketuk menu FILE untuk mengimpor profil.

      Pemilihan menu impor profil pada aplikasi OpenVPN Android

      Lalu navigasikan ke lokasi profil yang tersimpan (tangkapan layar menggunakan /storage/emulated/O/openvpn) dan pilih berkas .ovpn Anda. Ketuk tombol IMPORT untuk menyelesaikan pengimporan profil ini.

      Aplikasi OpenVPN Android memilih profil VPN yang akan diimpor

      Menghubungkan Setelah profil ditambahkan, Anda akan melihat layar seperti ini:

      Aplikasi OpenVPN Android dengan profil baru yang ditambahkan

      Untuk terhubung, ketuk tombol geser untuk memilih profil yang Anda ingin gunakan. Anda akan melihat statistik waktu dari koneksi dan lalu lintas Anda yang dialirkan melalui server OpenVPN Anda: Aplikasi OpenVPN Android terhubung ke VPN

      Untuk memutus koneksi, ketuk saja tombol geser pada bagian kiri atas sekali lagi. Anda akan diminta untuk mengonfirmasi bahwa Anda ingin memutus koneksi dari VPN Anda.

      Langkah 14 — Menguji Koneksi VPN Anda (Opsional)

      Catatan: Metode untuk menguji koneksi VPN Anda ini hanya akan berjalan jika Anda memilih untuk mengalirkan lalu lintas Anda melalui VPN pada Langkah 7 saat Anda mengedit berkas server.conf untuk OpenVPN.

      Setelah semuanya terinstal, periksa untuk mengonfirmasi semuanya berjalan lancar dengan benar. Tanpa mengaktifkan koneksi VPN, buka peramban dan kunjungi DNSLeakTest.

      Situs ini akan menghasilkan alamat IP yang ditetapkan oleh penyedia layanan internet Anda dan saat Anda muncul ke seluruh dunia. Untuk memeriksa pengaturan DNS Anda melalui situs web yang sama, klik pada Extended Test dan ini akan memberi tahu Anda server DNS yang Anda gunakan.

      Sekarang, hubungkan klien OpenVPN ke VPN Droplet Anda dan segarkan peramban. Alamat IP yang sangat berbeda (dibanding server VPN Anda) kini akan muncul, dan inilah cara Anda muncul ke dunia. Sekali lagi, Extended Test dari DNSLeakTest akan memeriksa pengaturan DNS Anda dan mengonfirmasi bahwa Anda kini menggunakan resolver DNS yang didorong oleh VPN Anda.

      Langkah 15 — Mencabut Sertifikat Klien

      Terkadang, Anda mungkin perlu mencabut sertifikat klien untuk mencegah akses lebih lanjut ke server OpenVPN.

      Untuk melakukan itu, ikuti contoh dalam tutorial prasyarat tentang Cara Menyiapkan dan Mengonfigurasi Otoritas Sertifikat pada Ubuntu 20.04 pada bagian Mencabut Sertifikat.

      Setelah Anda mencabut sertifikat untuk suatu klien menggunakan instruksi itu, Anda perlu menyalin berkas crl.pem yang dihasilkan ke server OpenVPN Anda di dalam direktori /etc/openvpn/server:

      • sudo cp /tmp/crl.pem /etc/openvpn/server/

      Selanjutnya, buka berkas konfigurasi server OpenVPN:

      • sudo nano /etc/openvpn/server/server.conf

      Pada bagian bawah berkas, tambahkan opsi crl-verify, yang akan menginstruksikan server OpenVPN untuk memeriksa daftar pencabutan sertifikat yang kita telah buat setiap kali ada upaya koneksi:

      /etc/openvpn/server/server.conf

      crl-verify crl.pem
      

      Simpan dan tutup berkas.

      Terakhir, mulai ulang OpenVPN untuk menerapkan pencabutan sertifikat:

      • sudo systemctl restart openvpn-server@server.service

      Klien seharusnya tidak lagi bisa terhubung ke server menggunakan kredensial lama.

      Untuk mencabut klien tambahan, ikuti proses ini:

      1. Cabut sertifikat dengan perintah ./easyrsa revoke client_name
      2. Buat CRL yang baru
      3. Transfer berkas crl.pem yang baru ke server OpenVPN Anda dan salin ke direktori /etc/openvpn/server/ untuk menimpa daftar lama.
      4. Mulai ulang layanan OpenVPN.

      Anda dapat menggunakan proses ini untuk mencabut sertifikat apa pun yang Anda berikan sebelumnya untuk server Anda.

      Kesimpulan

      Anda kini seharusnya memiliki jaringan privat virtual yang beroperasi penuh dan berjalan pada Server OpenVPN Anda. Anda dapat menjelajahi web dan mengunduh konten tanpa khawatir tentang aktor jahat yang melacak aktivitas Anda.

      Ada beberapa langkah yang Anda dapat lakukan untuk menyesuaikan instalasi OpenVPN Anda lebih lanjut, seperti mengonfigurasi klien Anda untuk terhubung ke VPN secara otomatis atau mengonfigurasi aturan untuk klien tertentu dan kebijakan akses. Untuk penyesuaian ini dan penyesuian OpenVPN lain, Anda harus membaca dokumentasi OpenVPN resmi.

      Untuk mengonfigurasi klien lainnya, Anda hanya perlu mengikuti langkah 6 dan 11-13 untuk masing-masing perangkat tambahan. Untuk mencabut akses ke klien, ikuti langkah 15.



      Source link

      Comment mettre en place et configurer un serveur OpenVPN sur Ubuntu 20.04


      Introduction

      Un réseau privé virtuel (VPN) vous permet de traverser des réseaux non fiables comme si vous étiez sur un réseau privé. Il vous donne la liberté d’accéder à l’internet en toute sécurité depuis votre smartphone ou votre ordinateur portable lorsque vous êtes connecté à un réseau non sécurisé, comme le WiFi d’un hôtel ou d’un café.

      Combinée aux connexions HTTPS, cette configuration vous permet de sécuriser vos connexions et transactions sans fil. Vous pouvez contourner les restrictions géographiques et la censure, et protéger votre emplacement et tout trafic HTTP non crypté contre les réseaux non fiables.

      OpenVPN est une solution VPN de sécurité de la couche transport (TLS) complète et open-source qui s’adapte à un large éventail de configurations. Dans ce tutoriel, vous allez installer OpenVPN sur un serveur Ubuntu 20.04, puis le configurer pour qu’il soit accessible depuis une machine cliente.

      Remarque : si vous prévoyez de configurer un serveur OpenVPN sur une Droplet DigitalOcean, sachez que, comme de nombreux fournisseurs d’hébergement, nous facturons les dépassements de bande passante. Veillez donc à surveiller la quantité de trafic gérée par votre serveur.

      Consultez cette page pour plus d’informations.

      Conditions préalables

      Pour suivre ce tutoriel, vous aurez besoin de :

      Remarque : Bien qu’il soit techniquement possible d’utiliser votre serveur OpenVPN ou votre machine locale comme autorité de certification, cela n’est pas recommandé car cela ouvre votre VPN à certaines vulnérabilités de sécurité. Selon la documentation officielle d’OpenVPN, vous devez placer votre AC sur une machine autonome qui est dédiée à l’importation et à la signature des demandes de certificats. Pour cette raison, ce guide suppose que votre AC se trouve sur un serveur Ubuntu 20.04 séparé qui a également un utilisateur non root avec des privilèges sudo et un pare-feu de base activé.

      En plus de cela, vous aurez besoin d’une machine cliente que vous utiliserez pour vous connecter à votre serveur OpenVPN. Dans ce guide, nous appellerons cela le Client OpenVPN. Pour les besoins de ce tutoriel, il est recommandé d’utiliser votre machine locale comme client OpenVPN.

      Une fois ces conditions préalables réunies, vous êtes prêt à commencer à installer et à configurer un serveur OpenVPN sur Ubuntu 20.04.

      Remarque : Veuillez noter que si vous désactivez l’authentification par mot de passe lors de la configuration de ces serveurs, vous pourriez rencontrer des difficultés lors du transfert de fichiers entre eux plus loin dans ce guide. Pour résoudre ce problème, vous pourrez réactiver l’authentification par mot de passe sur chaque serveur. Sinon, vous pourrez générer une paire de clés SSH pour chaque serveur, puis ajouter la clé SSH publique du serveur OpenVPN au fichier authorized_keys de la machine AC et vice versa. Consultez Comment configurer des clés SSH sur Ubuntu 20.04 pour obtenir des instructions sur la manière d’exécuter l’une ou l’autre de ces solutions.

      Étape 1 – Installation d’OpenVPN et d’Easy-RSA

      La première étape de ce tutoriel consiste à installer OpenVPN et Easy-RSA. Easy-RSA est un outil de gestion de l’infrastructure à clé publique (ICP) que vous utiliserez sur le serveur OpenVPN pour générer une demande de certificat que vous vérifierez et signerez ensuite sur le serveur de l’AC.

      Pour commencer, mettez à jour l’index des paquets de votre serveur OpenVPN et installez OpenVPN et Easy-RSA. Les deux paquets sont disponibles dans les référentiels par défaut d’Ubuntu. Vous pouvez donc utiliser apt pour l’installation :

      • sudo apt update
      • sudo apt install openvpn easy-rsa

      Ensuite, vous devrez créer un nouveau répertoire sur le serveur OpenVPN en tant qu’utilisateur non root appelé ~/easy-rsa :

      Vous devez maintenant créer un lien symbolique à partir du site easyrsa que le paquet a installé dans le répertoire ~/easy-rsa que vous venez de créer : 

      • ln -s /usr/share/easy-rsa/* ~/easy-rsa/

      Remarque : alors que d’autres guides peuvent vous demander de copier les fichiers du package easy-rsa dans votre répertoire ICP, ce tutoriel adopte une approche par lien symbolique. Par conséquent, toute mise à jour du paquet easy-rsa sera automatiquement répercutée dans les scripts de votre ICP.

      Enfin, assurez-vous que le propriétaire du répertoire est votre utilisateur sudo non root et limitez l’accès à cet utilisateur en utilisant chmod: 

      • sudo chown sammy ~/easy-rsa
      • chmod 700 ~/easy-rsa

      Une fois ces programmes installés et déplacés aux bons endroits sur votre système, l’étape suivante consiste à créer une infrastructure à clé publique (ICP) sur le serveur OpenVPN afin que vous puissiez demander et gérer les certificats TLS pour les clients et les autres serveurs qui se connecteront à votre VPN.

      Étape 2 – Création d’une ICP pour OpenVPN

      Avant de pouvoir créer la clé privée et le certificat de votre serveur OpenVPN, vous devez créer un répertoire local de l’infrastructure à clé publique sur votre serveur OpenVPN. Vous utiliserez ce répertoire pour gérer les demandes de certificats du serveur et des clients au lieu de les faire directement sur votre serveur AC.

      Pour créer un répertoire ICP sur votre serveur OpenVPN, vous devez remplir un fichier appelé vars avec quelques valeurs par défaut. Tout d’abord, vous allez cd dans le répertoire easy-rsa, puis vous allez créer et modifier le fichier vars avec nano ou votre éditeur de texte préféré.

      Une fois le fichier ouvert, collez les deux lignes suivantes :

      ~/easy-rsa/vars

      set_var EASYRSA_ALGO "ec"
      set_var EASYRSA_DIGEST "sha512"
      

      Ce sont les deux seules lignes dont vous avez besoin dans ce fichier vars sur votre serveur OpenVPN car il ne sera pas utilisé en tant qu’autorité de certification. Elles garantiront que vos clés privées et vos demandes de certificats sont configurées pour utiliser la cryptographie sur les courbes elliptiques (ECC) afin de générer des clés et des signatures sécurisées pour vos clients et le serveur OpenVPN.

      Configurer vos serveurs OpenVPN & AC pour utiliser l’ECC signifie que lorsqu’un client et un serveur tentent d’établir une clé symétrique partagée, ils peuvent utiliser des algorithmes de courbe elliptique pour effectuer leur échange. L’utilisation de l’ECC pour un échange de clés est nettement plus rapide que l’utilisation de la méthode de Diffie-Hellman avec l’algorithme RSA classique, car les nombres sont beaucoup plus petits et les calculs sont plus rapides.

      Contexte : Lorsque les clients se connectent à OpenVPN, ils utilisent un cryptage asymétrique (également appelé clé publique/privée) pour effectuer une poignée de main du TLS. Cependant, lors de la transmission de trafic VPN crypté, le serveur et les clients utilisent un cryptage symétrique, également connu sous le nom de cryptage à clé partagée.

      Le cryptage symétrique réduit considérablement les coûts de calcul par rapport au cryptage asymétrique : les nombres utilisés sont beaucoup plus petits et les processeurs modernes intègrent des instructions pour effectuer des opérations de cryptage symétriques optimisées. Pour passer d’un cryptage asymétrique à un cryptage symétrique, le serveur et le client OpenVPN utiliseront l’algorithme ECDH (Elliptic Curve Diffie-Hellman) pour se mettre d’accord sur une clé secrète partagée le plus rapidement possible.

      Une fois que vous avez rempli le fichier vars, vous pouvez procéder à la création du répertoire ICP. Pour ce faire, utilisez le script easyrsa avec l’option init-pki. Bien que vous ayez déjà exécuté cette commande sur le serveur de l’AC dans le cadre des prérequis, il est nécessaire de l’exécuter ici car votre serveur OpenVPN et votre serveur de l’AC ont des répertoires PKI séparés :

      Notez que sur votre serveur OpenVPN, il n’est pas nécessaire de créer une autorité de certification. Votre serveur d’AC est seul responsable de la validation et de la signature des certificats. L’ICP de votre serveur VPN n’est utilisée que comme un emplacement pratique et centralisé de stockage des demandes de certificats et des certificats publics.

      Une fois que vous avez initialisé votre ICP sur le serveur OpenVPN, vous êtes prêt à passer à l’étape suivante, qui consiste à créer une demande de certificat de serveur OpenVPN et une clé privée.

      Étape 3 – Création d’une demande de certificat de serveur OpenVPN et d’une clé privée

      Maintenant que votre serveur OpenVPN a installé toutes les conditions préalables, l’étape suivante consiste à générer une clé privée et une demande de signature de certificat (CSR) sur votre serveur OpenVPN. Ensuite, vous transférez la demande à votre AC pour qu’elle la signe, créant ainsi le certificat requis. Une fois que vous avez un certificat signé, vous le transférez à nouveau sur le serveur OpenVPN et l’installez pour que le serveur puisse l’utiliser.

      Pour commencer, naviguez vers le répertoire ~/easy-rsa sur votre serveur OpenVPN en tant qu’utilisateur non root :

      Vous allez maintenant appeler l’easyrsa avec l’option gen-req suivie d’un nom commun (CN) pour la machine. Le CN peut être tout ce que vous voulez, mais il peut être utile d’en faire quelque chose de descriptif. Tout au long de ce tutoriel, le CN du serveur OpenVPN sera server. Veillez à inclure également l’option nopass. Si vous ne le faites pas, le fichier de demande sera protégé par un mot de passe, ce qui pourrait entraîner des problèmes d’autorisation par la suite.

      Remarque : si vous choisissez un nom autre que « server » ici, vous devrez adapter certaines des instructions ci-dessous. Par exemple, en copiant les fichiers générés dans le répertoire /etc/openvpn, vous devrez substituer les noms corrects. Vous devrez également modifier le fichier /etc/openvpn/server.conf ultérieurement pour pointer vers les fichiers .crt et .key corrects.

      • ./easyrsa gen-req server nopass

      Output

      Common Name (eg: your user, host, or server name) [server]: Keypair and certificate request completed. Your files are: req: /home/sammy/easy-rsa/pki/reqs/server.req key: /home/sammy/easy-rsa/pki/private/server.key

      Cela permettra de créer une clé privée pour le serveur et un fichier de demande de certificat appelé server.req. Copiez la clé du serveur dans le répertoire /etc/openvpn/server​​​​​​ :

      • sudo cp /home/sammy/easy-rsa/pki/private/server.key /etc/openvpn/server/

      Après avoir suivi ces étapes, vous avez créé avec succès une clé privée pour votre serveur OpenVPN. Vous avez également généré une demande de signature de certificat pour le serveur OpenVPN. Le CSR est maintenant prêt à être signé par votre AC. Dans la section suivante de ce tutoriel, vous apprendrez comment signer un CSR avec la clé privée de votre serveur CA.

      Étape 4 – Signer la demande de certificat du serveur OpenVPN

      Dans l’étape précédente, vous avez créé une demande de signature de certificat (CSR) et une clé privée pour le serveur OpenVPN. Maintenant, le serveur de l’AC doit connaître le serveur et le valider. Une fois que l’AC a validé et relayé le certificat vers le serveur OpenVPN, les clients qui font confiance à votre AC pourront également faire confiance au serveur OpenVPN. 

      Sur le serveur OpenVPN, en tant qu’utilisateur non root, utilisez SCP ou une autre méthode de transfert pour copier la demande de certificat server.req vers le serveur AC pour la signature :

      • scp /home/sammy/easy-rsa/pki/reqs/server.req sammy@your_ca_server_ip:/tmp

      Si vous avez suivi le tutoriel Comment mettre en place et configurer une autorité de certification (AC) sur Ubuntu 20.04, l’étape suivante consiste à vous connecter au serveur de l’AC en tant qu’utilisateur non root que vous avez créé pour gérer votre AC. Vous allez cd dans le répertoire ~/easy-rsa où vous avez créé votre PK, puis importer la demande de certificat en utilisant le script ~/easy-rsa :

      • cd ~/easy-rsa
      • ./easyrsa import-req /tmp/server.req server

      Output

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

      Ensuite, signez la demande en exécutant le script easyrsa avec l’option sign-req, suivi du type de demande et du Common Name (Nom commun). Le type de demande peut être soit client, soit serveur. Puisque nous travaillons avec la demande de certificat du serveur OpenVPN, assurez-vous d’utiliser le type de demande du serveur :

      • ./easyrsa sign-req server server

      Dans le résultat, il vous sera demandé de vérifier que la requête provient d’une source fiable. Tapez oui puis appuyez sur ENTER (ENTRÉE) pour confirmer : 

      Output

      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 3650 days: subject= commonName = server Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes . . . Certificate created at: /home/sammy/easy-rsa/pki/issued/server.crt

      Veuillez noter que si vous avez crypté votre clé privée de l’AC, vous serez invité à saisir votre mot de passe à ce stade.

      Une fois ces étapes terminées, vous avez signé la demande de certificat du serveur OpenVPN en utilisant la clé privée du serveur de l’AC. Le fichier server.crt qui en résulte contient la clé de cryptage publique du serveur OpenVPN, ainsi qu’une signature du serveur AC. Le but de la signature est de dire à toute personne qui fait confiance au serveur AC qu’elle peut également faire confiance au serveur OpenVPN lorsqu’elle s’y connecte.

      Pour terminer la configuration des certificats, copiez les fichiers server.crt et ca.crt du serveur AC vers le serveur OpenVPN : 

      • scp pki/issued/server.crt sammy@your_vpn_server_ip:/tmp
      • scp pki/ca.crt sammy@your_vpn_server_ip:/tmp

      De retour sur votre serveur OpenVPN, copiez les fichiers de /tmp à /etc/openvpn/server : 

      • sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/server

      Maintenant, votre serveur OpenVPN est presque prêt à accepter des connexions. Dans l’étape suivante, vous effectuerez quelques étapes supplémentaires pour augmenter la sécurité du serveur.

      Étape 5 – Configuration du matériel cryptographique OpenVPN

      Pour un niveau de sécurité supplémentaire, nous ajouterons une clé secrète partagée supplémentaire, que le serveur et tous les clients utiliseront avec la directive OpenVPN tls-crypt. Cette option est utilisée pour obscurcir le certificat TLS qui est utilisé lorsqu’un serveur et un client se connectent l’un à l’autre au départ. Il est également utilisé par le serveur OpenVPN pour effectuer des contrôles rapides sur les paquets entrants : si un paquet est signé en utilisant la clé pré-partagée, alors le serveur le traite ; s’il n’est pas signé, alors le serveur sait qu’il provient d’une source non fiable et peut le rejeter sans avoir à effectuer un travail de décryptage supplémentaire.

      Cette option vous permettra de vous assurer que votre serveur OpenVPN est capable de gérer le trafic non authentifié, les scans de ports et les attaques par déni de service qui peuvent accaparer les ressources du serveur. Elle rend également plus difficile l’identification du trafic du réseau OpenVPN.

      Pour générer la clé tls-crypt pré-partagée, exécutez les opérations suivantes sur le serveur OpenVPN dans le répertoire ~/easy-rsa : 

      • cd ~/easy-rsa
      • openvpn --genkey --secret ta.key

      Le résultat sera un fichier appelé ta.key. Copiez-le au répertoire /etc/openvpn/server/ : 

      • sudo cp ta.key /etc/openvpn/server

      Une fois ces fichiers en place sur le serveur OpenVPN, vous êtes prêt à créer des certificats clients et des fichiers clés pour vos utilisateurs, que vous utiliserez pour vous connecter au VPN.

      Étape 6 – Génération d’un certificat de client et d’une paire de clés

      Bien que vous puissiez générer une clé privée et une demande de certificat sur votre machine cliente et l’envoyer ensuite à l’AC pour qu’elle la signe, ce guide décrit un processus de génération de la demande de certificat sur le serveur OpenVPN. L’avantage de cette approche est que nous pouvons créer un script qui générera automatiquement des fichiers de configuration du client contenant toutes les clés et tous les certificats requis. Cela vous évite d’avoir à transférer les clés, les certificats et les fichiers de configuration aux clients et rationalise le processus pour rejoindre le VPN.

      Nous générerons une seule paire certificat/clé client dans ce guide. Si vous avez plus d’un client, vous pouvez répéter ce processus pour chacun d’entre eux. Veuillez noter, cependant, que vous devrez transmettre une valeur de nom unique au script pour chaque client. Tout au long de ce tutoriel, la première paire certificat/clé est appelée client1.

      Commencez par créer une structure de répertoire dans votre répertoire d’origine pour stocker les fichiers du certificat et de la clé client :

      • mkdir -p ~/client-configs/keys

      Étant donné que vous stockerez les paires certificats/clés et les fichiers de configuration de vos clients dans ce répertoire, vous devriez verrouiller ses autorisations dès maintenant par mesure de sécurité :

      • chmod -R 700 ~/client-configs

      Ensuite, retournez dans le répertoire EasyRSA et exécutez le script easyrsa avec les options gen-req et nopass, ainsi que le nom commun du client :

      • cd ~/easy-rsa
      • ./easyrsa gen-req client1 nopass

      Appuyez sur ENTER pour confirmer le nom commun. Ensuite, copiez le fichier client1.key dans le répertoire ~/client-configs/keys/ que vous avez créé précédemment : 

      • cp pki/private/client1.key ~/client-configs/keys/

      Puis transférez le fichier client1.req à votre serveur d’autorité de certification en utilisant une méthode sécurisée : 

      • scp pki/reqs/client1.req sammy@your_ca_server_ip:/tmp

      Connectez-vous maintenant à votre serveur AC. Naviguez vers le répertoire EasyRSA, et importez la demande de certificat :

      • cd ~/easy-rsa
      • ./easyrsa import-req /tmp/client1.req client1

      Ensuite, signez la demande de la même manière que vous l’avez fait pour le serveur à l’étape précédente. Cette fois, cependant, veillez à préciser le type de demande client :

      • ./easyrsa sign-req client client1

      Lorsque vous y êtes invité, entrez oui pour confirmer que vous avez l’intention de signer la demande de certificat et qu’elle provient d’une source fiable : 

      Output

      Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes

      Encore une fois, si vous avez chiffré votre clé AC, vous serez invité à entrer votre mot de passe ici.

      Cela créera un fichier de certificat client nommé client1.crt. Transférez ce fichier vers le serveur :

      • scp pki/issued/client1.crt sammy@your_server_ip:/tmp

      De retour sur votre serveur OpenVPN, copiez le certificat du client sur le répertoire ~/client-configs/keys/ : 

      • cp /tmp/client1.crt ~/client-configs/keys/

      Ensuite, copiez le fichier ca.crt et ta.key aux fichiers ~/client-configs/keys/ et définissez les permissions appropriées pour votre utilisateur sudo : 

      • cp ~/easy-rsa/ta.key ~/client-configs/keys/
      • sudo cp /etc/openvpn/server/ca.crt ~/client-configs/keys/
      • sudo chown sammy.sammy ~/client-configs/keys/*

      Avec cela, les certificats et les clés de votre serveur et de votre client ont tous été générés et sont stockés dans les répertoires appropriés sur votre serveur OpenVPN. Il reste encore quelques actions à effectuer avec ces fichiers, mais elles interviendront dans une étape ultérieure. Pour l’instant, vous pouvez passer à la configuration d’OpenVPN.

      Étape 7 – Configurer OpenVPN

      Comme de nombreux autres outils open-source largement utilisés, OpenVPN dispose de nombreuses options de configuration pour personnaliser votre serveur en fonction de vos besoins spécifiques. Dans cette section, nous fournirons des instructions sur la façon de mettre en place une configuration de serveur OpenVPN basée sur un des exemples de fichiers de configuration qui est inclus dans la documentation de ce logiciel.

      Tout d’abord, copiez l’échantillon server.conf comme point de départ pour votre propre fichier de configuration : 

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

      Ouvrez le nouveau fichier pour l’éditer avec l’éditeur de texte de votre choix. Nous utiliserons nano dans notre exemple :

      • sudo nano /etc/openvpn/server/server.conf

      Nous devrons modifier quelques lignes dans ce fichier. Tout d’abord, trouvez la section HMAC de la configuration en recherchant la directive tls-auth. Cette ligne ne doit pas être commentée. Commenter en ajoutant un « ; » au début de la ligne. Ajoutez ensuite une nouvelle ligne contenant uniquement la valeur tls-crypt ta.key :

      /etc/openvpn/server/server.conf

      ;tls-auth ta.key 0 # This file is secret
      tls-crypt ta.key
      

      Ensuite, trouvez la section sur le chiffrement cryptographique en recherchant les lignes de cipher.  La valeur par défaut est réglée à AES-256-CBC, cependant, le chiffrement AES-256-GCM offre un meilleur niveau de cryptage, de performance, et est bien pris en charge dans les clients à jour OpenVPN. Nous commenterons la valeur par défaut en ajoutant le symbole « ; » au début de cette ligne, puis nous ajouterons une autre ligne après celle-ci contenant la valeur actualisée de AES-256-GCM :

      /etc/openvpn/server/server.conf

      ;cipher AES-256-CBC
      cipher AES-256-GCM
      

      Juste après cette ligne, ajoutez une directive auth pour sélectionner l’algorithme de digestion des messages HMAC. À cette fin, SHA256 est un bon choix :

      /etc/openvpn/server/server.conf

      auth SHA256
      

      Ensuite, trouvez la ligne contenant une directive dh qui définit les paramètres de Diffie-Hellman. Puisque nous avons configuré tous les certificats pour utiliser la cryptographie à courbe elliptique, il n’est pas nécessaire d’avoir un fichier source Diffie-Hellman. Commenter la ligne existante qui ressemble à dh dh2048.pem ou dh dh.pem. Le nom de fichier pour la clé Diffie-Hellman peut être différent de ce qui est indiqué dans le fichier de configuration du serveur d’exemple. Ensuite, ajoutez une ligne à la suite avec le contenu dh none :

      /etc/openvpn/server/server.conf

      ;dh dh2048.pem
      dh none
      

      Ensuite, nous voulons qu’OpenVPN tourne sans privilèges une fois qu’il a démarré, nous devons donc lui dire de tourner avec un utilisateur nobody et un groupe nogroup. Pour cela, trouvez et décommentez les lignes user nobody et group nogroup en supprimant le signe ; au début de chaque ligne :

      /etc/openvpn/server/server.conf

      user nobody
      group nogroup
      

      (Facultatif) Modifiez le DNS pour rediriger tout le trafic par le VPN

      Les paramètres ci-dessus créeront la connexion VPN entre votre client et votre serveur mais ne forceront aucune connexion à utiliser le tunnel. Si vous souhaitez utiliser le VPN pour acheminer tout le trafic de vos clients via le VPN, vous voudrez probablement pousser certains paramètres supplémentaires vers les ordinateurs clients.

      Pour commencer, trouvez et décommentez la ligne contenant pousser « redirect-gateway def1 bypass-dhcp ». Cela indiquera à votre client de rediriger tout son trafic via votre serveur OpenVPN. Sachez que l’activation de cette fonctionnalité peut entraîner des problèmes de connectivité avec d’autres services de réseau, comme les SSH :

      /etc/openvpn/server/server.conf

      push "redirect-gateway def1 bypass-dhcp"
      

      Juste en dessous de cette ligne, vous trouverez la section dhcp-option. Encore une fois, enlevez le symbole « ; » devant les deux lignes pour les décommenter :

      /etc/openvpn/server/server.conf

      push "dhcp-option DNS 208.67.222.222"
      push "dhcp-option DNS 208.67.220.220"
      

      Ces lignes indiqueront à votre client d’utiliser les résolveurs OpenDNS gratuits aux adresses IP indiquées. Si vous préférez d’autres résolveurs DNS, vous pouvez les substituer à la place des IP mis en évidence.

      Cela aidera les clients à reconfigurer leurs paramètres DNS pour utiliser le tunnel VPN comme passerelle par défaut.

      (Facultatif) Ajustez le port et le protocole

      Par défaut, le serveur OpenVPN utilise le port 1194 et le protocole UDP pour accepter les connexions des clients. Si vous devez utiliser un autre port en raison des environnements réseau restrictifs de vos clients, vous pouvez changer l’option port. Si vous n’hébergez pas de contenu web sur votre serveur OpenVPN, le port 443 est un choix populaire car il est généralement autorisé par les règles de pare-feu.

      Pour changer OpenVPN afin d’écouter sur le port 443, ouvrez le server.conf et trouver la ligne qui ressemble à ça : 

      /etc/openvpn/server/server.conf

      port 1194
      

      Modifiez-le de manière à ce que le port soit 443 :

      /etc/openvpn/server/server.conf

      # Optional!
      port 443
      

      Souvent, le protocole est également limité à ce port. Si c’est le cas, trouvez la ligne de proto sous la ligne de port et changez le protocole de udp à tcp :

      /etc/openvpn/server/server.conf

      # Optional!
      proto tcp
      

      Si vous modifiez le protocole en TCP, vous devrez changer la valeur de la directive explicit-exit-notify de 1 à 0, car cette directive n’est utilisée que par UDP. Si vous ne le faites pas en utilisant TCP, des erreurs se produiront lorsque vous lancerez le service OpenVPN.

      Trouvez explicit-exit-notify à la fin du fichier et changez la valeur en 0 : 

      /etc/openvpn/server/server.conf

      # Optional!
      explicit-exit-notify 0
      

      Si vous n’avez pas besoin d’utiliser un port et un protocole différents, il est préférable de laisser ces paramètres inchangés.

      (Facultatif) Pointez vers des informations d’identification autres que celles par défaut

      Si vous avez choisi un nom différent lors de la commande du serveur gen-req ./easyrsa plus tôt, modifiez les lignes cert et key dans la configuration server.conf afin qu’elles renvoient aux fichiers .crt et .key appropriés. Si vous avez utilisé le nom par défaut, server, celui-ci est déjà correctement configuré : 

      /etc/openvpn/server/server.conf

      cert server.crt
      key server.key
      

      Lorsque vous avez terminé, enregistrez et fermez le fichier.

      Vous avez maintenant fini de configurer les paramètres généraux de votre OpenVPN. Dans la prochaine étape, nous personnaliserons les options de mise en réseau du serveur.

      Étape 8 – Ajustement de la configuration réseau du serveur OpenVPN

      Certains aspects de la configuration réseau du serveur doivent être modifiés afin qu’OpenVPN puisse acheminer correctement le trafic à travers le VPN. Le premier d’entre eux est le transfert IP, une méthode permettant de déterminer où le trafic IP doit être acheminé. Ceci est essentiel pour la fonctionnalité VPN que votre serveur fournira.

      Pour ajuster le paramètre de transfert IP par défaut de votre serveur OpenVPN, ouvrez le fichier /etc/sysctl.conf en utilisant nano ou votre éditeur de texte préféré : 

      • sudo nano /etc/sysctl.conf

      Ajoutez ensuite la ligne suivante en bas du fichier :

      /etc/sysctl.conf

      net.ipv4.ip_forward = 1
      

      Enregistrez et fermez le fichier lorsque vous avez terminé.

      Pour lire le fichier et charger les nouvelles valeurs pour la session en cours, tapez :

      Output

      net.ipv4.ip_forward = 1

      Désormais, votre serveur OpenVPN sera en mesure de transférer le trafic entrant d’un appareil ethernet à un autre. Ce paramètre garantit que le serveur peut diriger le trafic des clients qui se connectent sur l’interface VPN virtuelle vers ses autres périphériques ethernet physiques. Cette configuration acheminera tout le trafic web de votre client via l’adresse IP de votre serveur, et l’adresse IP publique de votre client sera effectivement cachée.

      Dans l’étape suivante, vous devrez configurer certaines règles de pare-feu pour vous assurer que le trafic vers et depuis votre serveur OpenVPN circule correctement.

      Étape 9 – Configuration du pare-feu

      Jusqu’à présent, vous avez installé OpenVPN sur votre serveur, l’avez configuré et avez généré les clés et les certificats nécessaires pour que votre client puisse accéder au VPN. Cependant, vous n’avez encore fourni à OpenVPN aucune instruction sur l’endroit où envoyer le trafic web entrant des clients. Vous pouvez stipuler comment le serveur doit traiter le trafic des clients en établissant certaines règles de pare-feu et configurations de routage.

      En supposant que vous ayez suivi les prérequis au début de ce tutoriel, vous devriez déjà avoir installé et exécuté ufw sur votre serveur. Pour autoriser OpenVPN par le pare-feu, vous devrez activer le masquerading, un concept d’iptables qui fournit une traduction dynamique d’adresse réseau en vol (NAT) pour acheminer correctement les connexions client.

      Avant d’ouvrir le fichier de configuration du pare-feu pour ajouter les règles de masquage, vous devez d’abord trouver l’interface de réseau public de votre machine. Pour ce faire, tapez :

      Votre interface publique est la chaîne de caractères qui se trouve dans la sortie de cette commande et qui suit le mot « dev ». Par exemple, ce résultat montre l’interface nommée eth0, qui est mise en évidence ci-dessous :

      Output

      default via 159.65.160.1 dev eth0 proto static

      Lorsque l’interface est associée à votre itinéraire par défaut, ouvrez le fichier /etc/ufw/before.rules pour ajouter la configuration appropriée :

      • sudo nano /etc/ufw/before.rules

      Les règles UFW sont généralement ajoutées à l’aide de la commande ufw. Les règles énumérées dans le fichier before.rules sont toutefois lues et mises en place avant le chargement des règles UFW conventionnelles. En haut du fichier, ajoutez les lignes mises en évidence ci-dessous. Cela permettra de définir la politique par défaut pour la chaîne POSTROUTING dans la table nat et de masquer tout trafic provenant du VPN. N’oubliez pas de remplacer eth0 dans la ligne -A POSTROUTING ci-dessous avec l’interface que vous avez trouvée dans la commande ci-dessus :

      /etc/ufw/before.rules

      #
      # rules.before
      #
      # Rules that should be run before the ufw command line added rules. Custom
      # rules should be added to one of these chains:
      #   ufw-before-input
      #   ufw-before-output
      #   ufw-before-forward
      #
      
      # START OPENVPN RULES
      # NAT table rules
      *nat
      :POSTROUTING ACCEPT [0:0]
      # Allow traffic from OpenVPN client to eth0 (change to the interface you discovered!)
      -A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
      COMMIT
      # END OPENVPN RULES
      
      # Don't delete these required lines, otherwise there will be errors
      *filter
      . . .
      

      Enregistrez et fermez le fichier lorsque vous avez terminé.

      Ensuite, vous devez indiquer à UFW d’autoriser également les paquets transmis par défaut. Pour ce faire, ouvrez le fichier /etc/default/ufw :

      • sudo nano /etc/default/ufw

      À l’intérieur, trouvez la directive DEFAULT_FORWARD_POLICY et changez la valeur de DROP à ACCEPT :

      /etc/default/ufw

      DEFAULT_FORWARD_POLICY="ACCEPT"
      

      Enregistrez et fermez le fichier lorsque vous avez terminé.

      Ensuite, ajustez le pare-feu lui-même pour permettre le trafic vers OpenVPN. Si vous n’avez pas modifié le port et le protocole dans le fichier /etc/openvpn/server.conf, vous devrez ouvrir le trafic UDP au port 1194. Si vous avez modifié le port et/ou le protocole, utilisez ici les valeurs que vous avez sélectionnées.

      Au cas où vous auriez oublié d’ajouter le port SSH en suivant le tutoriel préalable, ajoutez-le également ici :

      • sudo ufw allow 1194/udp
      • sudo ufw allow OpenSSH

      Après avoir ajouté ces règles, désactivez et réactivez UFW pour le redémarrer et charger les modifications de tous les fichiers :

      • sudo ufw disable
      • sudo ufw enable

      Votre serveur est maintenant configuré pour gérer correctement le trafic OpenVPN. Une fois les règles du pare-feu en place, nous pouvons lancer le service OpenVPN sur le serveur.

      Étape 10 – Démarrer OpenVPN

      OpenVPN fonctionne comme un service systemd, nous pouvons donc utiliser systemctl pour le gérer. Nous configurerons OpenVPN pour qu’il se lance au démarrage afin que vous puissiez vous connecter à votre VPN à tout moment tant que votre serveur tourne. Pour ce faire, activez le service OpenVPN en l’ajoutant à systemctl : 

      • sudo systemctl -f enable openvpn-server@server.service

      Ensuite, lancez le service OpenVPN :

      • sudo systemctl start openvpn-server@server.service

      Vérifiez que le service OpenVPN est actif avec la commande suivante. Vous devriez voir active (en cours) dans le résultat : 

      • sudo systemctl status openvpn-server@server.service

      Output

      ● openvpn-server@server.service - OpenVPN service for server Loaded: loaded (/lib/systemd/system/openvpn-server@.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2020-04-29 15:39:59 UTC; 6s ago Docs: man:openvpn(8) https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage https://community.openvpn.net/openvpn/wiki/HOWTO Main PID: 16872 (openvpn) Status: "Initialization Sequence Completed" Tasks: 1 (limit: 1137) Memory: 1.0M CGroup: /system.slice/system-openvpnx2dserver.slice/openvpn-server@server.service └─16872 /usr/sbin/openvpn --status /run/openvpn-server/status-server.log --status-version 2 --suppress-timestamps --c> . . . . . . Apr 29 15:39:59 ubuntu-20 openvpn[16872]: Initialization Sequence Completed

      Nous avons maintenant terminé la configuration côté serveur pour OpenVPN. Ensuite, vous allez configurer votre machine cliente et vous connecter au serveur OpenVPN.

      Étape 11 – Créer l’infrastructure de configuration du client

      La création de fichiers de configuration pour les clients OpenVPN peut être quelque peu compliquée, car chaque client doit avoir sa propre configuration et chacun doit s’aligner sur les paramètres décrits dans le fichier de configuration du serveur. Plutôt que d’écrire un seul fichier de configuration qui ne peut être utilisé que sur un seul client, cette étape décrit un processus de construction d’une infrastructure de configuration client que vous pouvez utiliser pour générer des fichiers de configuration à la volée. Vous créerez d’abord un fichier de configuration « de base », puis un script qui vous permettra de générer des fichiers de configuration client, des certificats et des clés uniques selon les besoins.

      Commencez par créer un nouveau répertoire dans lequel vous stockerez les fichiers de configuration du client dans le répertoire client-configs que vous avez créé précédemment :

      • mkdir -p ~/client-configs/files

      Ensuite, copiez un exemple de fichier de configuration client dans le répertoire client-configs pour l’utiliser comme configuration de base :

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

      Ouvrez ce nouveau dossier en utilisant nano ou votre éditeur de texte préféré : 

      • nano ~/client-configs/base.conf

      Dans celui-ci, localisez la directive remote. Le client est alors dirigé vers l’adresse de votre serveur OpenVPN – l’adresse IP publique de votre serveur OpenVPN. Si vous avez décidé de modifier le port sur lequel le serveur OpenVPN écoute, vous devrez également changer 1194 pour le port que vous avez sélectionné :

      ~/client-configs/base.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
      . . .
      

      Assurez-vous que le protocole correspond à la valeur que vous utilisez dans la configuration du serveur :

      ~/client-configs/base.conf

      proto udp
      

      Ensuite, décommentez les directives user et group en supprimant le symbole « ; » au début de chaque ligne :

      ~/client-configs/base.conf

      # Downgrade privileges after initialization (non-Windows only)
      user nobody
      group nogroup
      

      Trouvez les directives qui fixent ca, cert et key. Commentez ces directives, car vous ajouterez bientôt les certificats et les clés dans le dossier lui-même :

      ~/client-configs/base.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
      

      De même, commentez la directive tls-auth, car vous ajouterezta.key directement dans le fichier de configuration client (et le serveur est configuré pour utiliser tls-crypt):

      ~/client-configs/base.conf

      # If a tls-auth key is used on the server
      # then every client must also have the key.
      ;tls-auth ta.key 1
      

      Refléter les paramètres de chiffrement et auth que vous avez définis dans le fichier /etc/openvpn/server/server.conf :

      ~/client-configs/base.conf

      cipher AES-256-GCM
      auth SHA256
      

      Ensuite, ajoutez la directive key-direction quelque part dans le fichier. Vous devez régler ce paramètre sur « 1 » pour que le VPN fonctionne correctement sur la machine cliente :

      ~/client-configs/base.conf

      key-direction 1
      

      Enfin, ajoutez quelques lignes commentées pour traiter les différentes méthodes que les clients VPN basés sur Linux utiliseront pour la résolution DNS. Vous allez ajouter deux ensembles similaires, mais distincts des lignes commentées. Le premier ensemble est celui des clients qui n’utilisent pas systemd-resolved pour gérer le DNS. Ces clients reposent sur l’utilitaire resolvconf pour mettre à jour les informations DNS pour les clients Linux.

      ~/client-configs/base.conf

      ; script-security 2
      ; up /etc/openvpn/update-resolv-conf
      ; down /etc/openvpn/update-resolv-conf
      

      Ajoutez maintenant un autre ensemble de lignes pour les clients qui utilisent systemd-resolved pour la résolution DNS :

      ~/client-configs/base.conf

      ; script-security 2
      ; up /etc/openvpn/update-systemd-resolved
      ; down /etc/openvpn/update-systemd-resolved
      ; down-pre
      ; dhcp-option DOMAIN-ROUTE .
      

      Enregistrez et fermez le fichier lorsque vous avez terminé.

      Plus tard dans l’Étape 13 – Installation de l’étape de configuration du client de ce tutoriel, vous apprendrez comment déterminer le fonctionnement de la résolution DNS sur les clients Linux et quelle section doit être décommentée.

      Ensuite, nous créerons un script qui compilera votre configuration de base avec les fichiers de certificat, de clé et de cryptage pertinents, puis nous placerons la configuration générée dans le répertoire~/client-configs/files. Ouvrez un nouveau fichier appelé make_config.sh dans le répertoire ~/client-configs :

      • nano ~/client-configs/make_config.sh

      Dans ce fichier, ajoutez le contenu suivant :

      ~/client-configs/make_config.sh

      #!/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-crypt>') 
          ${KEY_DIR}/ta.key 
          <(echo -e '</tls-crypt>') 
          > ${OUTPUT_DIR}/${1}.ovpn
      

      Enregistrez et fermez le fichier lorsque vous avez terminé.

      Avant de poursuivre, veillez à marquer ce fichier comme exécutable en tapant :

      • chmod 700 ~/client-configs/make_config.sh

      Ce script fera une copie du fichier base.conf que vous avez créé, rassemblera tous les fichiers de certificats et de clés que vous avez créés pour votre client, extraira leur contenu, les ajoutera à la copie du fichier de configuration de la base et exportera tout ce contenu dans un nouveau fichier de configuration du client. Cela signifie que, plutôt que de devoir gérer séparément les fichiers de configuration, de certificat et de clé du client, toutes les informations requises sont stockées en un seul endroit. L’avantage de cette méthode est que si jamais vous devez ajouter un client à l’avenir, vous pouvez exécuter ce script pour créer rapidement un nouveau fichier de configuration et vous assurer que toutes les informations importantes sont stockées dans un seul endroit facile d’accès.

      Veuillez noter qu’à chaque fois que vous ajouterez un nouveau client, vous devrez générer de nouvelles clés et de nouveaux certificats pour lui avant de pouvoir exécuter ce script et générer son fichier de configuration. Vous vous entraînerez à utiliser ce script dans la prochaine étape.

      Étape 12 – Générer les configurations client

      Si vous avez suivi le guide, vous avez créé un certificat de client et une clé nommés client1.crt et client1.keyrespectivement à l’étape 6. Vous pouvez générer un fichier de configuration pour ces informations d’identification en allant dans votre ~/client-configs et exécuter le script que vous avez fait à la fin de l’étape précédente : 

      • cd ~/client-configs
      • ./make_config.sh client1

      Cela créera un fichier nommé client1.ovpn dans votre répertoire ~/client-configs/files :

      • ls ~/client-configs/files

      Output

      client1.ovpn

      Vous devez transférer ce fichier sur l’appareil que vous prévoyez d’utiliser en tant que client. Il peut s’agir, par exemple, de votre ordinateur local ou d’un appareil mobile.

      Bien que les applications exactes utilisées pour effectuer ce transfert dépendent du système d’exploitation de votre appareil et de vos préférences personnelles, utiliser le SFTP (protocole de transfert de fichiers SSH) ou le SCP (Secure Copy) en back-end constitue une méthode fiable et sûre. Cela permettra de transporter les fichiers d’authentification VPN de votre client sur une connexion chiffrée.

      Voici un exemple de commande SFTP que vous pouvez exécuter depuis votre ordinateur local (macOS ou Linux). Cela permettra de copier le client1.ovpn que nous avons créé dans la dernière étape vers votre répertoire d’origine : 

      • sftp sammy@openvpn_server_ip:client-configs/files/client1.ovpn ~/

      Voici plusieurs outils et tutoriels qui permettent de transférer en toute sécurité des fichiers du serveur OpenVPN vers un ordinateur local :

      Étape 13 – Installer la configuration client

      Cette section explique comment installer un profil VPN client sur Windows, macOS, Linux, iOS et Android. Aucune de ces instructions du client ne dépend d’une autre, alors n’hésitez pas à passer à celle qui s’applique à votre appareil.

      La connexion OpenVPN portera le même nom que celui du fichier .ovpn. Pour ce tutoriel, cela signifie que la connexion est nommée client1.ovpn, s’alignant sur le premier fichier client que vous avez généré.

      Windows

      Installation

      Téléchargez l’application client OpenVPN pour Windows depuis la page de téléchargement d’OpenVPN. Choisissez la version d’installation appropriée pour votre version de Windows.

      Remarque : OpenVPN a besoin de privilèges administratifs pour s’installer.

      Après avoir installé OpenVPN, copiez le fichier .ovpn dans :

      C:Program FilesOpenVPNconfig
      

      Lorsque vous lancez OpenVPN, il localisera automatiquement le profil et le rendra disponible.

      Vous devez exécuter OpenVPN en tant qu’administrateur à chaque fois qu’il est utilisé, même par des comptes administratifs. Pour effectuer cette action sans avoir à cliquer sur le bouton droit de la souris et à sélectionner Exécuter en tant qu’administrateur chaque fois que vous utilisez le VPN, vous devez le pré-régler à partir d’un compte administratif. Cela signifie également que les utilisateurs standard devront entrer le mot de passe de l’administrateur pour utiliser OpenVPN. Les utilisateurs standard ne peuvent pas se connecter correctement au serveur à moins que l’application OpenVPN sur le client n’ait des droits d’administrateur, les privilèges élevés sont donc nécessaires.

      Pour que l’application OpenVPN s’exécute toujours en tant qu’administrateur, cliquez avec le bouton droit de la souris sur son icône de raccourci et allez dans Propriétés. En bas de l’onglet Compatibilité, cliquez sur le bouton Modifier les paramètres pour tous les utilisateurs. Dans la nouvelle fenêtre, cochez Exécuter ce programme en tant qu’administrateur.

      Connexion

      À chaque fois que vous lancez l’interface graphique d’OpenVPN, Windows vous demande si vous souhaitez autoriser le programme à apporter des modifications à votre ordinateur. Cliquez sur Oui. Le lancement de l’application client OpenVPN ne fait que placer l’applet dans la barre d’état système afin que vous puissiez connecter et déconnecter le VPN selon vos besoins : il n’établit pas réellement la connexion VPN.

      Une fois qu’OpenVPN est lancé, initiez une connexion en vous rendant dans l’applet de la barre d’état système et en cliquant avec le bouton droit de la souris sur l’icône de l’applet OpenVPN. Cela ouvre le menu contextuel. Sélectionnez client1 en haut du menu (c’est votre profil client1.ovpn) et choisissez Connecter.

      Une fenêtre d’état s’ouvrira, montrant la sortie du journal pendant que la connexion est établie, et un message s’affichera une fois que le client sera connecté.

      Déconnectez-vous du VPN de la même manière : allez dans l’applet de la barre d’état système, cliquez avec le bouton droit de la souris sur l’icône de l’applet OpenVPN, sélectionnez le profil du client et cliquez sur Déconnecter.

      macOS

      Installation

      Tunnelblick est un client OpenVPN gratuit et open source pour macOS. Vous pouvez télécharger la dernière image disque à partir de la page de téléchargement de Tunnelblick. Double-cliquez sur le fichier .dmg téléchargé et suivez les instructions pour l’installer.

      Vers la fin du processus d’installation, Tunnelblick vous demandera si vous avez des fichiers de configuration. Répondez J’ai des fichiers de configuration et laissez Tunnelblick finir. Ouvrez une fenêtre du Finder et double-cliquez sur client1.ovpn. Tunnelblick installera le profil du client. Des privilèges administratifs sont requis.

      Connexion

      Lancez Tunnelblick en double-cliquant sur l’icône de Tunnelblick dans le dossier Applications. Lorsque Tunnelblick est lancé, une icône Tunnelblick apparaît dans la barre de menu en haut à droite de l’écran pour contrôler les connexions. Cliquez sur l’icône, puis sur l’élément de menu Connecter client1 pour lancer la connexion VPN.

      Linux

      Installation

      Si vous utilisez Linux, vous pouvez utiliser plusieurs outils en fonction de votre distribution. Votre environnement de bureau ou votre gestionnaire de fenêtres peut également inclure des utilitaires de connexion.

      La façon la plus universelle de se connecter, cependant, est d’utiliser simplement le logiciel OpenVPN.

      Sur Ubuntu ou Debian, vous pouvez l’installer comme vous l’avez fait sur le serveur en tapant :

      • sudo apt update
      • sudo apt install openvpn

      Sur CentOS, vous pouvez activer les référentiels EPEL et les installer ensuite en tapant :

      • sudo dnf install epel-release
      • sudo dnf install openvpn

      Configuration des clients qui utilisent systemd-resolved

      Vérifiez d’abord si votre système utilise systemd-resolved pour traiter la résolution DNS en vérifiant le fichier /etc/resolv.conf :

      Output

      # This file is managed by man:systemd-resolved(8). Do not edit. . . . nameserver 127.0.0.53 options edns0

      Si votre système est configuré pour utiliser systemd-resolved pour la résolution DNS, l’adresse IP après l’option nameserver sera 127.0.0.53. Il devrait également y avoir des commentaires dans le fichier, comme le résultat qui est montré, qui expliquent comment systemd-resolved gère le fichier. Si vous avez une adresse IP différente de 127.0.0.53, il y a de fortes chances que votre système n’utilise pas systemd-resolved et vous pouvez passer à la section suivante sur la configuration des clients Linux qui ont un script update-resolv-conf.

      Pour prendre ces clients en chage, installez d’abord le package openvpn-systemd-resolved Il fournit des scripts qui forceront systemd-resolved à utiliser le serveur VPN pour la résolution DNS.

      • sudo apt install openvpn-systemd-resolved

      Une fois le package installé, configurez le client pour l’utiliser et pour envoyer toutes les requêtes DNS sur l’interface VPN. Ouvrez le fichier VPN du client :

      Décommentez maintenant les lignes suivantes que vous avez ajoutées précédemment :

      client1.ovpn

      script-security 2
      up /etc/openvpn/update-systemd-resolved
      down /etc/openvpn/update-systemd-resolved
      down-pre
      dhcp-option DOMAIN-ROUTE .
      

      Configuration des clients qui utilisent update-resolv-conf​​​

      Si votre système n’utilise pas systemd-resolved pour gérer les DNS, vérifiez si votre distribution comprend un script /etc/openvpn/update-resolv-conf :

      Output

      update-resolv-conf

      Si votre client inclut le fichier update-resolv-conf, alors modifiez le fichier de configuration du client OpenVPN que vous avez transféré précédemment :

      Décommentez les trois lignes que vous avez ajoutées pour ajuster les paramètres DNS :

      client1.ovpn

      script-security 2
      up /etc/openvpn/update-resolv-conf
      down /etc/openvpn/update-resolv-conf
      

      Si vous utilisez CentOS, changez la directive group de nogroup à nobody pour qu’elle corresponde aux groupes disponibles de la distribution :

      client1.ovpn

      group nobody
      

      Enregistrez et fermez le fichier.

      Connexion

      Maintenant, vous pouvez vous connecter au VPN en pointant simplement la commande openvpn sur le fichier de configuration client :

      • sudo openvpn --config client1.ovpn

      Cela devrait vous connecter à votre VPN.

      Remarque : si votre client utilise systemd-resolved pour gérer les DNS, vérifiez que les paramètres sont appliqués correctement en exécutant systemd-resolve --statt comme ceci :

      • systemd-resolve --status tun0

      Vous devriez voir une sortie similaire à la suivante :

      Output

      Link 22 (tun0) . . . DNS Servers: 208.67.222.222 208.67.220.220 DNS Domain: ~.

      Si vous voyez les adresses IP des serveurs DNS que vous avez configurés sur le serveur OpenVPN, avec le paramètre ~. pour DNS Domain​​ dans la sortie, alors vous avez correctement configuré votre client pour utiliser le résolveur DNS du serveur VPN. Vous pouvez également vérifier que vous envoyez des requêtes DNS sur le VPN en utilisant un site comme DNS leak test.com.

      iOS

      Installation

      Depuis l’App Store d’iTunes, recherchez et installez OpenVPN Connect, l’application client OpenVPN officielle pour iOS. Pour transférer la configuration de votre client iOS sur l’appareil, connectez-le directement à un ordinateur.

      La procédure à suivre pour effectuer le transfert avec iTunes est décrite ici. Ouvrez iTunes sur l’ordinateur et cliquez sur iPhone > apps. Faites défiler vers le bas jusqu’à la section Partage de fichiers et cliquez sur l’application OpenVPN. La fenêtre vide à droite, Documents OpenVPN, est destinée au partage de fichiers. Faites glisser le fichier .ovpn vers la fenêtre OpenVPN Documents (Documents OpenVPN). iTunes montrant le profil VPN prêt à être chargé sur l'iPhone

      Lancez maintenant l’application OpenVPN sur l’iPhone. Vous recevrez une notification vous informant qu’un nouveau profil est prêt à être importé. Appuyez sur le signe + vert pour l’importer.

      L'appli OpenVPN iOS présentant un nouveau profil prêt à être importéConnexion

      OpenVPN est maintenant prêt à être utilisé avec le nouveau profil. Démarrez la connexion en faisant glisser le bouton Connect sur la position On. Déconnectez-vous en faisant glisser le même bouton sur Off.

      Remarque : Le commutateur VPN sous Paramètres ne peut pas être utilisé pour se connecter au VPN. Si vous essayez, vous recevrez un avis vous invitant à vous connecter uniquement à l’aide de l’application OpenVPN.

      The OpenVPN iOS app connected to the VPN

      Android

      Installation

      Ouvrez le Google Play Store. Recherchez et installez Android OpenVPN Connect, l’application client officielle d’OpenVPN sur Android.

      Vous pouvez transférer le profil .ovpn en connectant l’appareil Android à votre ordinateur par USB et en copiant le fichier dessus. Sinon, si vous disposez d’un lecteur de carte SD, vous pouvez retirer la carte SD de l’appareil, y copier le profil, puis réinsérer la carte dans l’appareil Android.

      Lancez l’application OpenVPN et appuyez sur le menu FILE (FICHIER) pour importer le profil.

      The OpenVPN Android app profile import menu selection

      Ensuite, naviguez jusqu’à l’emplacement du profil enregistré (la capture d’écran utilise /storage/emulated/0/openvpn) et sélectionnez votre fichier .ovpn. Appuyez sur le bouton IMPORT (IMPORTER) pour terminer l’importation de ce profil.

      The OpenVPN Android app selecting VPN profile to import

      le profil Connecting Once (Connexion Une fois) est ajouté, vous verrez un écran comme celui-ci :

      L'application Android d'OpenVPN avec un nouveau profil ajouté 

      Pour vous connecter, appuyez sur le bouton de commutation situé à proximité du profil que vous souhaitez utiliser. Vous verrez les statistiques en temps réel de votre connexion et du trafic acheminé par votre serveur OpenVPN : L'appli OpenVPN Android connectée au VPN 

      Pour vous déconnecter, il suffit d’appuyer une nouvelle fois sur le bouton de commutation en haut à gauche. Vous serez invité à confirmer que vous souhaitez vous déconnecter de votre VPN.

      Étape 14 – Tester votre connexion VPN (facultatif)

      Remarque : Cette méthode pour tester votre connexion VPN ne fonctionnera que si vous avez choisi de faire passer tout votre trafic par le VPN à l’étape 7 lorsque vous avez modifié le fichier server.conf pour OpenVPN.

      Une fois que tout est installé, une simple vérification confirme que tout fonctionne correctement. Sans avoir activé de connexion VPN, ouvrez un navigateur et allez sur DNSLeakTest.

      Le site renvoie l’adresse IP attribuée par votre fournisseur d’accès à Internet et telle que vous apparaissez au reste du monde. Pour vérifier vos paramètres DNS sur le même site web, cliquez sur Extended Test et il vous indiquera quels serveurs DNS vous utilisez.

      Connectez maintenant le client OpenVPN au VPN de votre Droplet et rafraîchissez le navigateur. Une adresse IP complètement différente (celle de votre serveur VPN) devrait maintenant apparaître, et c’est ainsi que vous apparaissez au monde. Encore une fois, le test Extended Test de DNSLeakTest vérifiera vos paramètres DNS et confirmera que vous utilisez maintenant les résolveurs DNS poussés par votre VPN.

      Étape 15 – Révoquer les certificats clients

      Il peut arriver que vous deviez révoquer le certificat d’un client pour empêcher tout accès ultérieur au serveur OpenVPN.

      Pour ce faire, suivez l’exemple du tutoriel sur les conditions préalables Comment mettre en place et configurer une autorité de certification sur Ubuntu 20.04 dans la section Révoquer un certificat.

      Une fois que vous avez révoqué un certificat pour un client en suivant ces instructions, vous devez copier le fichiercrl.pem vers votre serveur OpenVPN dans le répertoire /etc/openvpn/server : 

      • sudo cp /tmp/crl.pem /etc/openvpn/server/

      Ensuite, ouvrez le fichier de configuration du serveur OpenVPN :

      • sudo nano /etc/openvpn/server/server.conf

      Au bas du fichier, ajoutez l’option crl-verify, qui demandera au serveur OpenVPN de vérifier la liste de révocation de certificats que nous avons créée à chaque tentative de connexion :

      /etc/openvpn/server/server.conf

      crl-verify crl.pem
      

      Enregistrez et fermez le fichier.

      Enfin, redémarrez OpenVPN pour implémenter la révocation du certificat :

      • sudo systemctl restart openvpn-server@server.service

      Le client ne devrait plus être en mesure de se connecter au serveur en utilisant les anciennes informations d’identification.

      Pour révoquer d’autres clients, procédez comme suit :

      1. Révoquez le certificat avec la commande ./easyrsa revoke client-name
      2. Générez un nouveau fichier CRL
      3. Transférer le nouveau fichier crl.pem vers votre serveur OpenVPN et copiez le fichier /etc/openvpn/server/ pour se substituer à l’ancienne liste.
      4. Redémarrez le service OpenVPN.

      Vous pouvez utiliser cette méthode processus pour révoquer tout certificat que vous avez précédemment émis pour votre serveur.

      Conclusion

      Vous devriez maintenant disposer d’un réseau privé virtuel pleinement opérationnel fonctionnant sur votre serveur OpenVPN. Vous pouvez naviguer sur le web et télécharger du contenu sans craindre que des utilisateurs malveillants ne suivent votre activité.

      Vous pouvez prendre plusieurs mesures pour personnaliser davantage votre installation OpenVPN, par exemple en configurant votre client pour qu’il se connecte automatiquement au VPN ou en configurant des règles et des politiques d’accès spécifiques au client. Pour ces personnalisations et d’autres personnalisations d’OpenVPN, vous devez consulter la documentation officielle d’OpenVPN. 

      Pour configurer plus de clients, il suffit de suivre les étapes 6 et 11-13 pour chaque dispositif supplémentaire. Pour révoquer l’accès aux clients, suivez l’étape 15.



      Source link

      Cómo instalar y configurar un servidor de OpenVPN en Ubuntu 20.04


      Introducción

      Una red privada virtual (VPN) le permite transitar por redes no fiables como si estuviese en una red privada. Le permite acceder a Internet de forma segura desde su smartphone o equipo portátil cuando se conecta a una red no fiable, como la wifi de un hotel o una cafetería.

      Cuando se combina con conexiones HTTPS, esta configuración le permite proteger los inicios de sesión y las operaciones que realiza por medios inalámbricos. Puede evadir censuras y restricciones geográficas, y proteger su ubicación y el tráfico de HTTP no cifrado contra la actividad de las redes no fiables.

      OpenVPN es una solución VPN de seguridad en la capa de transporte (TLS) de código abierto y con características completas que aloja muchas configuraciones. En este tutorial, instalará OpenVPN en un servidor de Ubuntu 20.04 y luego la configurará para que el acceso a ella sea posible desde la máquina de un cliente.

      Nota: Si planea configurar un servidor de OpenVPN en un Droplet de DigitalOcean tenga en cuenta que, como muchos proveedores de host, cobraremos por excesos de ancho de banda. Por este motivo, controle el volumen de tráfico que maneja su servidor.

      Consulte esta página para obtener más información.

      Requisitos previos

      Para este tutorial, necesitará lo siguiente:

      Nota: Si bien es técnicamente posible usar su servidor de OpenVPN o su máquina local como CA, no se recomienda, dado que expone su VPN a algunas vulnerabilidades de seguridad. Según la documentación oficial de OpenVPN, debería disponer su CA en una máquina independiente dedicada a importar y firmar solicitudes de certificados. Por este motivo, para esta guía se supone que su CA se encuentra en un servidor de Ubuntu 20.04 independiente que también tiene un non-root user con privilegios sudo y un firewall básico habilitado.

      Además de eso, necesitará una máquina de cliente que usará para establecer conexión con su servidor de OpenVPN. En esta guía, lo citaremos como cliente de OpenVPN. A los efectos de este tutorial, le recomendamos que use su máquina local como el cliente de OpenVPN.

      Una vez implementados estos requisitos previos, estará listo para comenzar a instalar y configurar un servidor de OpenVPN en Ubuntu 20.04.

      Nota: Tenga en cuenta que si deshabilita la autenticación de contraseña mientras configura estos servidores, es posible que experimente dificultades al transferir archivos entre ellos más adelante en esta guía. Para solucionar este problema, puede volver a habilitar la autenticación de contraseña en cada servidor. De manera alternativa, puede generar un par de claves SSH para cada servidor, luego agregar la clave SSH pública del servidor de OpenVPN al archivo authorized_keys y viceversa. Consulte Cómo configurar claves de SSH en Ubuntu 20.04 para encontrar instrucciones sobre cómo aplicar cualquiera de estas soluciones.

      Paso 1: Instalar OpenVPN y Easy-RSA

      El primer paso de este tutorial es instalar OpenVPN y Easy-RSA. Easy-RSA es una herramienta de gestión de infraestructura de claves públicas (PKI) que usará en el servidor de OpenVPN para generar una solicitud de certificado que luego verificará y firmará en el servidor de CA.

      Para comenzar, actualice el índice de paquetes de su servidor de OpenVPN e instale y OpenVPN y Easy-RSA. Ambos paquetes están disponibles en los repositorios predeterminados de Ubuntu. Por lo tanto, puede utilizar apt para la instalación:

      • sudo apt update
      • sudo apt install openvpn easy-rsa

      A continuación, deberá crear un directorio nuevo en el servidor de OpenVPN como su non-root user llamado ~/easy-rsa:

      Ahora, deberá crear un symlink desde la secuencia de comandos de easyrsa que el paquete instaló en el directorio ~/easy-rsa que acaba de crear:

      • ln -s /usr/share/easy-rsa/* ~/easy-rsa/

      Nota: Aunque en otras guías se le indique copiar los archivos del paquete easy-rsa a su directorio de la PKI, en este tutorial usaremos enlaces simbólicos. Como resultado, toda actualización del paquete easy-rsa se reflejará automáticamente en las secuencias de comandos de su PKI.

      Por último, asegúrese de que el propietario del directorio sea su non-root sudo user y restrinja el acceso a ese usuario con chmod:

      • sudo chown sammy ~/easy-rsa
      • chmod 700 ~/easy-rsa

      Cuando haya instalado estos programas y se hayan movido a las ubicaciones correctas en su sistema, el siguiente paso es crear una infraestructura de claves públicas (PKI) en el servidor de OpenVPN para que pueda solicitar y administrar certificados TLS para clientes y otros servidores que se conecten a su VPN.

      Paso 2: Crear una PKI para OpenVPN

      Antes de poder crear la clave y el certificado privados de su servidor de OpenVPN, deberá crear un directorio local de infraestructura de clave pública en su servidor de OpenVPN. Usará este directorio para gestionar las solicitudes de certificados de clientes y del servidor en vez de hacerlas directamente en su servidor CA.

      Para crear un directorio de PKI en su servidor de OpenVPN, deberá completar un archivo llamado vars con algunos valores predeterminados. Primero, usará cd para ingresar al directorio easy-rsa y, luego, creará y editará el archivo vars utilizando nano o el editor de texto que prefiera.

      Una vez abierto el archivo, pegue las siguientes dos líneas:

      ~/easy-rsa/vars

      set_var EASYRSA_ALGO "ec"
      set_var EASYRSA_DIGEST "sha512"
      

      Estas son las dos únicas líneas que necesita en este archivo vars de su servidor de OpenVPN, ya que no se utilizará como entidad de certificación. Estas líneas garantizarán que sus claves y solicitudes de certificados privadas estén configuradas para utilizar la Elliptic Curve Cryptography (ECC) moderna, a fin de generar claves y firmas seguras para sus clientes y su servidor de OpenVPN.

      Configurar sus servidores de OpenVPN y CA para que usen ECC significa que cuando un cliente y un servidor intenten establecer una clave simétrica compartida, pueden usar algoritmos de Elliptic Curve para realizar el intercambio. Usar ECC para un intercambio de claves es mucho más rápido que usar solo Diffie-Hellman con el clásico algoritmo RSA, dado que los números son mucho más pequeños y los cálculos son más rápidos.

      Antecedentes: Cuando los clientes se conectan a OpenVPN, usan cifrado asimétrico (también conocido como “clave pública o privada”) para realizar un protocolo de enlace TLS. Sin embargo, al transmitir tráfico de VPN cifrado, el servidor y los clientes usan el cifrado simétrico, también conocido como “cifrado de clave compartida”.

      Hay mucha menos estructura informática con cifrado simétrico que con el asimétrico: los números que se utilizan son mucho más pequeños y las CPU modernas integran instrucciones para realizar operaciones de cifrado simétricas optimizadas. Para hacer el cambio de cifrado de asimétrico a simétrico, el servidor de OpenVPN y el cliente usarán el algoritmo Elliptic Curve Diffie-Hellman (ECDH) para acordar una clave secreta compartida lo antes posible.

      Cuando complete el archivo vars, podrá continuar creando el directorio PKI. Para ello, ejecute la secuencia de comandos easyrsa con la opción init-pki. Aunque ya ejecutó este comando en el servidor CA como parte de los requisitos previos, debe ejecutarlo aquí porque su servidor de OpenVPN y el de CA tienen directorios PKI separados:

      Tenga en cuenta que no necesita crear una entidad de certificación en su servidor de OpenVPN. Su servidor de CA es el único responsable de validar y firmar certificados. La PKI de su servidor VPN solo se usa como una ubicación adecuada y centralizada para almacenar solicitudes de certificado y certificados públicos.

      Después de iniciar su PKI en el servidor de OpenVPN, estará listo para continuar con el siguiente paso: crear una solicitud de certificado de servidor de OpenVPN y una clave privada.

      Paso 3: Crear una solicitud de certificado de servidor de OpenVPN y una clave privada

      Ahora que en su servidor de OpenVPN se realizaron las instalaciones establecidas en los requisitos previos, el siguiente paso es generar una clave privada y una solicitud de firma de certificados (CSR) en su servidor de OpenVPN. A continuación, transferirá la solicitud a su CA para que se firme, lo que creará el certificado requerido. Cuando tenga un certificado firmado, lo transferirá de vuelta al servidor de OpenVPN y lo instalará para que el servidor lo use.

      Para comenzar, diríjase al directorio ~/easy-rsa de su servidor de OpenVPN como non-root user:

      Invoque easyrsa con la opción gen-req seguida de un nombre común (CN) para la máquina. El CN puede ser el que prefiera, pero puede resultarle útil que sea descriptivo. Durante este tutorial, el CN del servidor de OpenVPN será server. Asegúrese de incluir también la opción nopass. Si no lo hace, se protegerá con contraseña el archivo de solicitud, lo que podría generar problemas de permisos más adelante.

      Nota: Si elige otro nombre que no sea server, deberá modificar algunas de las instrucciones a continuación. Por ejemplo, al copiar los archivos generados al directorio /etc/openvpn, deberá sustituir los nombres que correspondan. También deberá modificar el archivo /etc/openvpn/server.conf más adelante para señalar los archivos .crt y .key correctos.

      • ./easyrsa gen-req server nopass

      Output

      Common Name (eg: your user, host, or server name) [server]: Keypair and certificate request completed. Your files are: req: /home/sammy/easy-rsa/pki/reqs/server.req key: /home/sammy/easy-rsa/pki/private/server.key

      Con esto, se crearán una clave privada para el servidor y un archivo de solicitud de certificado llamado server.req. Copie la clave del servidor al directorio /etc/openvpn/server:

      • sudo cp /home/sammy/easy-rsa/pki/private/server.key /etc/openvpn/server/

      Tras completar estos pasos, habrá creado correctamente una clave privada para su servidor de OpenVPN. También generó una solicitud de firma de certificado para el servidor de OpenVPN. Ahora la CSR está lista para que su CA la firme. En la siguiente sección de este tutorial, aprenderá a firmar una CSR con la clave privada de su servidor CA.

      Paso 4: Firmar la solicitud de certificado del servidor de OpenVPN

      En el paso anterior, creó una solicitud de firma de certificado (CSR) y una clave privada para el servidor de OpenVPN. Ahora, el servidor de CA necesita conocer el certificado server y validarlo. Una vez que el CA valide y devuelva el certificado al servidor de OpenVPN, los clientes que confían en su CA podrán confiar también en el servidor de OpenVPN.

      En el servidor de OpenVPN, como su non-root user, use SCP u otro método de transferencia a fin de copiar la solicitud de certificado server.req al servidor CA para firmar lo siguiente:

      • scp /home/sammy/easy-rsa/pki/reqs/server.req sammy@your_ca_server_ip:/tmp

      Si siguió el tutorial Cómo instalar y configurar una entidad de certificación (CA) en Ubuntu 20.04 de los requisitos previos, el siguiente paso será iniciar sesión en el servidor de CA como el non-root user que creó para administrar su CA. Utilice cd para el directorio ~/easy-rsa donde creó su PK y luego importe la solicitud de certificado utilizando la secuencia de comandos easyrsa:

      • cd ~/easy-rsa
      • ./easyrsa import-req /tmp/server.req server

      Output

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

      A continuación, firme la solicitud ejecutando la secuencia de comandos easyrsa con la opción sign-req seguida del tipo de solicitud y el nombre común. El tipo de solicitud puede ser client o server. Debido a que estamos trabajando con la solicitud de certificado del servidor de OpenVPN, asegúrese de usar el tipo de solicitud server:

      • ./easyrsa sign-req server server

      En el resultado, se le solicitará que verifique que la solicitud provenga de una fuente de confianza. Escriba yes y pulse ENTER para confirmar:

      Output

      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 3650 days: subject= commonName = server Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes . . . Certificate created at: /home/sammy/easy-rsa/pki/issued/server.crt

      Tenga en cuenta que si cifró su clave privada CA, se le solicitará su contraseña en este momento.

      Completados estos pasos, ha firmado la solicitud de certificado del servidor de OpenVPN usando la clave privada del servidor de CA. El archivo server.crt resultante contiene la clave de cifrado pública del servidor de OpenVPN y una nueva firma del servidor de CA. El objetivo de la firma es indicar a todos los que confían en el servidor de CA que también pueden confiar en el servidor de OpenVPN cuando se conecten a él.

      Para terminar de configurar los certificados, copie los archivos server.crt y ca.crt del servidor de CA al servidor de OpenVPN:

      • scp pki/issued/server.crt sammy@your_vpn_server_ip:/tmp
      • scp pki/ca.crt sammy@your_vpn_server_ip:/tmp

      Ahora, vuelva a su servidor de OpenVPN y copie los archivos de /tmp a /etc/openvpn/server:

      • sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/server

      Con esto, su servidor de OpenVPN estará casi listo para aceptar conexiones. En el siguiente paso, realizará algunos pasos adicionales para aumentar la seguridad del servidor.

      Paso 5: Configurar material criptográfico de OpenVPN

      Para obtener una capa de seguridad adicional, añadiremos una clave secreta compartida que el servidor y todos los clientes usarán con la directiva tls-crypt de OpenVPN. Esta opción se usa para confundir el certificado TLS que se emplea cuando un servidor y un cliente se conectan inicialmente. También lo usa el servidor de OpenVPN para realizar comprobaciones rápidas de los paquetes entrantes: si se firma un paquete usando la clave previamente compartida, el servidor lo procesa; si no se firma, el servidor sabe que es de una fuente no confiable y puede descartarlo sin tener que realizar otras tareas de descifrado.

      Esta opción le servirá para asegurarse de que su servidor de OpenVPN pueda hacer frente al tráfico sin autenticación, a los escáneres de puerto y a los ataques de denegación de servicio, que pueden restringir recursos del servidor. También hace que sea más difícil identificar el tráfico de red de OpenVPN.

      Para generar la clave tls-crypt antes compartida, ejecute lo siguiente en el servidor de OpenVPN en el directorio ~/easy-rsa:

      • cd ~/easy-rsa
      • openvpn --genkey --secret ta.key

      El resultado será un archivo llamado ta.key. Cópielo al directorio /etc/openvpn/server/:

      • sudo cp ta.key /etc/openvpn/server

      Una vez implementados estos archivos en el servidor de OpenVPN, estará listo para crear certificados de cliente y archivos de clave para sus usuarios, que usará para conectarse con la VPN.

      Paso 6: Generar un par de certificado y clave de cliente

      Aunque puede generar una solicitud de claves y certificados privados en su máquina cliente y, luego, enviarla a la CA para que la firme, en esta guía se describe un proceso para generar la solicitud de certificado en el servidor de OpenVPN. El beneficio de este enfoque es que podemos crear una secuencia de comandos que generará de manera automática archivos de configuración de cliente que contienen las claves y los certificados necesarios. Esto le permite evitar la transferencia de claves, certificados y archivos de configuración a los clientes, y optimiza el proceso para unirse a la VPN.

      Generaremos un par individual de clave y certificado de cliente para esta guía. Si tiene más de un cliente, puede repetir este proceso para cada uno. Tenga en cuenta que deberá pasar un valor de nombre único a la secuencia de comandos para cada cliente. En este tutorial, el primer par de certificado y clave se denominará client1.

      Comience por crear una estructura de directorios dentro de su directorio de inicio para almacenar los archivos de certificado y clave de cliente:

      • mkdir -p ~/client-configs/keys

      Debido a que almacenará los pares de certificado y clave de sus clientes y los archivos de configuración en este directorio, debe bloquear sus permisos ahora como medida de seguridad:

      • chmod -R 700 ~/client-configs

      Luego, diríjase al directorio EasyRSA y ejecute la secuencia de comandos ​​​​​​easyrsa con las opciones gen-req y nopass, junto con el nombre común para el cliente:

      • cd ~/easy-rsa
      • ./easyrsa gen-req client1 nopass

      Presione ENTER para confirmar el nombre común. Luego, copie el archivo client1.key al directorio ~/client-configs/keys/ que creó antes:

      • cp pki/private/client1.key ~/client-configs/keys/

      Luego, transfiera el archivo client1.req a su servidor de CA usando un método seguro:

      • scp pki/reqs/client1.req sammy@your_ca_server_ip:/tmp

      Ahora inicie sesión en su servidor de CA. A continuación, diríjase al directorio de EasyRSA e importe la solicitud de certificado:

      • cd ~/easy-rsa
      • ./easyrsa import-req /tmp/client1.req client1

      Luego, firme la solicitud como lo hizo para el servidor en el paso anterior. Esta vez, asegúrese de especificar el tipo de solicitud client:

      • ./easyrsa sign-req client client1

      Cuando se le solicite, ingrese yes para confirmar que desea firmar la solicitud de certificado y que esta provino de una fuente confiable:

      Output

      Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes

      Nuevamente, si cifró su clave de CA, se le solicitará la contraseña en este punto.

      Con esto, se creará un archivo de certificado de cliente llamado client1.crt. Transfiera este archivo de vuelta al servidor:

      • scp pki/issued/client1.crt sammy@your_server_ip:/tmp

      Vuelva a su servidor de OpenVPN, copie el certificado del cliente al directorio ~/client-configs/keys/:

      • cp /tmp/client1.crt ~/client-configs/keys/

      Luego copie los archivos ca.crt y ta.key al directorio ~/client-configs/keys/ también y establezca los permisos correspondientes para su usuario sudo:

      • cp ~/easy-rsa/ta.key ~/client-configs/keys/
      • sudo cp /etc/openvpn/server/ca.crt ~/client-configs/keys/
      • sudo chown sammy.sammy ~/client-configs/keys/*

      Con esto, se generarán los certificados y las claves de su servidor y cliente, y se almacenarán en los directorios correspondientes de su servidor de OpenVPN. Aún quedan algunas acciones que se deben realizar con estos archivos, pero tendrán lugar más adelante. Por ahora, puede continuar con la configuración de OpenVPN.

      Paso 7: Configurar OpenVPN

      Al igual que muchas otras herramientas de código abierto ampliamente usadas, OpenVPN tiene muchas opciones de configuración disponibles para personalizar su servidor según sus necesidades específicas. En esta sección, le daremos instrucciones para instalar una configuración de un servidor de OpenVPN basada en uno de los archivos de configuración de muestra incluidos en la documentación de este software.

      Primero, copie el archivo de muestra server.conf como punto de inicio para su propio archivo de configuración:

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

      Abra el archivo nuevo para editarlo con el editor de texto que prefiera. Usaremos nano en nuestro ejemplo:

      • sudo nano /etc/openvpn/server/server.conf

      Deberá cambiar algunas líneas en este archivo. Primero, encuentre la sección HMAC de la configuración buscando la directiva tls-auth. Esta línea no debería tener comentarios. Elimine los comentarios agregando un ; al comienzo de la línea. Luego, añada después una nueva línea que contenga solo el valor tls-crypt ta.key:

      /etc/openvpn/server/server.conf

      ;tls-auth ta.key 0 # This file is secret
      tls-crypt ta.key
      

      Luego, busque las líneas cipher para encontrar la sección de cifrado. El valor predeterminado está configurado para AES-256-CBC; sin embargo, el cipher de AES-256-GCM ofrece un mejor nivel de cifrado y rendimiento, y es muy compatible con los clientes de OpenVPN actualizados. Eliminaremos el valor predeterminado añadiendo un signo ; al inicio de esta línea y, luego, añadiremos otra línea que contenga el valor actualizado de AES-256-GCM:

      /etc/openvpn/server/server.conf

      ;cipher AES-256-CBC
      cipher AES-256-GCM
      

      Justo después de esta línea, añada una directiva auth para seleccionar el algoritmo de codificación de mensajes HMAC. SHA256 es una buena opción:

      /etc/openvpn/server/server.conf

      auth SHA256
      

      Luego, encuentre la línea que contenga la directiva dh que define los parámetros Diffie-Hellman. Debido a que configuramos todos los certificados para usar Elliptic Curve Cryptography, no necesita un archivo seed Diffie-Hellman. Elimine la línea existente que se parece a dh dh2048.pem o dh dh.pem. El nombre del archivo para la clave Diffie-Hellman puede ser diferente al indicado en el archivo de configuración del servidor de ejemplo. Luego, añada una línea después con el contenido dh none:

      /etc/openvpn/server/server.conf

      ;dh dh2048.pem
      dh none
      

      Luego, queremos que OpenVPN se ejecute sin privilegios cuando se inicie, por lo que debemos indicarle que se ejecute con el usuario nobody.y el grupo nogroup. Para ello, encuentre y elimine el comentario de las líneas user nobody y group nobody quitando el signo ; en el inicio de cada línea:

      /etc/openvpn/server/server.conf

      user nobody
      group nogroup
      

      (Opcional) Aplicar cambios de DNS para redireccionar todo el tráfico a través de la VPN

      Con los ajustes anteriores, creará la conexión de VPN entre su cliente y el servidor, pero no se forzarán conexiones para usar el túnel. Si desea usar la VPN para dirigir todo su tráfico de clientes a ella, probablemente le convenga aplicar algunos ajustes más a las computadoras de clientes.

      Para comenzar, encuentre y elimine el comentario de la línea que contenga push "redirect-gateway def1 bypass-dhcp". Al hacerlo, indicará a su cliente que redirija todo su tráfico a través de su servidor de OpenVPN. Tenga en cuenta que habilitar esta funcionalidad puede causar problemas de conectividad con otros servicios de red, como SSH:

      /etc/openvpn/server/server.conf

      push "redirect-gateway def1 bypass-dhcp"
      

      Debajo de esta línea, encontrará la sección dhcp-option. Nuevamente, elimine ; del inicio de ambas líneas para quitar los comentarios:

      /etc/openvpn/server/server.conf

      push "dhcp-option DNS 208.67.222.222"
      push "dhcp-option DNS 208.67.220.220"
      

      Estas líneas indicarán a su cliente que use los solucionadores OpenDNS gratuitos en las direcciones IP de la lista. Si prefiere otros solucionadores de DNS, puede sustituirlos en lugar de las IP resaltadas.

      Esto ayudará a los clientes a configurar de nuevo sus ajustes de DNS para usar el túnel de la VPN como puerta de enlace predeterminada.

      (Opcional) Ajustar el puerto y el protocolo

      Por defecto, el servidor de OpenVPN usa el puerto 1194 y el protocolo UDP para aceptar las conexiones de los clientes. Si necesita usar un puerto diferente debido a restricciones de los entornos de red que sus clientes puedan emplear, puede cambiar la opción port. Si no aloja contenido web en su servidor de OpenVPN, el puerto 443 es una opción común, ya que se suele permitir en las reglas de firewall.

      Para hacer que OpenVPN escuche en el puerto 443, abra el archivo server.conf y encuentre la línea que tiene el siguiente aspecto:

      /etc/openvpn/server/server.conf

      port 1194
      

      Edítela para que el puerto sea el 443:

      /etc/openvpn/server/server.conf

      # Optional!
      port 443
      

      Algunas veces, el protocolo se limita a ese puerto también. Si es así, encuentre la línea proto debajo de la línea port y cambie el protocolo de udp a tcp:

      /etc/openvpn/server/server.conf

      # Optional!
      proto tcp
      

      Si cambia el protocolo a TCP, deberá cambiar el valor de la directiva explicit-exit-notify de 1 a 0, ya que solo UDP la usa. Si no lo hace al usar TCP, se producirán errores al iniciar el servicio de OpenVPN.

      Busque la línea explicit-exit-notify al final del archivo y cambie el valor a 0:

      /etc/openvpn/server/server.conf

      # Optional!
      explicit-exit-notify 0
      

      Si no tiene necesidad de usar un puerto y protocolo distintos, es mejor dejar estos ajustes sin cambiar.

      (Opcional) Apuntar a credenciales no predeterminadas

      Si seleccionó antes un nombre diferente durante el comando ./easyrsa gen-req server, modifique las líneas cert y key en el archivo de configuración server.conf para que apunten a los archivos .crt y .key correspondientes. Si usa el nombre predeterminado, server, ya está configurado correctamente:

      /etc/openvpn/server/server.conf

      cert server.crt
      key server.key
      

      Cuando termine, guarde y cierre el archivo.

      Con esto, habrá terminado de configurar sus ajustes generales de OpenVPN. En el siguiente paso, personalizaremos las opciones de redes del servidor.

      Paso 6: Ajustar la configuración de redes del servidor de OpenVPN

      Hay algunos aspectos de la configuración de redes del servidor que deben modificarse para que OpenVPN pueda dirigir el tráfico de manera correcta a través de la VPN. El primero es el reenvío de IP, un método para determinar a dónde se debe dirigir el tráfico de IP. Esto es esencial para la funcionalidad de VPN que proporcionará su servidor.

      Para ajustar la configuración de IP predeterminada de su servidor de OpenVPN, abra el archivo /etc/sysctl.conf usando nano o su editor preferido:

      • sudo nano /etc/sysctl.conf

      Luego, añada la siguiente línea al final del archivo:

      /etc/sysctl.conf

      net.ipv4.ip_forward = 1
      

      Guarde y cierre el archivo cuando termine.

      Para leer el archivo y cargar los nuevos valores de la sesión actual, escriba lo siguiente:

      Output

      net.ipv4.ip_forward = 1

      Ahora, su servidor de OpenVPN podrá reenviar el tráfico entrante de un dispositivo ethernet a otro. Este ajuste garantiza que el servidor pueda dirigir tráfico desde los clientes que se conectan en la interfaz de VPN virtual fuera de sus otros dispositivos de ethernet físicos. Con esta configuración, se enviará todo el tráfico web de su cliente a través de la dirección IP de su servidor y la dirección IP pública de su cliente se ocultará de manera eficaz.

      En el siguiente paso, deberá configurar algunas reglas de firewall para asegurarse de que el tráfico hacia y desde su servidor de OpenVPN fluya de forma adecuada.

      Paso 9: Configuración del firewall

      Hasta ahora, instaló OpenVPN en su servidor, lo configuró y generó las claves y los certificados necesarios para que su cliente acceda a la VPN. Sin embargo, aún no ha proporcionado ninguna instrucción a OpenVPN sobre a dónde enviar el tráfico web entrante de los clientes. Puede especificar la forma en que el servidor debería gestionar el tráfico de clientes estableciendo algunas reglas de firewall y configuraciones de enrutamiento.

      Suponiendo que cumplió con los requisitos previos indicados al inicio de este tutorial, ya debería tener ufw instalado y en ejecución en su servidor. Para permitir OpenVPN a través del firewall, deberá habilitar el enmascaramiento, un concepto de iptables que proporciona traducción de direcciones de red (NAT) para dirigir de manera correcta las conexiones de los clientes.

      Antes de abrir el archivo de configuración de firewall para agregar las reglas de enmascaramiento, primero debe encontrar la interfaz de red pública de su máquina. Para hacer esto, escriba lo siguiente:

      Su interfaz pública es la secuencia de comandos que se encuentra en el resultado de este comando que sigue a la palabra “dev”. Por ejemplo, este resultado muestra la interfaz llamada eth0, que se resalta a continuación:

      Output

      default via 159.65.160.1 dev eth0 proto static

      Una vez que tenga la interfaz asociada con su ruta predeterminada, abra el archivo /etc/ufw/before.rules para agregar la configuración pertinente:

      • sudo nano /etc/ufw/before.rules

      Las reglas de UFW suelen agregarse usando el comando ufw. Sin embargo, las reglas enumeradas en el archivo before.rules se leen e implementan antes de que se carguen las reglas de UFW. En la parte superior del archivo, agregue las líneas resaltadas a continuación. Con esto, se establecerá la política predeterminada de la cadena POSTROUTING en la tabla nat y se enmascarará el tráfico que provenga de la VPN. Recuerde reemplazar eth0 en la línea -A POSTROUTING siguiente por la interfaz que encontró en el comando anterior:

      /etc/ufw/before.rules

      #
      # rules.before
      #
      # Rules that should be run before the ufw command line added rules. Custom
      # rules should be added to one of these chains:
      #   ufw-before-input
      #   ufw-before-output
      #   ufw-before-forward
      #
      
      # START OPENVPN RULES
      # NAT table rules
      *nat
      :POSTROUTING ACCEPT [0:0]
      # Allow traffic from OpenVPN client to eth0 (change to the interface you discovered!)
      -A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
      COMMIT
      # END OPENVPN RULES
      
      # Don't delete these required lines, otherwise there will be errors
      *filter
      . . .
      

      Guarde y cierre el archivo cuando haya terminado.

      Luego, debe indicar a UFW que permita también los paquetes reenviados de modo predeterminado. Para hacer esto, abra el archivo /etc/default/ufw:

      • sudo nano /etc/default/ufw

      Dentro de este, encuentre la directiva DEFAULT_FORWARD_POLICY y cambie el valor de DROP por ACCEPT:

      /etc/default/ufw

      DEFAULT_FORWARD_POLICY="ACCEPT"
      

      Guarde y cierre el archivo cuando termine.

      Luego, modifique el firewall para permitir el tráfico hacia OpenVPN. Si no cambió el puerto y el protocolo en el archivo /etc/openvpn/server.conf, deberá abrir el tráfico UDP al puerto 1194. Si modificó el puerto o el protocolo, sustituya los valores que seleccionó aquí.

      En caso de que se haya olvidado de agregar el puerto SSH al seguir el tutorial de los requisitos previos, agréguelo aquí también:

      • sudo ufw allow 1194/udp
      • sudo ufw allow OpenSSH

      Luego de agregar esas reglas, deshabilite y vuelva a habilitar UFW para reiniciarlo y cargue los cambios de todos los archivos que haya modificado:

      • sudo ufw disable
      • sudo ufw enable

      Su servidor quedará, así, configurado para manejar de manera correcta el tráfico de OpenVPN. Una vez implementadas las reglas de firewall, podremos iniciar el servicio de OpenVPN en el servidor.

      Paso 10: Iniciar OpenVPN

      OpenVPN se ejecuta como servicio systemd, por lo que podemos usar systemctl para administrarlo. Configuraremos OpenVPN para que se inicie en el arranque, de modo que pueda conectarse a su VPN en cualquier momento siempre que su servidor esté en ejecución. Para ello, habilite el servicio de OpenVPN añadiéndolo a systemctl:

      • sudo systemctl -f enable openvpn-server@server.service

      Luego, inicie el servicio de OpenVPN:

      • sudo systemctl start openvpn-server@server.service

      Vuelva a verificar que el servicio de OpenVPN esté activo con el comando siguiente. Debería ver active (running) en el resultado:

      • sudo systemctl status openvpn-server@server.service

      Output

      ● openvpn-server@server.service - OpenVPN service for server Loaded: loaded (/lib/systemd/system/openvpn-server@.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2020-04-29 15:39:59 UTC; 6s ago Docs: man:openvpn(8) https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage https://community.openvpn.net/openvpn/wiki/HOWTO Main PID: 16872 (openvpn) Status: "Initialization Sequence Completed" Tasks: 1 (limit: 1137) Memory: 1.0M CGroup: /system.slice/system-openvpnx2dserver.slice/openvpn-server@server.service └─16872 /usr/sbin/openvpn --status /run/openvpn-server/status-server.log --status-version 2 --suppress-timestamps --c> . . . . . . Apr 29 15:39:59 ubuntu-20 openvpn[16872]: Initialization Sequence Completed

      Ya completamos la configuración de la parte del servidor para OpenVPN. A continuación, configurará su máquina cliente y se conectará con el servidor de OpenVPN.

      Paso 11: Crear la infraestructura de configuración de clientes

      Es posible que se deban crear archivos de configuración para clientes de OpenVPN, ya que todos los clientes deben tener su propia configuración y alinearse con los ajustes mencionados en el archivo de configuración del servidor. En este paso, en lugar de detallarse el proceso para escribir un único archivo de configuración que solo se pueda usar en un cliente, se describe un proceso para crear una infraestructura de configuración de cliente que puede usar para generar archivos de configuración sobre la marcha. Primero creará un archivo de configuración “de base” y, luego, una secuencia de comandos que le permitirá generar archivos de configuración, certificados y claves de clientes exclusivos según sea necesario.

      Comience creando un nuevo directorio en el que almacenará archivos de configuración de clientes dentro del directorio client-configs creado anteriormente:

      • mkdir -p ~/client-configs/files

      Luego, copie un archivo de configuración de cliente de ejemplo al directorio client-configs para usarlo como su configuración de base:

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

      Abra este archivo nuevo con nano o su editor de texto preferido:

      • nano ~/client-configs/base.conf

      Dentro de este, ubique la directiva remote. Esto conduce al cliente a la dirección de su servidor de OpenVPN: la dirección IP pública de su servidor de OpenVPN. Si decidió cambiar el puerto en el que el servidor de OpenVPN realiza escuchas, también deberá cambiar 1194 por el puerto seleccionado:

      ~/client-configs/base.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
      . . .
      

      Asegúrese de que el protocolo coincida con el valor que usa en la configuración del servidor:

      ~/client-configs/base.conf

      proto udp
      

      Luego, elimine los comentarios de las directivas user y group quitando el signo ; al inicio de cada línea:

      ~/client-configs/base.conf

      # Downgrade privileges after initialization (non-Windows only)
      user nobody
      group nogroup
      

      Encuentre las directivas que establecen ca, cert y key. Elimine los comentarios de estas directivas, ya que pronto agregará los certificados y las claves dentro del archivo:

      ~/client-configs/base.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
      

      De modo similar, elimine la directiva tls-auth, ya que añadirá ta.key directamente al archivo de configuración del cliente (y se configura el servidor para que use tls-crypt):

      ~/client-configs/base.conf

      # If a tls-auth key is used on the server
      # then every client must also have the key.
      ;tls-auth ta.key 1
      

      Refleje los ajustes de cipher y auth establecidos en el archivo /etc/openvpn/server/server.conf:

      ~/client-configs/base.conf

      cipher AES-256-GCM
      auth SHA256
      

      Luego, agregue la directiva key-direction en algún lugar del archivo. Es necesario que fije el valor “1” para esta, a fin de que la VPN funcione de manera correcta en la máquina cliente:

      ~/client-configs/base.conf

      key-direction 1
      

      Por último, añada algunas líneas con comentarios eliminados para administrar varios métodos que los clientes VPN basados ​​en Linux utilizarán para la resolución DNS. Añadirá dos conjuntos de líneas con comentarios eliminados similares, pero separados. El primer conjunto es para los clientes que no utilizan systemd-resolved para administrar DNS. Estos clientes dependen de la utilidad resolvconf para actualizar la información DNS para clientes de Linux.

      ~/client-configs/base.conf

      ; script-security 2
      ; up /etc/openvpn/update-resolv-conf
      ; down /etc/openvpn/update-resolv-conf
      

      Luego, añada otro conjunto de líneas para clientes que utilicen systemd-resolved para la resolución de DNS:

      ~/client-configs/base.conf

      ; script-security 2
      ; up /etc/openvpn/update-systemd-resolved
      ; down /etc/openvpn/update-systemd-resolved
      ; down-pre
      ; dhcp-option DOMAIN-ROUTE .
      

      Guarde y cierre el archivo cuando termine.

      Más adelante, en el paso 13 (sobre la instalación de la configuración del cliente) de este tutorial, aprenderá a determinar cómo funciona la resolución DNS para los clientes de Linux y qué sección no debería tener comentarios.

      A continuación, cree una secuencia de comandos que compile su configuración de base con el certificado, la clave y los archivos de cifrado pertinentes, y luego ubique la configuración generada en el directorio ~/client-configs/files. Abra un nuevo archivo llamado make_config.sh en el directorio ~/client-configs:

      • nano ~/client-configs/make_config.sh

      Dentro de este, agregue el siguiente contenido:

      ~/client-configs/make_config.sh

      #!/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-crypt>') 
          ${KEY_DIR}/ta.key 
          <(echo -e '</tls-crypt>') 
          > ${OUTPUT_DIR}/${1}.ovpn
      

      Guarde y cierre el archivo cuando termine.

      Antes de continuar, asegúrese de marcar este archivo como ejecutable escribiendo lo siguiente:

      • chmod 700 ~/client-configs/make_config.sh

      Esta secuencia de comandos realizará una copia del archivo base.conf que creó, recopilará los archivos de certificados y las claves que haya confeccionado para su cliente, extraerá el contenido de estos y los anexará a la copia del archivo de configuración de base, y exportará todo este contenido a un nuevo archivo de configuración de cliente. Esto significa que se evita la necesidad de administrar los archivos de configuración, certificado y clave del cliente por separado, y que toda la información necesaria se almacena en un solo lugar. El beneficio de este método es que, si alguna vez necesita agregar un cliente más adelante, puede simplemente ejecutar esta secuencia de comandos para crear de manera rápida el archivo de nueva configuración y asegurarse de que toda la información importante se almacene en una sola ubicación de acceso sencillo.

      Tenga en cuenta que siempre que agregue un nuevo cliente, deberá generar claves y certificados nuevos para poder ejecutar esta secuencia de comandos y crear el archivo de configuración de esta. Podrá practicar con este comando en el siguiente paso.

      Paso 12: Generar configuraciones de clientes

      Si siguió la guía, creó un certificado y una clave de cliente llamados client1.crt y client1.key, respectivamente, en el paso 6. Puede generar un archivo de configuración para estas credenciales si se dirige al directorio ~/client-configs y ejecuta la secuencia de comandos que realizó al final del paso anterior:

      • cd ~/client-configs
      • ./make_config.sh client1

      Con esto, se creará un archivo llamado client1.ovpn en su directorio ~/client-configs/files:

      • ls ~/client-configs/files

      Output

      client1.ovpn

      Debe transferir este archivo al dispositivo que planee usar como cliente. Por ejemplo, puede ser su computadora local o un dispositivo móvil.

      Si bien las aplicaciones exactas empleadas para lograr esta transferencia dependerán del sistema operativo de su dispositivo y sus preferencias personales, un método seguro y confiable consiste en usar el protocolo de transferencia de archivos SSH (SFTP ) o la copia segura (SCP) en el backend. Con esto, se trasladarán los archivos de autenticación de VPN de su cliente a través de una conexión cifrada.

      Aquí tiene un comando SFTP de ejemplo que puede ejecutar desde su computadora local (macOS o Linux). Esto copiará el archivo client1.ovpn que hemos creado en el último paso a su directorio de inicio:

      • sftp sammy@openvpn_server_ip:client-configs/files/client1.ovpn ~/

      A continuación, se muestran diferentes herramientas y tutoriales para transferir de manera segura los archivos del servidor de OpenVPN a una computadora local:

      Paso 13: Instalar la configuración de cliente

      En esta sección, se aborda la forma de instalar un perfil de VPN de cliente en Windows, macOS, Linux, iOS y Android. Ninguna de estas instrucciones para clientes depende de la otra. Por lo tanto, no dude en consultar directamente la que corresponda para su dispositivo.

      La conexión de OpenVPN tendrá el mismo nombre que usó para el archivo .ovpn. En lo que respecta a este tutorial, esto significa que la conexión se llama client1.ovpn y guarda correspondencia con el primer archivo de cliente que generó.

      Windows

      Instalación

      Descargue la aplicación de cliente de OpenVPN para Windows de la página de descargas de OpenVPN. Seleccione la versión adecuada del instalador para su versión de Windows.

      Nota: OpenVPN necesita privilegios administrativos para instalarse.

      Luego de instalar OpenVPN, copie el archivo .ovpn a esta ubicación:

      C:Program FilesOpenVPNconfig
      

      Cuando inicie OpenVPN, este detectará el perfil de manera automática y lo dejará disponible.

      Debe ejecutar OpenVPN como administrador cada vez que lo use, aun en cuentas administrativas. Para realizar esto sin tener que hacer clic con el botón secundario y seleccionar Ejecutar como administrador cada vez que use la VPN, debe fijarlo como ajuste predeterminado desde una cuenta administrativa. Esto también significa que los usuarios estándares deberán ingresar la contraseña del administrador para usar OpenVPN. Por otro lado, los usuarios estándares no pueden conectarse de manera adecuada al servidor a menos que la aplicación OpenVPN del cliente tenga derechos de administrador. Por lo tanto, se necesitan los privilegios elevados.

      Para configurar la aplicación OpenVPN de modo que se ejecute siempre con privilegios de administrador, haga clic con el botón secundario en su ícono de acceso directo y diríjase a Properties. Al final de la pestaña Compatibility, haga clic en el botón Change settings for all users. En la nueva ventana, seleccione Ejecutar este programa como administrador.

      Conexión

      Cada vez que inicie OpenVPN GUI, Windows le preguntará si quiere que el programa realice cambios en su computadora. Haga clic en . Iniciar la aplicación OpenVPN de cliente solo ubica el applet en la bandeja del sistema para que pueda conectar y desconectar la VPN según sea necesario; no establece la conexión de VPN.

      Una vez que se inicie OpenVPN, establezca una conexión ingresando al área de notificación y haga clic con el botón secundario en el ícono de OpenVPN. Con esto, se abrirá el menú contextual. Seleccione client1 en la parte superior del menú (su perfil client1.ovpn) y, luego, Connect.

      Una ventana de estado se abrirá y mostrará el resultado de registro mientras se establece la conexión, y se mostrará un mensaje una vez que el cliente esté conectado.

      Desconéctese de la VPN de la misma forma: ingrese al applet de la bandeja del sistema, haga clic con el botón secundario en el ícono de OpenVPN, seleccione el perfil del cliente y haga clic en Disconnect.

      macOS

      Instalación

      Tunnelblick es un cliente de OpenVPN gratuito y de código abierto para macOS. Puede descargar la última imagen de disco desde la página de descargas de Tunnelblick. Haga clic en el archivo .dmg descargado y siga las instrucciones para instalarlo.

      Al finalizar el proceso de instalación, Tunnelblick le preguntará si tiene algún archivo de configuración. Responda I have configuration files y deje que Tunnelblick finalice el proceso. Abra una ventana de Finder, busque client1.ovpn y haga doble clic en él. Tunnelblick instalará el perfil de cliente. Se necesitan privilegios de administrador.

      Conexión

      Inicie Tunnelblick haciendo doble clic en el ícono de Tunnelblick de la carpeta Aplicaciones. Una vez que se haya iniciado Tunnelblick, su ícono aparecerá en la barra de menú de la esquina superior derecha de la pantalla para controlar las conexiones. Haga clic en el ícono y, luego, en el elemento de menú Connect client1 para iniciar la conexión de VPN.

      Linux

      Instalación

      Si usa Linux, dispone de varias herramientas según su distribución. En su entorno de escritorio o gestor de ventanas, también pueden incluirse utilidades de conexión.

      Sin embargo, el método de conexión más universal consiste en simplemente usar el software OpenVPN.

      En Ubuntu o Debian, puede instalarlo como en el servidor escribiendo lo siguiente:

      • sudo apt update
      • sudo apt install openvpn

      En CentOS, puede habilitar los repositorios EPEL y, luego, instalarlo escribiendo lo siguiente:

      • sudo dnf install epel-release
      • sudo dnf install openvpn

      Configurar clientes que utilizan systemd-resolved

      Primero, determine si su sistema utiliza systemd-resolved para gestionar la resolución DNS comprobando el archivo /etc/resolv.conf:

      Output

      # This file is managed by man:systemd-resolved(8). Do not edit. . . . nameserver 127.0.0.53 options edns0

      Si su sistema está configurado para utilizar systemd-resolved para la resolución DNS, la dirección IP después de la opción nameserver será 127.0.0.53. También debería haber comentarios en el archivo, como en el resultado que se muestra, en los que se explique cómo systemd-resolved administra el archivo. Si tiene una dirección IP diferente de 127.0.0.53, lo más probable es que su sistema no esté utilizando systemd-resolved y podrá, en cambio, ir a la siguiente sección sobre cómo configurar clientes Linux que tienen la secuencia de comandos update-resolv-conf.

      Para admitir estos clientes, primero instale el paquete openvpn-systemd-resolved. Proporciona secuencias de comandos que forzarán a systemd-resolved a utilizar el servidor VPN para la resolución DNS.

      • sudo apt install openvpn-systemd-resolved

      Una vez que el paquete esté instalado, configure el cliente para usarlo y envíe todas las consultas DNS a la interfaz VPN. Abra el archivo VPN del cliente:

      Ahora, elimine el comentario de las siguientes líneas que añadió anteriormente:

      client1.ovpn

      script-security 2
      up /etc/openvpn/update-systemd-resolved
      down /etc/openvpn/update-systemd-resolved
      down-pre
      dhcp-option DOMAIN-ROUTE .
      

      Configurar clientes que utilizan update-resolv-conf

      Si su sistema no está utilizando systemd-resolved para administrar DNS, compruebe si su distribución incluye en su lugar la secuencia de comandos /etc/openvpn/update-resolv-conf:

      Output

      update-resolv-conf

      Si su cliente incluye el archivo update-resolv-conf, edite el archivo de configuración del cliente de OpenVPN que transfirió anteriormente:

      Elimine los comentarios de las tres líneas que añadió para ajustar la configuración de DNS:

      client1.ovpn

      script-security 2
      up /etc/openvpn/update-resolv-conf
      down /etc/openvpn/update-resolv-conf
      

      Si usa CentOS, cambie la directiva group de nogroup a nobody para que coincidan los grupos de distribución disponibles:

      client1.ovpn

      group nobody
      

      Guarde y cierre el archivo.

      ** Conectando **

      Ahora, podrá conectarse a la VPN simplemente apuntando el comando openvpn hacia el archivo de configuración de cliente:

      • sudo openvpn --config client1.ovpn

      Esto debería permitirle establecer conexión con la VPN.

      Nota: Si su cliente utiliza systemd-resolved para administrar DNS, compruebe que la configuración se aplique correctamente ejecutando el comando systemd-resolve --status de la siguiente manera:

      • systemd-resolve --status tun0

      Debería ver un resultado como el siguiente:

      Output

      Link 22 (tun0) . . . DNS Servers: 208.67.222.222 208.67.220.220 DNS Domain: ~.

      Si ve las direcciones IP de los servidores DNS que configuró en el servidor de OpenVPN, junto con la configuración ~. para el Dominio DNS en el resultado, habrá configurado correctamente su cliente para utilizar la resolución DNS del servidor de VPN. También puede verificar si envía consultas DNS a través de VPN utilizando un sitio como DNSleaktest.com.

      iOS

      Instalación

      Desde iTunes App Store, busque e instale OpenVPN Connect, la aplicación oficial cliente de OpenVPN de iOS. Para transferir su configuración de cliente iOS al dispositivo, conéctelo directamente a una computadora.

      El proceso para completar la transferencia con iTunes se describe aquí. Abra iTunes en la computadora y haga clic en iPhone > apps. Deslícese hacia la parte inferior, hasta la sección Compartir archivos, y haga clic en la app OpenVPN. La ventana en blanco de la derecha, Documentos OpenVPN, sirve para compartir archivos. Arrastre el archivo .ovpn a la ventana de documentos de OpenVPN. iTunes con el perfil de VPN listo para cargar en el iPhone

      Ahora, inicie la aplicación OpenVPN en el iPhone. Recibirá una notificación de que un nuevo perfil está listo para importarse. Toque el símbolo verde del signo de suma para importarlo.

      La app OpenVPN de iOS muestra un nuevo perfil listo para importarseConnecting

      De esta manera, OpenVPN estará listo para usarse con el nuevo perfil. Inicie la conexión deslizando el botón Connect a la posición On. Finalice la conexión deslizando el mismo botón a la posición Off.

      Nota: El conmutador de VPN de Settings no se puede usar para establecer conexión con la VPN. Si lo intenta, recibirá un aviso que le indicará establecer conexión únicamente con la aplicación OpenVPN.

      Aplicación OpenVPN de iOS conectada a la VPN

      Android

      Instalación

      Abra Google Play Store. Busque e instale Android OpenVPN Connect, la aplicación de cliente de OpenVPN oficial de Android.

      Puede transferir el perfil .ovpn conectando el dispositivo Android a su computadora a través de un puerto USB y copiando el archivo. De manera alternativa, si tiene un lector de tarjetas SD, puede quitar la tarjeta SD del dispositivo, copiar el perfil a ella y, luego, insertar la tarjeta de vuelta en el dispositivo Android.

      Inicie la aplicación OpenVPN y haga clic en el menú FILE para importar el perfil.

      Selección del menú de importación de perfiles de la aplicación OpenVPN de Android.

      Luego, diríjase a la ubicación del perfil guardado (en la captura de pantalla se usa /storage/emulated/0/openvpn​​​) y seleccione su archivo .ovpn. Haga clic en el botón IMPORT para terminar de importar este perfil.

      Selección de un perfil de VPN para su importación en la aplicación OpenVPN de Android.

      Conexión Cuando se añada el perfil, verá una pantalla como esta:

      Aplicación OpenVPN para Android con un nuevo perfil añadido

      Para conectarse, haga clic en el botón de activar para el perfil que desee usar. Verá datos en tiempo real de su conexión y tráfico enrutados a través de su servidor de OpenVPN: Aplicación OpenVPN para Android conectada a la VPN

      Para desconectarse, solo haga clic en el botón de alternancia en la parte superior izquierda de nuevo. Se le solicitará confirmar que desea desconectarse de su VPN.

      Paso 14: Probar la conexión de su VPN (opcional)

      Nota: Este método para probar su conexión de VPN solo funcionará si optó por enrutar todo el tráfico a través de la VPN en el paso 7 cuando editó el archivo server.conf para OpenVPN.

      Una vez que todo esté instalado, con una simple revisión confirmará que todo funciona de forma correcta. Sin tener una conexión VPN habilitada, abra un explorador e ingrese a DNSLeakTest.

      En el sitio se mostrará la dirección IP asignada por su proveedor de servicios de Internet y la forma en que aparece para el resto del mundo. Para corroborar sus ajustes de DNS a través del mismo sitio web, haga clic en Extended Test. Esto le indicará los servidores DNS que usa.

      Ahora, conecte el cliente de OpenVPN a la VPN de su Droplet y actualice el navegador. Con esto, debería aparecer una dirección IP totalmente distinta (la de su servidor de VPN). Así es como aparecerá ante el mundo. Una vez más, la opción Extended Test de DNSLeakTest revisará sus ajustes de DNS y confirmará que ahora use los solucionadores de DNS enviados por su VPN.

      Paso 15: Revocar certificados de clientes

      Es posible que, de tanto en tanto, deba rechazar un certificado de cliente para evitar más accesos al servidor de OpenVPN.

      Para ello, siga el ejemplo del tutorial de requisitos previos Cómo instalar y configurar una entidad de certificación en Ubuntu 20.04, en la sección Revocar un certificado.

      Cuando haya revocado un certificado para un cliente usando estas instrucciones, deberá copiar el archivo crl.pem generado a su servidor de OpenVPN en el directorio /etc/openvpn/server:

      • sudo cp /tmp/crl.pem /etc/openvpn/server/

      Luego, abra el archivo de configuración del servidor de OpenVPN:

      • sudo nano /etc/openvpn/server/server.conf

      Al final del archivo, agregue la opción crl-verify, que indicará al servidor OpenVPN que revise la lista de rechazo de certificados que creamos cada vez que se realice un intento de conexión:

      /etc/openvpn/server/server.conf

      crl-verify crl.pem
      

      Guarde y cierre el archivo.

      Por último, reinicie OpenVPN para implementar el rechazo de certificados:

      • sudo systemctl restart openvpn-server@server.service

      El cliente ya no debería poder establecer conexión de manera correcta con el servidor usando la credencial anterior.

      Para rechazar clientes adicionales, siga este proceso:

      1. Rechace el certificado con el comando ./easyrsa revoke client-name.
      2. Genere una nueva CRL.
      3. Transfiera el archivo crl.pem nuevo a su servidor de OpenVPN y cópielo al directorio /etc/openvpn/server/ para sobrescribir la lista anterior.
      4. Reinicie el servicio de OpenVPN.

      Puede usar este proceso para rechazar cualquier certificado emitido anteriormente para su servidor.

      Conclusión

      Ahora debería disponer de una red privada completamente funcional en ejecución en su servidor de OpenVPN. Puede navegar en la Web y descargar contenido sin preocuparse por la posibilidad de que individuos malintencionados rastreen su actividad.

      Hay varios pasos que podría seguir para personalizar su instalación de OpenVPN aún más, como configurar su cliente para que se conecte a la VPN de manera automática o definir reglas específicas y políticas de acceso para los clientes. Para esto y para otras personalizaciones de OpenVPN, debería consultar la documentación oficial de OpenVPN.

      Para configurar más clientes, solo debe seguir los pasos 6 y 11 a 13 para cada dispositivo adicional. Para rechazar el acceso de los clientes, siga el paso 15.



      Source link