Cara Menyediakan Pelayan OpenVPN pada Ubuntu 20.04

Panduan muktamad untuk menyediakan Pelayan OpenVPN yang selamat pada Ubuntu 20.04

Rangkaian Peribadi Maya (VPN) membolehkan anda menyambung secara selamat dan peribadi ke rangkaian peribadi jauh, contohnya, rangkaian pejabat anda atau Internet dengan cara seolah-olah anda disambungkan terus ke rangkaian peribadi.

VPN berfungsi dalam seni bina pelayan-klien. Pelayan VPN digunakan pada mesin dan boleh diakses secara umum melalui Internet. Pelayan VPN boleh dikonfigurasikan untuk membenarkan sambungan ke LAN peribadi, seperti rangkaian pejabat, atau membenarkan sambungan ke Internet. Pengguna menyambung ke pelayan VPN menggunakan klien VPN pada mesin tempatannya. Komunikasi antara pelayan VPN dan pelanggan berlaku menggunakan protokol terowong yang selamat. Kepada Internet, nampaknya destinasi trafik adalah pelayan VPN; walau bagaimanapun, trafik dihantar kepada pelanggan melalui pelayan.

VPN mempunyai banyak kegunaan dalam kehidupan seharian, seperti menyambung dengan selamat ke rangkaian Wifi awam, yang sering dikompromi atau memintas sekatan geo pada tapak web tertentu dengan menyambung ke VPN yang berpangkalan di negara yang dibenarkan oleh tapak web tersebut.

OpenVPN ialah pelaksanaan VPN yang digunakan secara meluas yang membenarkan pelbagai konfigurasi dan pilihan. Ia menggunakan protokol Secure Sockets Layer (SSL) untuk penyulitan data dan kekunci prakongsi, nama pengguna/kata laluan atau sijil untuk pengesahan klien VPN. Dalam artikel ini, kita akan melihat cara menyediakan pelayan VPN dan klien VPN pada Ubuntu 20.04.

Pemasangan

OpenVPN tersedia dalam repositori Ubuntu rasmi dalam pakej openvpn. Pakej ini memasang kedua-dua pelayan OpenVPN dan juga pelanggan.

sudo apt pasang openvpn

Seperti yang dinyatakan sebelum ini, OpenVPN menggunakan sijil SSL untuk menyulitkan data antara pelayan dan pelanggan. Kami perlu menyediakan pihak berkuasa sijil (CA) kami sendiri untuk mengeluarkan sijil untuk VPN. Ambil perhatian bahawa ini harus disediakan pada mesin yang berbeza daripada mesin di mana OpenVPN disediakan; sebabnya ialah jika ia berada pada pelayan yang sama dan jika ia terjejas, penyerang boleh mengakses kunci persendirian dan dengan itu menyerang sambungan VPN.

Kami akan menggunakan alat yang dipanggil 'Easy-RSA' untuk menyediakan pihak berkuasa sijil. Untuk memasangnya, jalankan yang berikut pada mesin CA, mesin pelayan OpenVPN dan mesin klien, kerana konfigurasi diperlukan pada ketiga-tiga ini untuk menyediakan CA.

sudo apt install easy-rsa

Kami kini akan mengkonfigurasi pihak berkuasa sijil terlebih dahulu pada mesin CA dan melaksanakan beberapa langkah konfigurasi yang diperlukan untuk perkara yang sama pada mesin pelayan VPN Terbuka.

Persediaan Kuasa Sijil

Persediaan awal pada mesin CA

Sekarang, pakej ini memasang arahan yang dipanggil buat-cadir yang digunakan untuk mencipta folder untuk konfigurasi pihak berkuasa sijil. Mari buat folder menggunakan ini dan masukkan folder.

make-cadir cert_authority && cd cert_authority

Buka fail yang dipanggil vars dibuat dalam direktori ini. Fail ini mengandungi beberapa pembolehubah konfigurasi yang perlu kami ubah suai. Nilai yang perlu diubah suai adalah pada baris 91-96, selepas ulasan tentang Bidang Organisasi yang menerangkan bidang-bidang ini. Nyahkomen baris dan isikan nilai yang sesuai sebagai ganti nilai sampel.

Simpan dan keluar dari fail. Jika anda menggunakan editor vim, tekan Esc, taip :wq dan tekan Masuk untuk menyimpan dan keluar.

Seterusnya, kami menjalankan easyrsa program dalam direktori untuk menyediakan infrastruktur kunci awam (PKI), yang akan digunakan untuk menjana kunci awam dan sijil.

./easyrsa init-pki

Langkah seterusnya akan menjana kunci dan sijil CA. Apabila arahan meminta kata laluan, masukkan kata laluan untuk kunci CA. Juga, masukkan nama biasa apabila digesa. Jika anda membiarkan ini kosong, nama lalai nama Easy-RSA CA akan digunakan.

./easyrsa build-ca

Seperti yang dapat kita lihat dari output sijil dan kunci telah dihasilkan. Kunci ini akan digunakan untuk menandatangani sijil klien dan pelayan, oleh itu ia tidak boleh disentuh/diubah suai.

Sekarang, kami mempunyai persediaan PKI. Langkah seterusnya ialah mencipta kunci pelayan dan sijil pada mesin yang akan kami gunakan sebagai pelayan OpenVPN. Sijil ini kemudiannya akan ditandatangani oleh mesin CA.

Menjana Kunci Pelayan dan Sijil pada mesin Pelayan

Kami telah memasang Easy RSA pada mesin pelayan. Sekarang lakukan tiga langkah pada mesin pelayan, yang sebelum ini kami lakukan pada mesin CA, iaitu. mencipta direktori CA menggunakan buat-cadir dan masuk ke dalamnya, mengubah suai pembolehubah dalam vars fail dan menjana PKI menggunakan ./easyrsa init-pki perintah.

Seterusnya, kita perlu menjalankan arahan untuk menjana permintaan dan kunci sijil pelayan.

./easyrsa gen-req pelayan nopass

Ambil perhatian bahawa kami lulus pilihan nopass supaya arahan itu tidak akan meminta kami memasukkan kata laluan untuk kunci pelayan. Ia masih akan meminta nama biasa untuk pelayan, yang anda boleh masukkan apa sahaja, atau biarkan ia kosong untuk nama lalai (pelayan) untuk digunakan.

Pindahkan fail kunci yang dijana di dalam /etc/openvpn direktori.

sudo mv pki/private/server.key /etc/openvpn

Hantar permintaan sijil ke mesin CA. Kami akan menggunakan arahan scp untuk tujuan ini.

scp pki/reqs/server.req user@CA_MACHINE_HOSTNAME:/directory

Dalam tangkapan skrin di atas, hos 45.79.125.41 ialah mesin CA. Kami telah menyalin sijil dalam direktori /root.

Kini, sijil pelayan telah disalin ke mesin CA. Langkah seterusnya ialah kembali ke mesin CA dan menandatangani sijil ini.

Menandatangani sijil pelayan dalam CA

Mula-mula, mari sahkan sama ada fail permintaan sijil daripada pelayan telah disalin pada mesin CA. Pergi ke direktori tempat kami menyalin fail (/root dalam contoh saya) dan jalankan ls.

:~# cd /root && ls cert_authority server.req

Seperti yang kita lihat, fail server.req hadir. Seterusnya, pergi ke direktori CA dan import permintaan ini.

cd cert_authority ./easyrsa import-req /root/server.req pelayan

Untuk menandatangani permintaan ini, jalankan arahan berikut.

./easyrsa sign-req pelayan pelayan

Di sini hujah pertama ialah jenis permintaan, iaitu, pelayan, dan hujah kedua ialah nama biasa mesin pelayan, yang mana kami sebelum ini menggunakan nilai lalai, iaitu, pelayan.

Masukkan frasa ya, dan kata laluan untuk kunci CA apabila digesa.

Kini kita boleh mengalih keluar fail permintaan sijil dan menyalin sijil yang dijana untuk pelayan, serta sijil awam CA kembali ke mesin pelayan.

rm /root/server.req scp pki/issued/server.crt [email protected]:/root scp pki/ca.crt [email protected]:/root

Seterusnya, kami perlu melakukan beberapa langkah lagi untuk memastikan sambungan VPN yang selamat.

Penjanaan Parameter DH

Pertukaran kunci DH (Diffie-Hellman) ialah algoritma untuk memastikan pertukaran kunci kripto selamat melalui saluran yang tidak selamat. Mula-mula, mari alihkan sijil yang diterima dan sijil awam CA ke /etc/openvpn.

mv /root/ca.crt /root/server.crt /etc/openvpn

Pergi ke folder CA pada mesin pelayan dan jalankan arahan berikut untuk menjana parameter DH. Ia mungkin mengambil masa yang lama untuk dijana.

./easyrsa gen-dh

Sekarang, alihkan fail yang dijana ke /etc/openvpn.

mv /root/cert_authority/pki/dh.pem /etc/openvpn

Menjana kunci TA

OpenVPN menggunakan satu lagi langkah keselamatan tambahan menggunakan kunci pengesahan TLS. Untuk menjana kunci pengesahan TLS, jalankan:

openvpn --genkey --secret tls_auth.key

Dan alihkan kunci ke /etc/openvpn.

mv tls_auth.key /etc/openvpn

Konfigurasi kunci pelayan dan persediaan kuasa sijil kini selesai. Mari kita beralih ke konfigurasi sebenar pelayan VPN sekarang.

Konfigurasi Pelayan OpenVPN

Fail konfigurasi untuk pelayan OpenVPN tidak dibuat secara automatik, namun kami boleh menggunakan fail konfigurasi templat dari openvpn pakej.

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

Buka fail menggunakan vim atau mana-mana editor pilihan anda.

cd /etc/openvpn vim server.conf

Kami perlu memasukkan nama biasa kunci dan sijil yang kami hasilkan sebelum ini. Pergi ke talian no. 78. Oleh kerana kami menggunakan semua nama lalai, kami mengekalkannya tidak berubah. Kemudian semak nama untuk fail parameter DH pada baris 85. Kami telah menggunakan nama dh.pem, jadi mari tukar.

Seterusnya, mari kita ubah suai keistimewaan untuk pelayan OpenVPN. Pergi ke baris 274 dan 275 dan keluarkan bahagian hadapan ; untuk membatalkan ulasannya.

Begitu juga pergi ke baris 192 dan keluarkan koma bertitik. Arahan ini membolehkan trafik semua pelanggan melalui VPN.

Simpan dan keluar dari fail.

Tukar pemilikan folder /etc/openvpn kepada root.

sudo chown -R root:root /etc/openvpn

Rangkaian dan persediaan Firewall

Kami perlu membenarkan pemajuan IP pada pelayan untuk membolehkan paket dimajukan dari dan ke klien VPN. Nyahkomen baris 28 dihidupkan /etc/sysctl.conf:

Simpan dan keluar dari fail.

Mula semula systemctl agar perubahan ini berlaku.

sudo sysctl -p

Kami perlu menyediakan Terjemahan Alamat Rangkaian (NAT) pada pelayan menggunakan tembok api UFW supaya membolehkan Klien VPN mengakses Internet menggunakan Alamat IP pelayan VPN. Mula-mula, mari kita dayakan pemajuan paket dalam konfigurasi tembok api. Buka /etc/default/ufw dan tukar pembolehubah pada baris 19 kepada TERIMA.

Simpan dan keluar dari fail.

Sekarang tambahkan peraturan berikut pada fail /etc/ufw/before.rules sebelum itu penapis baris dalam fail.

*nat :POSTROUTING TERIMA [0:0] -A POSTROUTING -s 10.8.0.0/8 -o -j KOMIT MENYAMAR

Masukkan antara muka rangkaian anda sebagai ganti . Anda boleh melihat antara muka rangkaian anda dengan arahan ifconfig.

Benarkan trafik untuk perkhidmatan OpenVPN pada Firewall dan benarkan port 1194.

sudo ufw benarkan openvpn && sudo ufw benarkan 1194

Muat semula perkhidmatan tembok api.

sudo ufw muat semula

Kami kini boleh memulakan semula daemon pelayan VPN Terbuka dengan menjalankan:

perkhidmatan sudo openvpn dimulakan semula

Dayakan ia bermula pada masa but dengan menjalankan:

sudo systemctl membolehkan openvpn

Pelayan OpenVPN kini telah dikonfigurasikan dan telah bermula. Sekarang mari kita teruskan ke permintaan sijil pelanggan dan penjanaan kunci serta konfigurasi lain.

Konfigurasi Pelanggan OpenVPN

Kami perlu menjana kunci dan permintaan sijil untuk pelanggan. Prosedur untuk melakukan ini adalah sama seperti untuk pelayan.

Walaupun permintaan kunci klien dan sijil boleh dibuat pada mesin klien dan kemudian dipindahkan ke mesin CA, adalah disyorkan untuk menciptanya pada mesin pelayan. Kelebihan melakukan ini pada pelayan ialah anda boleh membuat skrip untuk melaksanakan semua langkah yang diperlukan pada pelayan yang memudahkan pelanggan baharu menyertai VPN.

Pergi ke folder CA pada pelayan dan jalankan yang berikut:

cd ~/cert_authority ./easyrsa gen-req pelanggan nopass

Dengan cara yang sama seperti yang dilakukan sebelum ini, masukkan nama biasa apabila digesa, atau biarkan ia kosong untuk menggunakan nama biasa lalai, iaitu, pelanggan.

Sekarang mari kita salin permintaan sijil pelanggan yang dijana ke mesin CA.

scp pki/reqs/client.req [email protected]:/root

Mari import permintaan ini dalam mesin CA:

./easyrsa import-req /root/client.req klien

Dan mari kita tandatanganinya sekarang:

./easyrsa sign-req pelanggan pelanggan

Masukya apabila digesa untuk meneruskan. Masukkan kata laluan untuk kunci CA apabila ditanya.

Kami kini boleh mengalih keluar fail yang diminta untuk pelanggan dan menyalin semula permintaan itu ke mesin pelayan VPN.

rm /root/client.req scp pki/issued/client.crt [email protected]:/root

Mari buat folder bernama pelanggan untuk menyimpan semua fail yang berkaitan dengan klien pada pelayan VPN. Kami akan memindahkan kunci klien dan sijil ke folder ini.

mkdir ~/client sudo mv ~/client.crt ~/cert_authority/pki/private/client.key ~/client

Sekarang, mari buat fail konfigurasi daripada templat yang tersedia, sama seperti cara kami mencipta fail konfigurasi pelayan.

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

Buka fail klien.conf. Pada baris 42, masukkan nama hos atau Alamat IP mesin pelayan anda sebagai ganti pelayan saya-1.

Nyahtanda baris 61 dan 62 dengan mengalih keluar koma bertitik utama, untuk menurunkan taraf keistimewaan bagi fail.

Seterusnya, ulas baris 88-90 dan baris 108. Sebabnya ialah kami ingin menambah kandungan fail yang disebutkan secara manual dan bukannya menggunakan lokasi fail. Tujuan melakukan ini ialah fail konfigurasi klien kemudiannya akan dipindahkan kepada klien, di mana kami sebenarnya tidak akan mempunyai kunci klien dan fail sijil; oleh itu kami menyalin kandungan yang terdapat dalam fail konfigurasi itu sendiri.

Tambahkan yang berikut pada fail konfigurasi klien. Masukkan kandungan fail bagi fail masing-masing di dalam teg yang diberikan.

 # Tampal kandungan fail ca.crt di sini # Tampalkan kandungan fail client.crt di sini # Tampal kandungan fail client.key di sini arah kekunci 1 # Tampal kandungan fail tls_auth.key di sini 

Simpan dan keluar dari fail. Namakan semula fail ini daripada klien.conf kepada pelanggan.ovpn, kerana yang terakhir ialah sambungan yang diperlukan untuk fail konfigurasi yang boleh diimport sebagai konfigurasi rangkaian.

Sekarang, pindahkan fail pelanggan.ovpn kepada pelanggan, iaitu, mesin tempatan.

Lari scp pada mesin klien anda untuk memindahkan fail dari mesin pelayan ke mesin tempatan anda.

scp user@server_ip:/path_to_file local_destination_path

Akhir sekali, kita perlu menggunakan fail konfigurasi ini untuk menyambung ke pelayan VPN. Ini boleh dilakukan melalui baris arahan dan juga GUI.

Untuk memulakan klien VPN dari baris arahan, jalankan:

sudo openvpn --config client.ovpn

Dan itu adalah satu-satunya arahan yang perlu anda jalankan untuk memulakan Klien VPN.

Untuk memulakan klien VPN melalui GUI, lakukan langkah berikut.

Pergi ke Tetapan » Rangkaian pada mesin pelanggan anda.

Klik pada + butang dalam bahagian VPN dan pilih ‘Import daripada fail…’ daripada pilihan.

Klik pada 'Tambah' untuk mula menggunakan VPN.

Ambil perhatian bahawa di bawah 'Gateway', ia adalah Alamat IP pelayan.

Akhir sekali, togol butang 'VPN pelanggan' untuk mendayakan VPN pada mesin.

Ia mungkin mengambil masa beberapa saat untuk mewujudkan sambungan VPN. Logo kemajuan baharu untuk VPN akan muncul di penjuru kiri sebelah atas skrin anda semasa ia sedang disediakan dan ia akan bertukar kepada logo VPN sebaik sahaja ia disediakan.

Untuk mengesahkan sama ada VPN berfungsi dengan betul, jalankan yang berikut:

curl //ipinfo.io/ip

Ia harus mengembalikan alamat IP mesin pelayan anda. Atau anda juga boleh menyemak alamat IP anda dengan hanya mencari 'IP Saya' di Google. Ia sepatutnya menunjukkan alamat IP pelayan VPN anda jika persediaan VPN kami berfungsi dengan betul.

Kesimpulan

Dalam artikel ini, kami melihat cara mengkonfigurasi pelayan OpenVPN, Pihak Berkuasa Sijil dan Klien OpenVPN. Untuk menambah lebih ramai pelanggan pada VPN, kami kini perlu mengikut prosedur untuk menjana dan menandatangani sijil untuk klien dan menggunakan fail konfigurasi yang sama yang dibuat di sini, dengan hanya kunci klien dan nilai sijil diubah.

Dalam kes sambungan internet yang lebih perlahan, ada kemungkinan jika UDP digunakan untuk komunikasi, terdapat kehilangan paket yang besar. Pengguna boleh bertukar kepada TCP dengan menyahkomen baris proto tcp dan mengulas pada talian proto udp dalam fail konfigurasi pelayan.

Juga, sekiranya terdapat ralat lain, anda boleh menetapkan tahap pengelogan dengan kata kerja arahan dalam kedua-dua fail konfigurasi pelayan dan klien. Anda boleh memasukkan nilai antara 0 dan 9. Lebih tinggi nilai arahan ini, lebih banyak perkataan akan menjadi log.