Instal dan konfigurasikan server OpenVPN pada CentOS 7

Pada artikel ini, kami akan mempertimbangkan untuk menginstal dan mengkonfigurasi server OpenVPN berbasis Linux CentOS 7, dan menunjukkan cara menggunakan server OpenVPN yang dikonfigurasi untuk menghubungkan dua komputer jarak jauh (atau kantor) yang terletak di belakang NAT ke dalam satu jaringan. Kami akan melakukan otentikasi klien VPN sesuai dengan sertifikat.

Konten:

  • Instal OpenVPN dan Easy-RSA
  • Pengaturan mudah-RSA dan penerbitan sertifikat
  • Kami membuat kunci dan sertifikat untuk server OpenVPN
  • Mengkonfigurasi server OpenVPN: file konfigurasi, firewall
  • Kami menggabungkan beberapa kantor (komputer) menggunakan OpenVPN

VPN - Seperangkat teknologi yang memungkinkan Anda membangun jaringan aman di atas jaringan publik atau InterTet. Menggunakan VPN, Anda dapat menggabungkan segmen jaringan yang dipisahkan Internet ke dalam satu jaringan lokal..

Openvpn - salah satu implementasi teknologi VPN sumber terbuka berdasarkan SSL / TLS (berdasarkan perpustakaan OpenSSL). Menggunakan OpenVPN, Anda dapat menggabungkan kantor jarak jauh dan PC lokal individual yang berada di belakang NAT menjadi satu jaringan.

Instal OpenVPN dan Easy-RSA

Langkah pertama adalah menghubungkan repositori EPEL dan memperbarui sistem:

yum instal epel-release -y
pembaruan yum -y

Ketika sistem diperbarui, Anda harus menginstal menggunakan pengelola paket yum Openvpn dan Mudah-RSA (kita akan membutuhkannya untuk mengimplementasikan infrastruktur kunci PKI pada server VPN).

yum instal openvpn easy-rsa -y

Pengaturan mudah-RSA dan penerbitan sertifikat

Salin semua skrip mudah rsa ke katalog / etc / openvpn /:

cp -r / usr / share / easy-rsa / etc / openvpn /

Ayo buka katalog / etc / openvpn / easy-rsa / 3 / dan buat file di sana vars:

cd / etc / openvpn / easy-rsa / 3 /
nano vars

Tambahkan konten file (Anda dapat memperbaikinya sendiri):

set_var EASYRSA "$ PWD" set_var EASYRSA_PKI "$ EASYRSA / PKI" set_var EASYRSA_DN "cn_only" set_var EASYRSA_REQ_COUNTRY "RU" set_var EASYRSA_REQ_PROVINCE "MSK" set_var EASYRSA_REQ_CITY "MSK" set_var EASYRSA_REQ_ORG "IT-Perusahaan" set_var EASYRSA_REQ_EMAIL "[email protected]. ru "set_var EASYRSA_REQ_OU" departemen IT "set_var EASYRSA_KEY_SIZE 4096 set_var EASYRSA_ALGO rsa set_var EASYRSA_CA_EXPIRE 7500 set_var EASYRSA_CERT_EXPIRE 3650 set_var EASYRSA_NS_SUPPORT" tidak "set_var EASYRSA_NS_COMMENT" SERTIFIKAT KEWENANGAN "set_var EASYRSA_EXT_DIR" $ EASYRSA / x509-jenis "EASYRSA_SSL_CONF set_var" $ EASYRSA / openssl-1.0 .cnf "set_var EASYRSA_DIGEST" sha512 "

Data dalam file dapat diambil secara sewenang-wenang, ini tidak akan mengganggu konfigurasi dan operasi server selanjutnya.

File harus dapat dieksekusi, begitu juga:

chmod + x vars

Kami membuat kunci dan sertifikat untuk server OpenVPN

Sebelum membuat kunci, kita perlu menginisialisasi direktori PKI dan buat kunci CA.
cd / etc / openvpn / easy-rsa / 3 /
# ./easyrsa init-pki

Catatan: menggunakan konfigurasi Easy-RSA dari: ./vars init-pki complete; Anda sekarang dapat membuat CA atau permintaan. Dir PKI Anda yang baru dibuat adalah: / etc / openvpn / easy-rsa / 3 / pki

Buat kunci CA:

./ easyrsa build-ca

Setelah menjalankan perintah, kita perlu menentukan kata sandi sehingga sertifikat dan kunci dihasilkan. Kata sandi akan diperlukan di masa depan untuk menandatangani sertifikat.

Buat kunci server (nama server server.vpn.ru):

opsi nopass - nonaktifkan kata sandi untuk server.vpn.ru

# ./easyrsa gen-req server.vpn.ru nopass

Catatan: menggunakan konfigurasi Easy-RSA dari: ./vars Menggunakan SSL: openssl OpenSSL 1.0.2k-fips 26 Jan 2017 Menghasilkan kunci pribadi RSA 4096 bit ... ++ ... ++ menulis kunci pribadi baru ke '/ etc / openvpn / easy -rsa / 3 / pki / private / server.vpn.ru.key.R4IYCbD1zP '----- Anda akan diminta untuk memasukkan informasi yang akan dimasukkan ke dalam permintaan sertifikat Anda. Yang akan Anda masukkan adalah apa yang disebut dengan Distinguished Name atau DN. Ada beberapa bidang tetapi Anda dapat membiarkan beberapa kosong. Untuk beberapa bidang akan ada nilai default, Jika Anda memasukkan '.', Bidang akan dibiarkan kosong. ----- Nama Umum (misalnya: pengguna, host, atau nama server Anda) [server.vpn.ru]: Keypair dan permintaan sertifikat selesai. File Anda adalah: req: /etc/openvpn/easy-rsa/3/pki/reqs/server.vpn.ru.req kunci: /etc/openvpn/easy-rsa/3/pki/private/server.vpn.ru .kunci

Dalam proses penerbitan sertifikat, di kolom Nama umum perlu klik Masuk,.

Kami akan menandatangani kunci server.vpn.ru menggunakan sertifikat CA kami:

./ easyrsa sign-req server server.vpn.ru

Saat menandatangani sertifikat, Anda akan memerlukan kata sandi yang kami atur saat menerbitkan sertifikat CA:

Seperti yang ditunjukkan dalam tangkapan layar, dalam proses ini Anda harus memasukkan iya dan kata sandi dari CA.

Untuk memverifikasi bahwa sertifikat dibuat tanpa kesalahan, jalankan perintah:

# openssl memverifikasi -CAfile pki / ca.crt pki / dikeluarkan / server.vpn.ru.crt

pki / dikeluarkan / server.vpn.ru.crt: Oke

Semua sertifikat server OpenVPN dibuat.

  • Sertifikat root terletak: 'pki / ca.crt'
  • Kunci pribadi server berada: 'pki / private / server.vpn.ru.key'
  • Sertifikat server berada: 'pki / dikeluarkan / server.vpn.ru.crt'

Untuk menghasilkan kunci klien, Anda perlu menjalankan perintah:

./ easyrsa gen-req nama klien nopass

Buat kunci klien admin1:

# ./easyrsa gen-req admin1 nopass

Catatan: menggunakan konfigurasi Easy-RSA dari: ./vars Menggunakan SSL: openssl OpenSSL 1.0.2k-fips 26 Jan 2017 Menghasilkan kunci pribadi RSA 4096 bit ... ++ ... ++ menulis kunci pribadi baru ke '/ etc / openvpn / easy -rsa / 3 / pki / private / admin1.key.R5OY6reT2e '----- Anda akan diminta untuk memasukkan informasi yang akan dimasukkan ke dalam permintaan sertifikat Anda. Yang akan Anda masukkan adalah apa yang disebut dengan Distinguished Name atau DN. Ada beberapa bidang tetapi Anda dapat membiarkan beberapa kosong. Untuk beberapa bidang akan ada nilai default, Jika Anda memasukkan '.', Bidang akan dibiarkan kosong. ----- Nama Umum (misalnya: nama pengguna, host, atau server Anda) [admin1]: Keypair dan permintaan sertifikat selesai. File-file Anda adalah: req: /etc/openvpn/easy-rsa/3/pki/reqs/admin1.req key: /etc/openvpn/easy-rsa/3/pki/private/admin1.key

Seperti halnya kunci server, Anda harus menandatanganinya menggunakan sertifikat CA:

./ easyrsa sign-req client admin1

Sertifikat dibuat untuk pengguna.

Selain itu, Anda perlu membuat kunci Diffie-Hellman, yang akan digunakan saat bertukar kunci:

./ easyrsa gen-dh

Itu dihasilkan untuk waktu yang lama:

Kemudian kami menghasilkan sertifikat TLS:

openvpn --genkey --secret ta.key

Jika kami berencana untuk mencabut sertifikat klien di masa mendatang, kami perlu membuat kunci CRL:

# ./easyrsa gen-crl

Catatan: menggunakan konfigurasi Easy-RSA dari: ./vars Menggunakan SSL: openssl OpenSSL 1.0.2k-fips 26 Jan 2017 Menggunakan konfigurasi dari /etc/openvpn/easy-rsa/3/pki/safessl-easyrsa.cnf Masukkan frasa sandi untuk /etc/openvpn/easy-rsa/3/pki/private/ca.key: CRL yang diperbarui telah dibuat. File CRL: /etc/openvpn/easy-rsa/3/pki/crl.pem

Untuk mencabut sertifikat, jalankan perintah:

./ easyrsa mencabut admin1 - dimana admin1 ini adalah nama sertifikat

Sertifikat yang diperlukan untuk pekerjaan telah dibuat, salin ke direktori kerja:

Sertifikat Server:

cp pki / ca.crt / etc / openvpn / server /
cp pki / dikeluarkan / server.vpn.ru.crt / etc / openvpn / server /
cp pki / private / server.vpn.ru.key / etc / openvpn / server /
cp pki / private / dh.pem / etc / openvpn / server /
cp pki / private / ta.key / etc / openvpn / server /
cp pki / crl.pem / etc / openvpn / server /

Sertifikat klien:

cp pki / dikeluarkan / admin1.crt / etc / openvpn / klien /
cp pki / private / admin1.key / etc / openvpn / client /

Mengkonfigurasi server OpenVPN: file konfigurasi, firewall

Mari kita beralih ke pengaturan file konfigurasi OpenVPN. Pertama, buat file konfigurasi OpenVPN server.conf:

cd / etc / openvpn / && nano server.conf

Ubah konten file menjadi yang berikut:

# Tentukan port, protokol, dan port perangkat 1194 proto udp dev tun # Tentukan jalur ke sertifikat server ca /etc/openvpn/server/ca.crt cert /etc/openvpn/server/server.vpn.ru.crt key / etc / openvpn /server/server.vpn.ru.key # Jalur ke CRL dan kunci DH dh /etc/openvpn/server/dh.pem crl-memverifikasi /etc/openvpn/server/crl.pem # Tentukan pengaturan jaringan IP, alamat dari mana Klien VPN akan menerima server 15.10.2.0 255.255.255.0 push "redirect-gateway def1" # Tentukan tujuan server DNS push "dhcp-option DNS 77.88.8.8" push "dhcp-option DNS 8.8.4.4" # Izinkan klien yang berbeda untuk terhubung, dengan duplikat kunci yang sama-cn # perlindungan TLS tls-auth /etc/openvpn/server/ta.key 0 cipher AES-256-CBC tls-versi-min 1.2 tls-cipher TLS-DHE-RSA-WITH-AES-256- GCM-SHA384: TLS- DHE-RSA-WITH-AES-256-CBC-SHA256: TLS-DHE-RSA-WITH-AES-128-GCM-SHA256: TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 auth SHA512 auth-nocache # Konfigurasi lain dari keepalive 20 60 persist-key persist-tun comp-lzo ya daemon user kelompok siapa pun tidak ada # Jalan ke file log log-append /var/log/openvpn.log kata kerja 3 

Kemudian simpan file tersebut. Saya menentukan port UDP standar 1194 untuk server VPN, tetapi untuk OpenVPN Anda dapat menentukan port gratis di server.

Tetap mengkonfigurasi aturan firewall untuk memungkinkan koneksi dan routing antar segmen.

Jika Anda menggunakan Firewalld, Anda harus terlebih dahulu mengaktifkan modul kernel penerusan:

# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
# sysctl -p

net.ipv4.ip_forward = 1

Tambahkan layanan openvpn ke firewalld, dan antarmuka tun0 ke zona tepercaya

firewall-cmd --permanent --add-service = openvpn
firewall-cmd --permanent --zone = tepercaya --add-interface = tun0

Aktifkan 'MASQUERADE' untuk zona tepercaya firewalld:
firewall-cmd --permanent --zone = tepercaya --add-masquerade

Aktifkan NAT:

firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 15.10.2.0/24 -o Server IP -j MASQUERADE
firewall-cmd -muat ulang

Jika Anda menggunakan iptables tanpa firewalld, maka Anda perlu menjalankan perintah berikut:

iptables -t nat -A POSTROUTING -s 15.10.2.0/24 -o eth0 -j MASQUERADE
iptables -A INPUT -p tcp -dport 1194 -j MENERIMA
iptables layanan simpan

Luncurkan OpenVPN dan tambahkan ke startup Linux:

systemctl memulai openvpn @ server
systemctl mengaktifkan openvpn @ server

Periksa apakah port 1194 didengarkan oleh layanan:

# lsof -i: 1194

COMMAND PID USER FD TYPE DEVICE SIZE / OFF NODE NAME openvpn 11887 tidak ada yang 5u IPv4 45892 0t0 UDP *: openvpn

Mari kita periksa pengaturan IP antarmuka jaringan:

# ip a

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3: tun0: mtu 1500 qdisc pfifo_fast status UNKNOWN grup default qlen 100 link / tidak ada inet 15.10 .2.1 rekan 15.10.2.2/32 lingkup global tun0 valid_lft selamanya prefer_lft selamanya inet6 fe80 :: db7c: 7fed: 6d4f: 70d2 / 64 lingkup tautan bendera 800 valid_lft forever prefer_lft forever

Seperti yang Anda lihat, di perangkat tun0 jaringan yang ditentukan selama konfigurasi ditambahkan.

Ini adalah pengaturan minimum yang Anda perlukan agar OpenVPN berfungsi..

Kami menggabungkan beberapa kantor (komputer) menggunakan OpenVPN

Pertimbangkan cara menghubungkan ke server OpenVPN dari dua komputer jarak jauh yang terhubung ke Internet melalui NAT, dan mengatur jaringan bersama di antara mereka. Untuk terhubung dari komputer Windows ke server OpenVPN, saya menggunakan klien resmi dari pengembang. Anda dapat mengunduhnya di situs web resmi, kami tidak akan fokus pada ini, tetapi kami akan langsung menuju ke pengaturan.

Setelah Anda menginstal klien, Anda harus pergi ke file konfigurasi, yang perlu Anda buat di sepanjang jalan:

C: \ Program Files \ OpenVPN \ config \

Saya membuat file klien dan menambahkan konten berikut ke dalamnya:

klien dev tun proto udp remote 182.122.41.12 1194 resolusi-coba lagi tak terbatas blok-luar-dns bertahan-kunci tetap-tun-bisu-ulangan-peringatan server remote-cert-tls tls-client auth SHA512 tls-auth "C: \\ Program Files \\ OpenVPN \\ config \\ ta.key "1 remote-cert-eku" Otentikasi Server Web TLS "ca" C: \\ Program Files \\ OpenVPN \\ config \\ ca.crt "cert" C: C: \\ Program Files \\ OpenVPN \\ config \\ admin1.crt "kunci" C: \\ Program Files \\ OpenVPN \\ config \\ admin1.key "cipher AES-256-CBC comp-lzo verb 3

Untuk mengkonfigurasi, kita memerlukan sertifikat klien, keamanan dan server yang dibuat sebelumnya. Mereka perlu diunduh dari server dan ditempatkan di direktori yang nyaman bagi Anda, setelah itu Anda perlu menentukan path ke mereka di file konfigurasi klien OpenVPN.

Setelah kami terhubung melalui pintasan klien VPN Terbuka di baki:

Saya terhubung dan mendapatkan IP berikut untuk PC saya:

Alamat IPv4 ...: 10.15.2.14 Subnet mask ...: 255.255.255.252

Di komputer kedua untuk NAT, saya melakukan langkah yang sama, setelah membuat sertifikat untuk pengguna kedua, ketika saya menghubungkan PC kedua, saya juga menerima IP dari jaringan:

Alamat IPv4 ...: 15.10.2.6 Subnet mask ...: 255.255.255.252

Setelah terhubung, kedua komputer berada di jaringan yang sama dan saling bertemu.

Jalankan ping pada PC kedua:

Paket pertukaran dari 10.15.2.14 hingga 32 byte data: Balas dari 10.15.2.14: jumlah byte = 32 waktu = 67ms TTL = 127

Jalankan ping pada PC pertama:

Paket pertukaran dari 10/15 / 2,6 hingga 32 byte data: Balas dari 10/15 / 2,6: jumlah byte = 32 kali = 71ms TTL = 127

Kedua klien VPN yang terhubung dapat bertukar paket, dan mentransfer file satu sama lain secara langsung. Dengan demikian, kami dapat menggabungkan dua PC yang terletak di berbagai bagian negara menjadi satu jaringan lokal.

Pada server dengan OpenVPN, Anda dapat membuat jumlah kunci dan sertifikat yang tidak terbatas untuk pengguna. Jika Anda memerlukan sertifikat baru, jalankan perintah berikut di direktori / etc / openvpn / easy-rsa / 3:

./ easyrsa gen-req nama klien nopass
./ easyrsa sign-req nama klien klien

Ingatlah untuk mencabut sertifikat klien secara berkala jika tidak digunakan untuk menjaga keamanan data Anda.