Instal Server OpenVPN di Debian 11/Debian 10
Jalankan pembaruan sistem
apt update
Instal OpenVPN di Debian 11/Debian 10
Paket OpenVPN tersedia pada repo default Debian 11/Debian 10.
apt install openvpn -y
Buat Infrastruktur Kunci Publik OpenVPN
Inisialisasi OpenVPN PKI. PKI terdiri dari:
- kunci publik dan kunci pribadi untuk server dan setiap klien
- sertifikat dan kunci Certificate Authority (CA) master yang digunakan untuk menandatangani setiap sertifikat server dan klien.
Jadi, salin direktori konfigurasi easy-rsa ke lokasi yang berbeda untuk memastikan bahwa pemutakhiran paket OpenVPN di masa mendatang tidak akan menimpa modifikasi Anda.
cp -r /usr/share/easy-rsa /etc/
Selanjutnya, inisialisasi PKI.
cd /etc/easy-rsa/
./easyrsa init-pki
Contoh keluaran perintah;
init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /etc/easy-rsa/pki
Buat Sertifikat dan Kunci Otoritas Sertifikat (CA)
Selanjutnya, buat sertifikat CA dan kunci untuk menandatangani server OpenVPN dan sertifikat klien.
cd /etc/easy-rsa/ ./easyrsa build-ca
Ini akan meminta Anda memasukkan frasa sandi kunci CA dan nama umum server.
Using SSL: openssl OpenSSL 1.1.1d 10 Sep 2019 Enter New CA Key Passphrase: Re-Enter New CA Key Passphrase: Generating RSA private key, 2048 bit long modulus (2 primes) .............................................+++++ ...................................+++++ e is 65537 (0x010001) Can't load /etc/easy-rsa/pki/.rnd into RNG 139670192284800:error:2406F079:random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:98:Filename=/etc/easy-rsa/pki/.rnd You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Common Name (eg: your user, host, or server name) [Easy-RSA CA]:Kifarunix-demo CA CA creation complete and you may now import and sign cert requests. Your new CA certificate file for publishing is at: /etc/easy-rsa/pki/ca.crt
Sertifikat CA dibuat dan disimpan di /etc/easy-rsa/pki/ca.crt
.
Hasilkan Parameter Diffie Hellman
Hasilkan kunci Diffie-Hellman yang digunakan untuk pertukaran kunci selama jabat tangan TLS antara server OpenVPN dan klien penghubung. Perintah ini telah dijalankan dalam direktori Easy-RSA;
./easyrsa gen-dh
Parameter DH ukuran 2048 akan dibuat di /etc/easy-rsa/pki/dh.pem
.
Buat Sertifikat dan Kunci Server OpenVPN
Untuk menghasilkan sertifikat dan kunci pribadi untuk server OpenVPN, jalankan perintah di bawah ini;
cd /etc/easy-rsa
./easyrsa build-server-full server nopass
Masukkan frasa sandi kunci CA buat di atas untuk menghasilkan sertifikat dan kunci.
nopass
menonaktifkan penggunaan frasa sandi.
Contoh keluaran;
Using SSL: openssl OpenSSL 1.1.1d 10 Sep 2019 Generating a RSA private key ........................................+++++ .......................................+++++ writing new private key to '/etc/easy-rsa/pki/private/server.key.MMFHTTtpKD' ----- Using configuration from /etc/easy-rsa/pki/safessl-easyrsa.cnf Enter pass phrase for /etc/easy-rsa/pki/private/ca.key: Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows commonName :ASN.1 12:'server' Certificate is to be certified until Oct 10 18:23:08 2024 GMT (1080 days) Write out database with 1 new entries Data Base Updated
Buat kunci Kode Otentikasi Pesan Berbasis Hash (HMAC)
Kunci otentikasi pra-berbagi TLS/SSL digunakan sebagai tanda tangan HMAC tambahan pada semua paket handshake SSL/TLS untuk menghindari serangan DoS dan banjir port UDP. Ini dapat dibuat dengan menggunakan perintah;
openvpn --genkey secret /etc/easy-rsa/pki/ta.key
Buat Sertifikat Pencabutan OpenVPN
Untuk membatalkan sertifikat yang ditandatangani sebelumnya, Anda perlu membuat sertifikat pencabutan.
Jalankan skrip di dalam direktori Easy-RSA;
./easyrsa gen-crl
Sertifikat pencabutan dibuat dan disimpan di /etc/easy-rsa/pki/crl.pem
.
Contoh keluaran;
Using SSL: openssl OpenSSL 1.1.1d 10 Sep 2019 Using configuration from /etc/easy-rsa/pki/safessl-easyrsa.cnf Enter pass phrase for /etc/easy-rsa/pki/private/ca.key: An updated CRL has been created. CRL file: /etc/easy-rsa/pki/crl.pem
Salin Sertifikat dan Kunci Server ke Direktori Konfigurasi Server
Salin semua sertifikat/kunci server yang dihasilkan ke direktori konfigurasi server OpenVPN.
cp -rp /etc/easy-rsa/pki/{ca.crt,dh.pem,ta.key,crl.pem,issued,private} /etc/openvpn/server/
Buat Sertifikat dan Kunci Klien OpenVPN
Sertifikat klien OpenVPN dan kunci pribadi dapat dibuat sebagai berikut
cd /etc/easy-rsa
./easyrsa build-client-full koromicha nopass
- di mana
koromicha
adalah nama klien yang sertifikat dan kuncinya dibuat. - Selalu gunakan nama umum yang unik untuk setiap klien yang sertifikat dan kuncinya Anda buat.
Contoh keluaran perintah;
Using SSL: openssl OpenSSL 1.1.1d 10 Sep 2019 Generating a RSA private key ...........................+++++ ...........................................................................................................................+++++ writing new private key to '/etc/easy-rsa/pki/private/koromicha.key.saAaE6L0tX' ----- Using configuration from /etc/easy-rsa/pki/safessl-easyrsa.cnf Enter pass phrase for /etc/easy-rsa/pki/private/ca.key: Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows commonName :ASN.1 12:'koromicha' Certificate is to be certified until Oct 10 18:25:37 2024 GMT (1080 days) Write out database with 1 new entries Data Base Updated
Untuk menghasilkan untuk klien kedua,
./easyrsa build-client-full janedoe nopass
Anda dapat melihat cara menggunakan easyrsa
perintah dengan ./easyrsa --help
.
Salin Sertifikat dan Kunci Klien ke Direktori Klien
Buat direktori klien OpenVPN. Misalnya, kami telah membuat sertifikat dan file kunci untuk dua klien, koromicha dan janedoe, oleh karena itu kami membuat direktori sebagai;
mkdir /etc/openvpn/client/{koromicha,janedoe}
Setelah itu, salin sertifikat/kunci yang dibuat klien dan sertifikat CA server ke direktori konfigurasi klien OpenVPN. Anda bisa
cp -rp /etc/easy-rsa/pki/{ca.crt,issued/koromicha.crt,private/koromicha.key} /etc/openvpn/client/koromicha
cp -rp /etc/easy-rsa/pki/{ca.crt,issued/janedoe.crt,private/janedoe.key} /etc/openvpn/client/janedoe/
Konfigurasi Server OpenVPN di Debian 11/Debian 10
Langkah selanjutnya adalah mengkonfigurasi server OpenVPN. Salin contoh konfigurasi server OpenVPN ke /etc/openvpn/server
direktori seperti yang ditunjukkan di bawah ini;
Pada Debian 10;
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/server/
Ekstrak konfigurasi.
cd /etc/openvpn/server/ gunzip server.conf.gz
Pada Debian 11;
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/server/
Ubah file konfigurasi, server.conf
, untuk memenuhi kebutuhan Anda;
Beginilah tampilan konfigurasi kami tanpa komentar.
cp /etc/openvpn/server/server.conf{,.bak}
cat > /etc/openvpn/server/server.conf << 'EOL' port 1194 proto udp dev tun ca ca.crt cert issued/server.crt key private/server.key # This file should be kept secret dh dh.pem topology subnet server 10.8.0.0 255.255.255.0 ifconfig-pool-persist /var/log/openvpn/ipp.txt push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 8.8.8.8" client-to-client keepalive 10 120 tls-auth ta.key 0 # This file is secret cipher AES-256-CBC comp-lzo persist-key persist-tun status /var/log/openvpn/openvpn-status.log log-append /var/log/openvpn/openvpn.log verb 3 explicit-exit-notify 1 auth SHA512 EOL
Simpan dan keluar dari konfigurasi setelah selesai mengedit.
Konfigurasikan Penerusan IP OpenVPN
Untuk memastikan bahwa lalu lintas dari klien dirutekan melalui alamat IP server OpenVPN (membantu menutupi alamat IP klien), Anda perlu mengaktifkan penerusan IP di server OpenVPN.
Batalkan komentar pada baris, net.ipv4.ip_forward=1
, di /etc/sysctl.conf
untuk mengaktifkan penerusan paket untuk IPv4
sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf
Terapkan perubahan tanpa me-reboot server.
sysctl -p
Izinkan port layanan OpenVPN melalui firewall;
ufw allow 1194/udp
Konfigurasi Penyamaran IP di UFW
Temukan antarmuka default tempat paket Anda dikirim.
ip route get 8.8.8.8
8.8.8.8 via 10.0.2.2 dev enp0s3 src 10.0.2.15 uid 0
Selanjutnya, perbarui aturan UFW;
vim /etc/ufw/before.rules
Tambahkan baris yang disorot berikut tepat sebelum *filter
pengaturan meja. Perhatikan antarmuka yang digunakan harus sesuai dengan nama antarmuka di atas.
...
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.8.0.0/8 -o enp0s3 -j MASQUERADE
COMMIT
# Don't delete these required lines, otherwise there will be errors
*filter
...
Simpan dan keluar dari konfigurasi.
Aktifkan penerusan paket UFW;
sed -i 's/DEFAULT_FORWARD_POLICY="DROP"/DEFAULT_FORWARD_POLICY="ACCEPT"/' /etc/default/ufw
Muat ulang UFW;
ufw reload
Menjalankan Server OpenVPN di Debian 11/Debian 10
Mulai dan aktifkan server OpenVPN untuk berjalan pada boot sistem;
systemctl enable --now [email protected]
Memeriksa status;
systemctl status [email protected]
● [email protected] - OpenVPN service for server Loaded: loaded (/lib/systemd/system/[email protected]; enabled; vendor preset: enabled) Active: active (running) since Tue 2021-10-26 15:06:18 EDT; 9s ago Docs: man:openvpn(8) https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage https://community.openvpn.net/openvpn/wiki/HOWTO Main PID: 1595 (openvpn) Status: "Initialization Sequence Completed" Tasks: 1 (limit: 2359) Memory: 2.4M CGroup: /system.slice/system-openvpn\x2dserver.slice/[email protected] └─1595 /usr/sbin/openvpn --status /run/openvpn-server/status-server.log --status-version 2 --suppress-timestamps --config server.conf Oct 26 15:06:18 debian systemd[1]: Starting OpenVPN service for server... Oct 26 15:06:18 debian systemd[1]: Started OpenVPN service for server.
Ketika layanan OpenVPN berjalan, itu akan membuat antarmuka tunneling, tun0;
ip add s
...
4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
link/none
inet 10.8.0.1/24 brd 10.8.0.255 scope global tun0
valid_lft forever preferred_lft forever
inet6 fe80::bf6a:bdf4:58e1:ec24/64 scope link stable-privacy
valid_lft forever preferred_lft forever
Juga, pastikan untuk memeriksa log;
tail /var/log/openvpn/openvpn.log
/sbin/ip link set dev tun0 up mtu 1500 /sbin/ip addr add dev tun0 10.8.0.1/24 broadcast 10.8.0.255 Could not determine IPv4/IPv6 protocol. Using AF_INET Socket Buffers: R=[212992->212992] S=[212992->212992] UDPv4 link local (bound): [AF_INET][undef]:1194 UDPv4 link remote: [AF_UNSPEC] MULTI: multi_init called, r=256 v=256 IFCONFIG POOL: base=10.8.0.2 size=252, ipv6=0 IFCONFIG POOL LIST Initialization Sequence Completed
Server OpenVPN sekarang siap menerima dan merutekan koneksi dari klien.
Itu menandai akhir dari panduan kami tentang cara menginstal Server OpenVPN di Debian 11/Debian 10.
Sekarang Anda dapat mengonfigurasi klien Anda sesuai dengan itu.
Tutorial Terkait
Instal dan Konfigurasikan Klien OpenVPN di CentOS 8/Ubuntu 18.04
Konfigurasikan Otentikasi Berbasis OpenVPN LDAP
Konfigurasikan IPSEC VPN menggunakan StrongSwan di Ubuntu 18.04