Saya memiliki pertanyaan yang tepat beberapa bulan yang lalu, tetapi selain itu, saya ingin memiliki koneksi IPv6 jika memungkinkan. Anda mungkin tertarik dengan pertanyaan saya di Serverfault:
Saya hanya punya satu NIC ("antarmuka jaringan") di server saya untuk digunakan. Dalam pengaturan saya, NetworkManager tidak cukup karena saya perlu menjalankan skrip khusus untuk mendukung IPv6. Untuk kesederhanaan, saya akan menggunakan NetworkManager di sini dan menghilangkan dukungan IPv6.
Pertama, buat keputusan tentang metode otentikasi. Saya akan menggunakan metode sertifikat yang lebih aman yang berfungsi seperti SSL: selama jabat tangan sebuah rahasia umum dipilih yang akan digunakan untuk sesi tersebut. Metode lain adalah kunci bersama; nama pengguna dan kata sandi.
Server
1. Bersiap
Pertama, instal server openvpn. Ini semudah sudo apt-get install openvpn
. Bagian yang sulit adalah mengonfigurasinya. Konfigurasi hadir di /etc/openvpn
.
2. Konfigurasikan otentikasi
Server membutuhkan sertifikat untuk mengidentifikasi dirinya dan kliennya. Sertifikat ini diambil dari CA (Common Authority). Pembuatan sertifikat dan kunci pribadi terkait dapat dilakukan pada mesin apa pun, tidak harus dilakukan di server. Jika Anda benar-benar paranoid, Anda harus melakukannya pada mesin yang tidak terhubung ke jaringan, dan menggunakan memory stick untuk mentransfer sertifikat.
Buat CA dan sertifikat untuk server
Langkah ini harus dilakukan sekali kecuali kunci pribadi CA Anda terganggu. Dalam hal itu, sertifikat yang valid dapat dibuat yang akan diterima oleh server, yang mengakibatkan pelanggaran keamanan.
The dokumentasi resmi menyarankan untuk melakukan administrasi dalam /etc/openvpn
. Saya bukan penggemar menjalankan segala sesuatu sebagai root, jadi saya akan meletakkannya di direktori yang berbeda.
Buat direktori administrasi dan salin file di dalamnya dengan menjalankan:
mkdir ~/openvpn-admin
cd ~/openvpn-admin
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/ ./easy-rsa
cd easy-rsa
- Edit default
vars
sesuai kebutuhan, misalnya pengaturan KEY_SIZE=2048
karena Anda paranoid.
Muat variabel dan buat direktori kunci dengan menjalankan:
. vars
Jika Anda mendapatkan kesalahan itu No ... openssl.cnf file could be found
Further invocations will fail
, jalankan ln -s openssl-1.0.0.cnf openssl.cnf
, lalu . vars
lagi.
Jika ini adalah pertama kalinya Anda menggunakan CA ini, siapkan lingkungan tombol. Jangan tidak menjalankan perintah ini jika Anda ingin mempertahankan CA. Anda dibuat sebelumnya Dengan melakukan hal itu Anda harus menggunakan yang baru ca.crt
.
./clean-all
- Buat CA dengan mengeksekusi
./build-ca
. Anda dapat mengisi detail apa pun yang Anda inginkan, tetapi perhatikan bahwa informasi ini akan terlihat dalam file log ketika klien terhubung ke server. Ini akan membuat file ca.key
dan ca.crt
dalam subfolder keys
. Jaga ca.key
kerahasiaan file dalam segala keadaan . Kegagalan untuk melakukannya akan memungkinkan siapa saja dengan kunci untuk terhubung ke server Anda.
- Jika Anda memiliki sertifikat sebelumnya yang hilang atau kedaluwarsa, Anda harus mencabut yang lama dulu
./revoke-full server
. Kalau tidak, Anda mendapatkan kesalahan database.
Buat sertifikat untuk server dengan menjalankan:
./build-key-server server
Ketika ditanya kata sandi, biarkan kosong kecuali Anda bersedia memasukkan kata sandi setiap kali server mulai (tidak disarankan). Konfirmasikan untuk menandatangani sertifikat dan lakukan. Dua file baru akan muncul di direktori keys
: server.key
dan server.crt
.
DH dan gunakan persiapan untuk tls-auth
Hasilkan parameter Diffie-Hellman menggunakan:
./build-dh
Per tips pengerasan , gunakan tls-auth
. Untuk itu, buat kunci rahasia bersama menggunakan:
openvpn --genkey --secret ta.key
File yang dihasilkan ( ta.key
) juga harus didistribusikan ke klien, tetapi Anda tidak boleh mempublikasikannya ke publik.
Buat sertifikat untuk klien
Untuk setiap klien, langkah-langkah ini harus diulangi:
Masukkan direktori tempat Anda membuat CA dan sertifikat server:
cd ~/openvpn-admin/easy-rsa
Jika Anda telah melewatkan langkah pembuatan CA karena Anda telah melakukannya, Anda perlu memuat variabel terlebih dahulu:
. vars
- Jika Anda membuat sertifikat baru karena yang lama hilang atau kedaluwarsa , Anda harus mencabut yang lama terlebih dahulu
./revoke-full you
. Kalau tidak, Anda mendapatkan kesalahan database.
Buat sertifikat klien you.key
dan sertifikatnya yang sesuai you.crt
:
./build-key you
The CommonName
harus unik. Biarkan kata sandi kosong jika Anda menggunakan KDE karena belum didukung pada 10.10. Seperti halnya pembuatan sertifikat server, konfirmasikan penandatanganan sertifikat dan lakukan perubahan.
3. Atur layanan OpenVPN
Secara default, OpenVPN berjalan sebagai root ketika menerima koneksi. Bukan ide yang baik jika layanan ini dapat diakses dari Internet jahat.
Buat pengguna khusus untuk OpenVPN, katakan openvpn
:
sudo useradd openvpn
Salin file server.key
, server.crt
, ca.crt
dan dh1024.pem
(atau dh2048.pem
jika Anda telah mengubah ukuran kunci) dari direktori kunci dalam /etc/openvpn
. Izin 400 (hanya-baca untuk pemilik) baik-baik saja.
sudo cp ~/openvpn-admin/easy-rsa/keys/{server.key,server.crt,ca.crt,dh*.pem} /etc/openvpn
sudo chmod 400 /etc/openvpn/{server.key,server.crt,ca.crt}
Salin file ta.key
juga:
sudo cp ~/openvpn-admin/easy-rsa/ta.key /etc/openvpn
sudo chmod 400 /etc/openvpn/ta.key
Buat file /etc/openvpn/server.conf
dan masukkan baris berikutnya ke dalamnya:
proto udp
dev tap
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1"
ifconfig-pool-persist ipp.txt
keepalive 10 120
tls-auth ta.key 0
# Compress data to save bandwidth
comp-lzo
user openvpn
group openvpn
persist-key
persist-tun
# Logs are useful for debugging
log-append openvpn-log
verb 3
mute 10
Tetapkan izin yang sesuai untuk itu, tidak perlu dirahasiakan, tapi saya lebih suka tidak membocorkan detail konfigurasi jadi:
sudo chmod 640 /etc/openvpn/server.conf
4. Menyelesaikan server
Jika Anda telah membuat sertifikat di server, itu ide yang baik untuk mengenkripsi atau memindahkannya dari server. Bagaimanapun, jangan kehilangan ca.key
dan server.key
. Dalam kasus pertama, orang lain akan dapat terhubung ke server Anda. Dalam yang terakhir, MITM dimungkinkan.
Klien
Selain alamat IP server, administrator server harus menyerahkan file-file berikut:
ca.crt
: untuk memverifikasi sertifikat
server.crt
: untuk memverifikasi server dan berkomunikasi dengannya
ta.key
: untuk pengerasan keamanan
you.crt
: untuk mengidentifikasi diri Anda dengan server
you.key
: seperti kata sandi Anda, izin file harus 400 (hanya baca untuk pemilik)
1. Instalasi
Instal OpenVPN dan plugin NetworkManager (cocok untuk KDE dan Gnome):
sudo apt-get install openvpn network-manager-openvpn
network-manager-openvpn
ada di repositori alam semesta.
2. Konfigurasi
Di panel kontrol, gunakan detail berikut:
- Gateway: alamat IP server
- Ketik: "Sertifikat (TLS)" (Gnome) atau "Sertifikat X.509" (KDE)
- Sertifikat CA: jalur ke
ca.crt
- Sertifikat Pengguna: jalur ke
you.crt
- Kunci Pribadi: path ke
you.key
Di Tingkat Lanjut :
- Gateway port: Otomatis (1194) (tidak perlu diubah)
- Gunakan kompresi data LZO: diaktifkan
- Gunakan koneksi TCP: dinonaktifkan
- Gunakan perangkat TAP: diaktifkan
- Cipher: default
- Otentikasi HMAC: default
- Gunakan otentikasi TLS: diaktifkan.
Menentukan path File Kunci ke ta.key
dan mengatur "Arah Kunci" untuk 1
.
- ( todo - memeriksanya ) server mendorong gateway default sehingga semua lalu lintas melewati koneksi VPN. Terakhir kali saya memeriksa, plugin network-manager-openvpn tidak melakukannya.
Jika Anda tidak dapat mengaktifkan NetworkManager atau tidak ingin menggunakannya, masukkan file ( ca.crt
, ...) /etc/openvpn
dan buat file /etc/openvpn/client.conf
file:
client
dev tap
proto udp
# replace 1.2.3.4 by your server IP
remote 1.2.3.4 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert you.crt
key you.key
ns-cert-type server
tls-auth ta.key 1
comp-lzo
user nobody
group nogroup
verb 3
mute 20
Jika Anda tidak ingin mengaktifkan VPN ini saat boot, edit /etc/default/openvpn
dan batalkan komentar pada baris berikutnya dengan menghapus #
:
#AUTOSTART="none"
Untuk memulai koneksi ini, jalankan:
sudo /etc/init.d/openvpn start client
client
harus diganti namanya jika file konfigurasi Anda tidak bernama client.conf
. Contoh: jika Anda memberi nama file konfigurasi safe.conf
Anda, Anda harus menjalankannya sudo /etc/init.d/openvpn start safe
.
Untuk menghentikan OpenVPN, Anda harus menjalankan:
sudo /etc/init.d/openvpn stop