Tutorial Install dan Konfigurasi OpenVPN di VPS Centos 7 / Red Hat - Tutorial Linux

Latest

Welcome to Open Source


Selasa, 03 Oktober 2017

Tutorial Install dan Konfigurasi OpenVPN di VPS Centos 7 / Red Hat




Hai Sobat Linux, hari ini saya akan berbagi tutorial cara membuat OpenVPN server di Centos 7. VPN adalah singkatan dari Virtual Private Network, yaitu sebuah cara aman untuk mengakses local area network yang berada diluar jangkauan, dengan menggunakan internet atau jaringan umum lainnya untuk melakukan transmisi paket data secara pribadi, dan terenkripsi. Kali ini kita akan membuat OpenVPN server yang dimana nantinya dari  OpenVPN server ini kita dapat mengakses server local kita.  Saya menggunakan UDP port 1194 untuk jalur untuk koneksi ke OpenVPN Server. Tanpa berlama-lama lagi mari kita mulai memasak.


Install dan Konfigurasi OpenVPN Server

#pertama kita perlu menginstall epe-release dan openvpn comunity edition (free)
yum install epel-release
yum install openvpn easy-rsa -y


selanjutnya kita akan generate Key, Certificate & Enkripsi
#create folder easy-rsa
mkdir -p /etc/openvpn/easy-rsa/keys

#copykan script generate Easy-RSA ke direktori easy-rsa
cp -rf /usr/share/easy-rsa/2.0/* /etc/openvpn/easy-rsa

#buka konfigurasi variabel easy-rsa dengan perintah
vi /etc/openvpn/easy-rsa/vars

# Cari bagian ini dan jangan biarkan kosong, sesuaikan dengan kebutuhan anda atau biarkan default

export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funstont"
export KEY_EMAIL="land@example.com"
export KEY_OU="MyOrganizationalUnit"

# X509 Subject Field
export KEY_NAME="server"

. . .

#export KEY_CN=CommonName

save dan keluar dari editor


#copy cnf dibutuhkan saat generate certificate
cp /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf

#untuk menggenerate key dan sertifikat kita perlu memindahkan ke folder easy-rsa
cd /etc/openvpn/easy-rsa
source ./vars

#bersihkan sertifikat yg mungkin sudah ada
./clean-all

#buat certificate authority yang akan diminta untuk menekan ENTER untuk semua informasi yang telah kita buat di file vars. kita hanya perlu menekan ENTER
./build-ca

#Kita perlu menggenerate Diffie-Hellman key yg akan digunakan selama pertukaran berlangsung. Perintah ini membutuhkan waktu mungkin sekitar 2 menit
./build-dh

tunggu beberapa saat hingga proses selesai


#Generate HMAC signature untuk verifikasi TLS
openvpn --genkey --secret /etc/openvpn/ta.key


#Kita perlu menggenerate key dan certificate untuk server
./build-key-server server

output:

Generating a 2048 bit RSA private key
..+++
.........+++
writing new private key to 'server.key'
-----
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.
-----
Country Name (2 letter code) [US]:
State or Province Name (full name) [CA]:
Locality Name (eg, city) [SanFrancisco]:
Organization Name (eg, company) [Fort-Funston]:
Organizational Unit Name (eg, section) [MyOrganizationalUnit]:
Common Name (eg, your name or your server's hostname) [server1]:
Name [server]:
Email Address [land@nostratech.com]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /etc/openvpn/easy-rsa/openssl-1.0.0.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'US'
stateOrProvinceName   :PRINTABLE:'CA'
localityName          :PRINTABLE:'SanFrancisco'
organizationName      :PRINTABLE:'Fort-Funston'
organizationalUnitName:PRINTABLE:'MyOrganizationalUnit'
commonName            :PRINTABLE:'server'
name                  :PRINTABLE:'server'
emailAddress          :IA5STRING:'land@nostratech.com'
Certificate is to be certified until Oct  1 12:01:46 2027 GMT (3650 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
[root@land3 easy-rsa]#


akan menghasilkan file server.crt dan server.key


#Setelah semua tergenerate kita perlu mengcopy ke foder /etc/openvpn
cd /etc/openvpn/easy-rsa/keys
cp dh2048.pem ca.crt server.crt server.key /etc/openvpn


#Sekarang kita perlu menggenerate key dan certificate untuk client. Cara membuatnya sama dengan sebelumnya (di atas). Perintah ini akan menghasilkan client.key & client.crt
source ./vars
cd /etc/openvpn/easy-rsa
./build-key client


#copy key dan cert client ke folder /etc/openvpn
cp client.crt client.key /etc/openvpn


Konfigurasi Openvpn Server

#Copy example server.conf
cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn


Sesuaikan konfigurasi server openvpn sesuai dengan di bawah ini:
# vi /etc/openvpn/server.conf
port 1194
proto udp
dh dh2048.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
user nobody
group nobody
tls-auth ta.key 0 # This file is secret
key-direction 0
cipher AES-256-CBC
auth SHA256
log         /var/logs/openvpn/openvpn.log


#Create folder /var/logs/openvpn/ untuk log openvpn
mkdir -p /var/logs/openvpn/


Routing

Jika kita tidak ingin menggunakan iptables kita tidak perlu menambah rule iptables kita bisa langsung menggunakan perintah iptables flush
iptables -F

atau mematikan service iptables
systemctl stop iptables


Jika kita ingin menggunakan iptables kita perlu menambahkan rule di iptables sehingga kita dapat mengakses server openvpn dari luar

jika belum terinstall kita perlu menginstall nya terlebih dahulu. Jika sudah terinstal lewati langkah dibawah ini
yum install iptables-services -y
systemctl mask firewalld
systemctl enable iptables
systemctl stop firewalld
systemctl start iptables
iptables --flush

#tambahkan rule ke iptables untuk memperbolehkan meneruskan request ke subnet openvpn
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables-save > /etc/sysconfig/iptables

#kita perlu mengaktifkan IP forwading sysctl di sysctl.conf
vi /etc/sysctl.conf

#uncoment atau tambahkan konfigurasi berikut di baris teratas dari file tersebut
net.ipv4.ip_forward = 1

#restart network server
systemctl restart network.service



#tambahkan openvpn ke systemctl sehingga otomatis run ketika restart server (daemon)
systemctl -f enable openvpn@server.service

#start service openvpn
systemctl start openvpn@server.service

#Cek status service openvpn
systemctl status openvpn@server.service

#Cek apakah server sudah listen port UDP 1194
netstat -lptnu


Konfigurasi dan Setting untuk Client

Selanjutnya kita perlu membuat client.ovpn untuk pengaturan client yg dipakai sehingga dapat mengakses oepnvpn server. Pertama-tama kita akan akan mengcopy contoh client.conf yang telah tersedia ke folder openvpn

cp /usr/share/doc/openvpn-*/sample/sample-config-files/client.conf /etc/openvpn

#buka file client.conf
cd /etc/openvpn
nano client.conf

#masuk ke file tersebut dan cocokkan konfigurasi di bawah ini. Di bagian remote masukkan ip server openvpn yang akan diremote

client
dev tun
proto udp
remote 172.16.130.13 1194
user nobody
group nobody
cipher AES-256-CBC
auth SHA256
;tls-auth ta.key 1
key-direction 1


save file client.conf tersebut dan keluar dari editor


#Untuk membuat file openvpn kita kan menggunakan script yang telah oleh orang lain para master.
cd /etc/openvpn
nano make_config.sh


#paste script di bawah ini ke file tersebut, pastikan filenya dan dir sudah benar:

#!/bin/bash

# First argument: Client identifier

KEY_DIR=/etc/openvpn
OUTPUT_DIR=/etc/openvpn
BASE_CONFIG=/etc/openvpn/client.conf

cat ${BASE_CONFIG} \
    <(echo -e '<ca>') \
    ${KEY_DIR}/ca.crt \
    <(echo -e '</ca>\n<cert>') \
    ${KEY_DIR}/${1}.crt \
    <(echo -e '</cert>\n<key>') \
    ${KEY_DIR}/${1}.key \
    <(echo -e '</key>\n<tls-auth>') \
    ${KEY_DIR}/ta.key \
    <(echo -e '</tls-auth>') \
    > ${OUTPUT_DIR}/${1}.ovpn


#berikan akses file sehingga dapat dieksekusi
chmod 700 make_config.sh

#jalankan script bash untuk membuat client1.ovpn
./make_config.sh client1

#ls -lrt

maka kita kan menemukan client1.ovpn


Untuk mencobannya kita dapat connect ke openvpn server menggunakan client1.ovpn yang kita create tadi dengan perintah:

openvpn --config /etc/openvpn/client1.ovpn

Jika berhasil anda akan bisa terhubung ke openvpn server


Sekian tutorial kali ini selamat mencoba.

Terima kasih :)

Tidak ada komentar:

Posting Komentar