Installasi VPN Server dengan Open VPN
Sekarang ini banyak sekali yang bisa
dipergunakan untuk membuat sebuah vpn server dari mulai yang langsung
berupa hardware sampai yang hanya berupa aplikasi, dari yang harganya
mahal sampai yang gratisan.
OpenVPN
adalah salah satu aplikasi VPN gratis (opensource) yang cukup bisa
diandalkan. Beberapa sumber mengatakan OpenVPN bukan lah yang teraman
tetapi apabila data yang harus ditransfer antara dua network atau lebih
tidak terlalu sensitif sepertinya OpenVPN lebih dari cukup apalagi
OpenVPN juga sangat gampang untuk diinstall.
Disini
saya hanya akan bercerita tentang langkah installasi OpenVPN di
FreeBSD. Walaupun mungkin bisa saja beberapa trik nya dipergunakan di
Linux atau *nix like OS lainnya.
Ok daripada lama bercerita mari kita mulai saja.
Pertama
OpenVPN pada FreeBSD bisa ditemui pada folder
/usr/ports/security/openvpn, library yang diperlukan biasanya lzo lib
tetapi berhubung saya menginstallnya lewat ports maka seluruh dependensi
secara otomatis akan diinstalkan.
Untuk installasi silahkan ikuti langkah berikut (Semua dilakukan oleh root)
cd /usr/ports/security/openvpn
make config
make build
make install clean
Langkah diatas
dilakukan supaya anda punya kesempatan untuk melihat apa yang terjadi
pada setiap langkah. Sebenarnya bisa saja anda change directory dan
langsung mengetikan make install clean.
Setelah
beres proses installasi dan tidak ada error yang berarti, selanjutnya
masukan baris berikut ke file /etc/rc.conf dengan menggunakan text
editor kesayangan anda.
openvpn_enable="YES"
Sekarang
kita akan membuat config file yang akan diletakan di folder
/usr/local/etc/openvpn kalau folder tersebut belum ada silahkan buat
terlebih dahulu dengan perintah
mkdir /usr/local/etc/openvpn
Kemudian silahkan pindah ke folder tersebut dan mulai buat file openvpn.conf dengan text editor kesayangan anda.
cd /usr/local/etc/openvpn
pico openvpn.conf
sekarang silahkan masukan contoh config berikut ini.
# Specify device
dev tun
# # Server dan client IP Pool
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
# Certificates untuk VPN Authentication
ca /usr/local/etc/openvpn/keys/ca.crt
cert /usr/local/etc/openvpn/keys/server.crt
key /usr/local/etc/openvpn/keys/server.key
dh /usr/local/etc/openvpn/keys/dh1024.pem
# Routes untuk client
push "route 192.168.0.0 255.255.255.0"
# compression VPN link
comp-lzo
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
# Run OpenVPN sebagai daemon dan drop privileges ke user/group nobody user nobody
group nobody
daemon
Simpan file diatas dan
kita lanjutkan dengan cerificates. Copy script untuk membuat
certificates dari folder /usr/local/share/doc/openvpn dengan cara
seperti berikut ini (contoh dicopy kan ke folder /home/giest silahkan
diganti dengan user anda).
cp -r /usr/local/share/doc/openvpn/easy-rsa /home/giest/
cd /home/giest/easy-rsa
Setelah
berhasil mengcopy script easy-rsa selanjutnya silahkan adan edit file
vars dengan editor kesayangan anda dan sesuaikan dengan keperluan
(tanpa dieditpun tidak masalah hanya nanti anda akan diberikan beberapa
pertanyaan yang berulang-ulang). Berikut ini contoh bagian yang harus
anda edit.
export KEY_COUNTRY=ID
export KEY_PROVINCE="WEST JAVA"
export KEY_CITY=BANDUNG
export KEY_ORG="GIEST-VPN"
export KEY_EMAIL="admin@giest.org"
Kemudian
kita pindah dari shell default FreeBSD (biasanya tcsh) ke sh atau bash
terlebih dahulu. Apabila anda tidak berpindah shell saya jamin anda
tidak akan berhasil membuat certificates untuk openvpn.
Untuk berpindah ke sh atau bash silahkan ketik command berikut.
sh
Setelah anda berpindah shell ikuti langkah-langkah berikut ini.
. vars
NOTE: when you run ./clean-all, I will be doing a rm -rf on /usr/home/Giest/easy-rsa/keys
./clean-all
./build-ca
Generating a 1024 bit RSA private key
....................................++++++
..............++++++
writing new private key to 'ca.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) [ID]:
State or Province Name (full name) [WEST JAVA]:
Locality Name (eg, city) [BANDUNG]:
Organization Name (eg, company) [GIEST-VPN]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:
Email Address [admin@giest.org]:
Ok
seperti yang anda lihat anda diharuskan menjawab beberapa pertanyaan,
tetapi karena sebelumnya saya sudah edit file vars maka saya bisa
langsung menekan enter untuk mempergunakan jawaban default.
Selanjutnya adalah build certificate dan key ikuti langkah-langkah berikut ini
./build-key-server server
Generating a 1024 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) [ID]:
State or Province Name (full name) [WEST JAVA]:
Locality Name (eg, city) [BANDUNG]:
Organization Name (eg, company) [GIEST-VPN]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:SERVER
Email Address [admin@giest.org]:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:123456
An optional company name []:PASUNDAN
Using configuration from /usr/home/Giest/easy-rsa/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName RINTABLE:'ID'
stateOrProvinceName RINTABLE:'WEST JAVA'
localityName RINTABLE:'BANDUNG'
organizationName RINTABLE:'GIEST-VPN'
commonName RINTABLE:'SERVER'
emailAddress :IA5STRING:'admin@giest.org'
Certificate is to be certified until Jun 26 10:04:29 2017 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
Tuh kan kalo kita gak edit file vars kita harus jawab pertanyaan tersebut sekali lagi
. sekrang kita akan build certificate dan key untuk digunakan oleh
client. Dicontoh ini saya akan membuat certificate untuk 2 client saja.
kalau anda memiliki lebih dari dua client silahkan disesuaikan.
./build-key client1
Generating a 1024 bit RSA private key
.........++++++
....................................++++++
writing new private key to 'client1.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) [ID]:
State or Province Name (full name) [WEST JAVA]:
Locality Name (eg, city) [BANDUNG]:
Organization Name (eg, company) [GIEST-VPN]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:CLIENT1
Email Address [admin@giest.org]:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:123456
An optional company name []:PASUNDAN
Using configuration from /usr/home/Giest/easy-rsa/openssl.cnf
DEBUG[load_index]: unique_subject = "yes"
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName RINTABLE:'ID'
stateOrProvinceName RINTABLE:'WEST JAVA'
localityName RINTABLE:'BANDUNG'
organizationName RINTABLE:'GIEST-VPN'
commonName RINTABLE:'CLIENT1'
emailAddress :IA5STRING:'admin@giest.org'
Certificate is to be certified until Jun 26 10:10:43 2017 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
Untuk client2 silahkan ketikan
./build-key client2
yang harus anda ganti hanya bagian
[source]Common Name (eg, your name or your server’s hostname) []:CLIENT2[/source]
Apabila anda tidak melakukan perubahan disini maka certificates dan key untuk client ke dua tidak akan terbentuk.
Selanjutnya kita build dh parameter dengan perintah seperti berikut
1. # ./build-dh
2. Generating DH parameters, 1024 bit long safe prime, generator 2
3. This is going to take a long time
4. ......................................................................................+.................+.................+..........................................................................................................................................+..+.....................................................................................+...........................................................+..............................+...............................................+..........................................+...........+..............+...........................................++*++*++*
ok
sekarang proses pembuatan key sudah selesai sekarang langsung saja
anda keluar kembali ke shell default anda dengan perintah exit
Sekarang copy kan folder keys ke /usr/local/etc/openvpn dengan perintah
cp -r keys /usr/local/etc/openvpn/
Sebelum
kita mulai menjalankan openvpn server kita siapkan dulu file untuk
log. Silahkan edit file /etc/syslog.conf dan tambahkan baris berikut
ini pada bagian bawah file syslog.conf.
!openvpn
.* /var/log/openvpn.log
kemudian buat file openvpn.log dan restart syslog ny
touch /var/log/openvpn.log
killall -HUP syslogd
Sekarang kita load dulu module tun/tap supaya nanti device tun bisa muncul.
kldload if_tun
kldload if_tap
kalau anda menemukan error kldload: can’t load if_tun: File exists berarti tun dan atau tap sudah ter load jadi jangan khawatir.
Supaya
tun dan tap ter load setiap kali boot silahkan edit file
/boot/default/loader.conf kemudian cari baris berikut dan rubah menjadi
YES
if_tap_load="YES" # Ethernet tunnel software network interface
if_tun_load="YES" # Tunnel driver (user process ppp)
Ok
lengkap lah sudah sekarang kita siap untuk menjalankan OpenVPN server
untuk pertama kali. Untuk menjalankan OpenVPN silahkan ketikan perintah
berikut ini.
/usr/local/etc/rc.d/openvpn start
Selanjutnya kita cek apakah semuanya sudah siap atau belum pertama kita cek tun device dengan perintah ifconfig
tun0: flags=8051 mtu 1500
inet 10.8.0.1 --> 10.8.0.2 netmask 0xffffffff
Opened by PID 10147
Kalau anda sudah melihat tampilan seperti diatas berarti OpenVPN server anda sudah sukses jalan.
Sekarang tinggal kita tambahkan rules berikut untuk pf.conf anda (maaf yang pake ipfw cari sendiri ya )
# VPN Interface
vpn_if="tun0"
# VPN Network
vpn_network="10.8.0.0/24"
# NAT VPN connections
nat on $ext_if from $vpn_network to any -> ($ext_if)
# VPN connections inbound
pass in on $ext_if proto udp from any to port 1194 keep state
pass quick on $vpn_if
atau anda bisa menyesuaikan config diatas sesuai dengan kebutuhan.
Proses
installasi, configurasi sampai setting pf sudah selesai cara
installasi openvpn untuk client akan dibahas di artikel berikutnya,
karena artikel ini sudah terlalu panjang…
Sumber: http://www.giest.org/unix/freebsd/installasi-vpn-server-dengan-open-vpn.html
Tidak ada komentar:
Posting Komentar