Halaman

Jumat, 17 Juni 2011

Instalasi dan Konfigurasi Server OpenVPN di GNU/Linux Ubuntu

Langkah-langkah untuk instalasi dan konfigurasi OpenVPN di komputer server adalah sebagai berikut:
Untuk menginstal server VPN dengan OpenVPN dibutuhkan beberapa paket-paket ekstra pendukung diantaranya: liblzo1, liblzo-dev, libssl-dev, vtun dan opnnssl.
# apt-get install liblzo1 liblzo-dev libssl-dev vtun and openssl
Download OpenVPN dari source code di alamat http://openvpn.net/.  Pada tulisan ini dibuat menggunakan OpenVPN versi 2.0.9. Salin hasil download ke folder /usr/local/src
# cp openvpn-2.0.9.tar.gz /usr/local/src/
Buka dan ekstrak file source code
# cd /usr/local/src
# tar zxvf openvpn-2.0.9.tar.gz
Kompilasi dan instalasi OpenVPN
# cd /usr/local/src/openvpn-2.0.9
# ./configure
# make
# make install
Menggunakan Menuconfig untuk mengaktifkan TUN/TAP Support
# cd /usr/src/linux-headers 2.6.22-14-generic
# make menuconfig
  • Pilih Device Drivers dan tekan Enter
  • Pilih Network device support dan tekan Enter,
  • Pada pilihan Network Device Support aktifkan Universal TUN/TAP device driver support dengan menggunakan spacebar dengan memberikan pilihan module. Dimana pemilihan ke mode module akan mengakibatkan TUN/TAP hanya akan bekerja apabila dibutuhkan
Konfigurasi Server OpenVPN
Mempersiapkan key pada OpenVPN dapat dilakukan dengan bantuan tools easy-rsa, dimana tools tersebut terdapat di /usr/share/doc/openvpn/examples. Salin tools tersebut ke direktori /etc/openvpn/
# cp –Rf /usr/share/doc/openvpn/examples/easy-rsa/* /etc/openvpn/
Edit file vars di /etc/openvpn
# mcedit /etc/openvpn/vars
Tambahkan parameter berikut:
export D=”/etc/openvpn”
export KEY_CONFIG=”$D/openssl.cnf”
export KEY_DIR=$D/keys
export KEY_SIZE=1024
export KEY_COUNTRY=ID
export KEY_PROVINCE=JT
export KEY_CITY=Surabaya
export KEY_ORG=”UPN”
export KEY_EMAIL=ibet@gmail.com
Keterangan:
  • export D=”/etc/openvpn” adalah direktori utama yang digunakan oleh semua file konfigurasi server VPN ditentukan berada pada /etc/openvpn.
  • export KEY_CONFIG=”$D/openssl.cnf ” adalah file yang akan digunakan sebagai pembuat kunci sertifikat keamanan pada server dan client yaitu openssl.cnf dan file tersebut ditentukan berada pada direktori /etc/openvpn.
  • export KEY_DIR=”$D/keys” adalah semua file yang berupa sertifikat atau kunci keamanan yang dibuat oleh openssl.cnf yaitu ca.crt, ca.key, server.crt, server.c.r, server.key, client1.crt, client1.csr, client1.key, dh1024.pem diletakkan pada folder keys dalam /etc/openvpn.
  • export KEY_SIZE=1024 adalah panjang kunci keamanan pada server yang dibuat sebesar 1024 bit dan maksimum adalah 2048 bit. (semakin besar jumlah bit untuk kunci dibuat, maka semakin lama waktu yang dibutuhkan untuk memproses pembuatan kunci tersebut). Panjang kunci tersebut akan digunakan untuk membuat Diffie-Hellman key atau yang dikenal dengan dhxxxx.pem (xxxx = panjang kunci)
  • export KEY_COUNTRY=”ID” adalah identitas client berada atau berasal dari negara mana. Dituliskan inisial ”ID” adalah Indonesia.
  • export KEY_PROVINCE=”JT adalah identitas client berada atau berasal dari popinsi mana. Dituliskan inisial ” JT ” adalah Jawa Timur.
  • export KEY_CITY=”Surabaya adalah identitas client berada atau berasal dari kota mana. Dituliskan ” Surabaya”.
  • export KEY_ORG=”UPN” adalah identitas client berada atau berasal dari organisasi mana. Dituliskan ”UPN”.
  • export KEY_EMAIL=”ibet@gmail.com” adalah identitas client berupa email.
Pembuatan Certificate Authority (CA)
# cd /etc/openvpn/
# . ./vars
# ./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) [JT]:
Locality Name (eg, city) [Surabaya]:
Organization Name (eg, company) [UPN]:
Organizational Unit Name (eg, section) []:Elektro
Common Name (eg, your name or your server’s hostname)[]:Server
Email Address [ibet@gmail.com]:
Pembuatan Diffie-Hellman Key
# ./build-dh
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
……………………………………………..+…………….++*++*++*
Pembuatan Certificate dan Key untuk server OpenVPN
# cd /etc/openvpn/
# ./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) [JT]:
Locality Name (eg, city) [Surabaya]:
Organization Name (eg, company) [UPN]:
Organizational Unit Name (eg, section) []:T.Informatika
Common Name (eg, your name or your server’s hostname) []:Server
Email Address [ibet@gmail.com]:
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:1234
An optional company name []:UPN
Using configuration from /etc/openvpn/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject’s Distinguished Name is as follows
countryName : PRINTABLE:’ID’
stateOrProvinceName : PRINTABLE:’JT’
localityName : PRINTABLE:’Surabaya’
organizationName : PRINTABLE:’UPN’
organizationalUnitName: PRINTABLE:’T.Informatika’
commonName : PRINTABLE:’Server’
emailAddress :IA5STRING:’ibet@gmail.com’
Certificate is to be certified until May 21 21:27:40 2018 GM
(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
Pembuatan Certificate dan Key untuk client OpenVPN
# cd /etc/openvpn/
# ./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) [JT]:
Locality Name (eg, city) [Surabaya]:
Organization Name (eg, company) [UPN]:
Organizational Unit Name (eg, section) []:T.Informatika
Common Name (eg, your name or your server’s hostname) []:Server
Email Address [munir@gmail.com]:
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:1234
An optional company name []:UPN
Using configuration from /etc/openvpn/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject’s Distinguished Name is as follows
countryName : PRINTABLE:’ID’
stateOrProvinceName : PRINTABLE:’JT’
localityName : PRINTABLE:’Surabaya’
organizationName : PRINTABLE:’UPN’
organizationalUnitName: PRINTABLE:’T.Informatika’
commonName : PRINTABLE:’client1′
emailAddress :IA5STRING:’munir@gmail.com’
Certificate is to be certified until May 21 21:30:53 2018 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

Pembuatan certificate dan key untuk client2 dan client3 pada server OpenVPN menggunakan cara yang sama dengan pembuatan certificate dan key untuk client1, hanya saja untuk commonName-nya harus menggunakan nama yang berbeda antar client.
Pemindahan Keys dan Certificate untuk Server dan Client OpenVPN
Setelah membuat key dan certificate, diperoleh key dan certificate yang disimpan di direktori “keys”. Pindahkan key dan certificate tersebut pada direktori /etc/openvpn. Untuk lebih jelasnya dapat dilihat tabel berikut ini.

Nama File Lokasi Pemindahan Kegunaan Rahasia
ca.crt server + client Sertifikat root CA Tidak
ca.key Server Key root CA Ya
Dh{n}.pem Server Parameter DH Tidak
Server.crt Server Sertifikat server Tidak
server.key Server Key server Ya
client1.crt Client Sertifikat client1 Tidak
client1.key Client Key client1 Ya
client2.crt Client Sertifikat client2 Tidak
client2.key Client Key client2 Ya
client3.crt Client Sertifikat client3 Tidak
client3.key Client Key client3 Ya

Untuk server OpenVPN dibutuhkan file dh1024.pem, ca.* dan server.* yang akan dipindahkan ke folder /etc/openvpn dari /etc/openvpn/keys dengan cara:
# cd /etc/openvpn/keys
# cp dh1024.pem /etc/openvpn
# cp ca.* /etc/openvpn
# cp server.* /etc/openvpn
Salin konfigurasi server.conf OpenVPN yang terdapat di folder /usr/share/doc/openvpn/examples/sample-config-files dengan cara:
# gunzip –c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf
Edit server.conf OpenVPN menggunakan editor mc:
# mcedit /etc/openvpn/server.conf
mode server
tls-server
port 5000
proto udp
dev tap
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
ifconfig 10.8.0.1 255.255.255.0
ifconfig-pool 10.8.0.2 10.8.0.11 255.255.255.0
keepalive 10 120
cipher AES-128-CBC
comp-lzo
status openvpn-status.log
verb 3
Keterangan :
  • mode server dan tls-server adalah menandakan bahwa komputer ini bertindak sebagai server pada jaringan OpenVPN.
  • port 5000 adalah port yang digunakan oleh jaringan adalah port 5000 (ini bisa diubah sesuai kebutuhan).
  • proto udp adalah protokol yang digunakan dan diproteksi adalah UDP karena digunakan untuk aplikasi VoIP. Sedangkan pada protokol TCP pada komunikasi VoIP hanya digunakan sebagai proses signaling saja jadi tidak perlu diproteksi secara khusus. Oleh karena itu digunakan protokol UDP dan digunakan port 5000. Untuk menggunakan protokol TCP tinggal mengganti proto UDP dengan proto TCP. (Keterangan: OpenVPN ini saya implementasikan ke jaringan VoIP)
  • dev tap adalah perangkat jaringan virtual yang dibuat pada saat terjadinya koneksi secara peer-to-peer pada VPN tunnel menggunakan OpenVPN. Modul yang digunakan adalah modul interface tap dan diberikan nama tap, karena model jaringan yang digunakan adalah model jaringan Ad-Hoc sehingga tidak memerlukan fasilitas routing. Sedangkan modul interface TUN digunakan apabila jaringan menggunakan model infrastruktur karena dibutuhkan fasilitas routing yang merupakan implementasi modul interface TUN.
  • ca ca.crt adalah tempat penyimpanan file CA umum (ca.crt) pada komputer server berada pada direktori /etc/openvpn/.
  • cert server.crt adalah tempat penyimpanan file sertifikat server (server.crt) pada server berada pada direktori /etc/openvpn/
  • key server.key adalah tempat penyimpanan file Key server (server.key) pada komputer server berada pada direktori /etc/openvpn/.
  • dh dh1024.pem adalah tempat penyimpanan file alogaritma Diffie-Hellman (dh1024.pem) pada komputer server berada pada direktori /etc/openvpn/.
  • cipher AES-128-CBC adalah adalah mode enkripsi yang digunakan pada jaringan Openvpn yaitu cipher AES-128-CBC.
  • ifconfig-pool 10.8.0.2 10.8.0.11 255.255.255 adalah ip pool atau range ip yang disediakan oleh server OpenVPN yaitu mulai 10.8.0.2 sampai 10.8.0.11 dengan subnet 255.255.255.0
  • keepalive 10 120 adalah memeriksa koneksi dengan cara mengirimkan data (seperti perintah ping) dengan durasi setiap 10 detik dan apabila server OpenVPN tidak merespon selama 120 detik dinyatakan client down (mati).
  • comp-lzo adalah metode kompresi data pada tunnel yang digunakan yaitu LZO ( Lempel Ziv Oberhumer). LZO sudah ter-install secara otomatis pada saat meng-install software OpenVPN.
  • status openvpn-status.log adalah file tempat menyimpan semua log hasil koneksi dari client ke server OpenVPN.
  • verb 3 adalah jenis tampilan log yang akan digunakan pada saat koneksi.

Tidak ada komentar: