Siapkan Server OpenVPN di CentOS 8
Instal Repositori EPEL
Paket OpenVPN terbaru disediakan oleh repositori EPEL di CentOS 8 dan turunan serupa lainnya. EPEL dapat diinstal pada CentOS 8 dengan menjalankan perintah di bawah ini;
dnf install epel-release -y
Instal OpenVPN di CentOS 8
Setelah repo EPEL terpasang, Anda sekarang dapat menginstal paket OpenVPN pada CentOS 8 dengan menjalankan perintah di bawah ini;
dnf install openvpn
Instal Easy-RSA CA Utility di CentOS 8
Paket Easy-RSA adalah utilitas CA berbasis shell yang digunakan untuk menghasilkan pasangan kunci SSL yang digunakan untuk mengamankan koneksi VPN.
dnf install easy-rsa
Buat Infrastruktur Kunci Publik OpenVPN
Langkah pertama dalam menyiapkan server OpenVPN adalah membuat PKI yang terdiri dari kunci publik dan pribadi untuk server OpenVPN dan menghubungkan klien serta sertifikat Otoritas Sertifikat master dan kunci pribadi untuk menandatangani server OpenVPN dan sertifikat klien. Jika memungkinkan, Anda harus membuat PKI di server terpisah yang menjalankan OpenVPN untuk tujuan keamanan.
Inisialisasi PKI
Easy-RSA digunakan untuk manajemen PKI. Skrip Easy-RSA dipasang di bawah /usr/share/easy-rsa
direktori.
Untuk memastikan bahwa Easy-RSA setiap konfigurasi yang dibuat tidak ditimpa jika terjadi peningkatan, salin skrip ke direktori lain, sebaiknya di bawah /etc
direktori.
mkdir /etc/easy-rsa
cp -air /usr/share/easy-rsa/3/* /etc/easy-rsa/
Setelah skrip tersedia, navigasikan ke direktori dan inisialisasi PKI.
cd /etc/easy-rsa/
./easyrsa init-pki
Buat Sertifikat dan Kunci Otoritas Sertifikat (CA)
Selanjutnya, buat sertifikat CA dan kunci yang akan digunakan untuk menandatangani sertifikat dengan menjalankan perintah di bawah ini dalam direktori Easy-RSA di atas.
./easyrsa build-ca
Ini akan meminta Anda untuk frasa sandi kunci CA dan nama umum server.
Using SSL: openssl OpenSSL 1.1.1c FIPS 28 May 2019 Enter New CA Key Passphrase: ENTER PASSWORD Re-Enter New CA Key Passphrase: RE-ENTER PASSWORD Generating RSA private key, 2048 bit long modulus (2 primes) ...................................................................+++++ .+++++ e is 65537 (0x010001) Can't load /etc/easy-rsa/pki/.rnd into RNG 140160794502976: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-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 disimpan di /etc/easy-rsa/pki/ca.crt
.
Hasilkan Parameter Diffie Hellman
Saat berada dalam direktori Easy-RSA yang sama seperti di atas, jalankan perintah di bawah ini untuk menghasilkan file kunci Diffie-Hellman yang dapat digunakan untuk pertukaran kunci selama handshake TLS dengan klien penghubung.
./easyrsa gen-dh
Perintah akan membutuhkan waktu untuk diselesaikan. Kemudian menyimpan parameter DH pada /etc/easy-rsa/pki/dh.pem
mengajukan.
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
Saat perintah berjalan, Anda akan diminta untuk memasukkan frasa sandi kunci CA buat di atas.
nopass
menonaktifkan penggunaan frasa sandi.
Buat kunci Kode Otentikasi Pesan Berbasis Hash (HMAC)
Untuk menghasilkan kunci otentikasi pra-berbagi TLS/SSL yang akan digunakan untuk menambahkan tanda tangan HMAC tambahan ke semua paket handshake SSL/TLS, untuk menghindari serangan DoS dan banjir port UDP, jalankan perintah di bawah ini;
openvpn --genkey --secret /etc/easy-rsa/pki/ta.key
Buat Sertifikat Pencabutan
Untuk membatalkan sertifikat yang ditandatangani sebelumnya, Anda perlu membuat sertifikat pencabutan.
./easyrsa gen-crl
Sertifikat Pencabutan disimpan sebagai /etc/easy-rsa/pki/crl.pem
.
Salin Sertifikat dan Kunci Server ke Direktori Server
Selanjutnya, salin semua sertifikat/kunci 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
Untuk menghasilkan sertifikat klien OpenVPN dan kunci pribadi, jalankan perintah di bawah ini;
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 Anda buat sertifikat dan kuncinya.
Untuk menghasilkan untuk klien kedua,
./easyrsa build-client-full johndoe nopass
Salin Sertifikat dan Kunci Klien ke Direktori Klien
Buat direktori untuk setiap klien di direktori klien OpenVPN
mkdir /etc/openvpn/client/{koromicha,johndoe}
Selanjutnya, salin semua sertifikat/kunci yang dibuat klien dan sertifikat CA ke direktori konfigurasi klien OpenVPN. Anda dapat
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/johndoe.crt,private/johndoe.key} /etc/openvpn/client/johndoe/
Konfigurasi Server OpenVPN pada CentOS 8
OpenVPN hadir dengan contoh file konfigurasi di dalam direktori dokumentasinya. Salin file ke /etc/openvpn/server/
dan modifikasi sesuai kebutuhan Anda.
cp /usr/share/doc/openvpn/sample/sample-config-files/server.conf /etc/openvpn/server/
Buka konfigurasi untuk modifikasi.
vim /etc/openvpn/server/server.conf
File sangat dikomentari. Baca komentar untuk setiap opsi konfigurasi.
Dalam bentuk paling dasar, di bawah ini adalah opsi konfigurasi kami, tanpa komentar.
port 1194 proto udp4 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 ipp.txt push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 192.168.10.3" client-to-client keepalive 10 120 tls-auth ta.key 0 # This file is secret cipher AES-256-CBC comp-lzo user nobody group nobody 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
Simpan dan keluar dari konfigurasi setelah selesai memodifikasi.
Ingin menetapkan alamat IP tetap/statis ke klien OpenVPN Anda? Ikuti panduan di bawah ini;
Tetapkan Alamat IP Statis untuk Klien OpenVPN
Buat direktori log;
mkdir /var/log/openvpn/
Jelajahi konfigurasi dan lakukan penyetelan lebih lanjut agar sesuai dengan kebutuhan Anda.
Konfigurasi Perutean Server OpenVPN
Untuk memastikan bahwa lalu lintas dari klien dirutekan melalui alamat IP server (membantu menutupi alamat IP klien), Anda perlu mengaktifkan penerusan IP di server OpenVPN;
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
Jalankan perintah di bawah ini untuk melakukan perubahan tanpa me-reboot server.
sysctl --system
Izinkan port layanan OpenVPN melalui firewall
firewall-cmd --add-port=1194/udp --permanent
Aktifkan Penyamaran IP
firewall-cmd --add-masquerade --permanent
Teruskan lalu lintas yang diterima pada subnet OpenVPN yang ditentukan, misalnya, 10.8.0.0/24 dalam kasus kami, ke antarmuka yang melaluinya paket akan dikirim.
Untuk menemukan antarmuka tempat paket dikirim dengan menjalankan perintah di bawah ini;
ip route get 8.8.8.8
8.8.8.8 via 192.168.43.1 dev enp0s3 src 192.168.43.73 uid 0
Nama antarmuka dan subnet yang ditentukan mungkin berbeda untuk kasus Anda. Ganti sesuai kebutuhan.
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o enp0s3 -j MASQUERADE
Muat ulang firewalld agar perubahan diterapkan.
firewall-cmd --reload
Mulai dan atur OpenVPN berjalan pada boot sistem.
systemctl enable --now [email protected]
Ketika layanan OpenVPN berjalan, itu akan membuat antarmuka tunneling, tun0;
ip add s
4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel 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::2ed5:8f74:c456:96b7/64 scope link stable-privacy valid_lft forever preferred_lft forever
Memeriksa log;
tail /var/log/openvpn/openvpn.log
/sbin/ip addr add dev tun0 10.8.0.1/24 broadcast 10.8.0.255
Socket Buffers: R=[212992->212992] S=[212992->212992]
UDPv4 link local (bound): [AF_INET][undef]:1194
UDPv4 link remote: [AF_UNSPEC]
GID set to nobody
UID set to nobody
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 Anda sekarang aktif dan berjalan. Itu membawa kita ke akhir panduan kami tentang cara menginstal dan mengatur Server OpenVPN di CentOS 8.
Anda sekarang dapat melanjutkan untuk mengonfigurasi klien OpenVPN;
Instal dan Konfigurasikan Klien OpenVPN di CentOS 8/Ubuntu 18.04
Konfigurasikan Otentikasi berbasis OpenVPN LDAP.
Konfigurasikan Otentikasi Berbasis OpenVPN LDAP
Tutorial Terkait
Konfigurasikan IPSEC VPN menggunakan StrongSwan di Ubuntu 18.04
Konfigurasikan Klien VPN strongSwan di Ubuntu 18.04/CentOS 8
Hubungkan ke Cisco VPN Menggunakan file PCF di Ubuntu