S0t4's Blog

Hanya Catatan dan Mencoba Untuk Berbagi

Thursday, January 28, 2010

Beberapa Cara Buat Server VPN di Linux

  Blogger Sejati       Thursday, January 28, 2010
Ada beberapa cara membangun koneksi VPN, antara lain (yg populer):

1. PPTP – http://poptop.sourceforge.net/
2. L2TP over IPSec – http://l2tpd.snapgear.org/
3. IPSec – http://openswan.org
4. SSL – http://openvpn.org

Penjelaskan satu per satu cara membuatnya:


1. PPTP
# Download & install source / install dr RPM
# Hal selanjutnya, edit file /etc/pptp.conf
option /etc/ppp/options.pptpd
localip [IP_interface_lokal_yg_konek_ke_LAN]
remoteip [range_IP_buatan_utk_alokasi_client_contoh:192.168.0.101-103]
# Edit file /etc/ppp/options.pptpd

lock
nopcomp
noauth
debug
defaultroute
name pptpd
proxyarp
asyncmap 0
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe
lcp-echo-failure 30
lcp-echo-interval 5
ipcp-accept-local
ipcp-accept-remote
allow-ip [ip_remote_yg_boleh mengakses]

ms-dns [dns_server_lokal_network_yg_diakses]
ms-wins [wins_server_lokal_network_yg_diakses]

proxyarp
debug
dump
lock
nobsdcomp

logfile /var/log/pptp.log

# Buka Firewall untuk TCP port 1723 dan PROTO GRE

-A INPUT -i eth0 -p tcp --dport 1723 -j ACCEPT
-A INPUT -p gre -j ACCEPT

Berdasarkan artikel yang aku baca, gunakan authentikasi EAP-TLS (pengganti MSCHAP2), katanya ini yg lebih baik … tp belum sempet ditest apakah PPTP Client yg standard di Windows en MacOS X support.

atau bisa juga (yang aku sudah berhasil lakukan sendiri):
1. Edit /etc/pptpd.conf seperti diatas
2. Edit /etc/ppp/options.pptpd, isi :
name pptpd
ipparam PoPTop
refuse-pap
asyncmap 0
crtscts
multilink
proxyarp
deflate 0
auth
require-chap
require-mschap
require-mschap-v2
lock
nobsdcomp
novj
novjccomp
nologfd
ipcp-accept-local
ipcp-accept-remote
nopcomp
noaccomp

3. Tambah di /etc/ppp/chap-secrets
[username] pptpd [password] "*"

Pada client VPN isi username dan password sama dengan yang diisi di chap-secrets


2. IPSEC

IPSec di Linux sebenarnya dipelopori oleh software FreeSWAN, namun FreeSWAN sudah tidak diteruskan lagi oleh pengembangnya, tapi versi 2.06 cukup handal bisa dipasang di kernel 2.4 dan 2.6.
Ada 2 group yg meneruskan development dari FreeSWAN :
# OpenSWAN – http://openswan.org
# StrongSWAN – http://strongswan.org
OpenSWAN lebih populer dari StrongSWAN, dan berdasarkan pengalaman pribadi … OpenSWAN lebih fleksibel dibanding StrongSWAN, ada beberapa arsitektur VPN yang sedikit lebih rumit dikonfigurasi di StrongSWAN. Kelebihan lainnya, OpenSWAN sudah dibikin RPM nya utk Fedora .. hehehehehee ;))

Cara nginstall :

1. Download n Install dari Source atau Install dari RPM (yum)
2. edit /etc/ipsec.conf

version 2.0
config setup
interfaces=%defaultroute
klipsdebug=none
plutodebug=none
nat_traversal=yes


—> baris version ini perlu ada dan sesuai dengan versi freeswan yang digunakan.
—> nat_traversal utk memungkinkan koneksi dari IP Private (NAT)
3. Tambahkan di ipsec.conf

conn vpn-ipsec
authby=secret
pfs=no
left=[ip_client/format_laen_contoh_%any]
right=[ip_interface_yg_dikonek_oleh_client/format_laen]
rightsubnet=[network_address_network_lokal]/[subnet_contoh_24]
auto=add
keyingtries=0

—-> right atau left boleh dibolak-balik, rightsubnet tidak perlu ditulis kalo konfigurasi VPN yang dilakukan adalah HOST-to-HOST, rightsubnet hanya diperlukan untuk HOST-to-NETWORK.
—-> authby=secret, kl mau otentikasi dengan Pre-Shared Key (semacam password). Bisa juga dengan Certificate … authby=rsasig
4. Buat file /etc/ipsec.secrets untuk menyimpan presharedkey atau certificate
Contoh:

: PSK "[ketik_di_sini_utk_passwordnya]"
: RSA {
# RSA 2192 bits terowongan.1rstwap.com Tue Aug 2 18:56:23 2005
# for signatures only, UNSAFE FOR ENCRYPTION
#pubkey=0sAQ......
Modulus: 0xa0........
PublicExponent: 0x03
# everything after this point is secret
PrivateExponent: 0x1a....
}
[ip_client] [ip_server]: PSK "[ketik_di_sini_utk_passwordnya]"
5. Buka Firewall untuk UDP port 500 dan PROTO ESP
Contoh:

-A INPUT -i eth0 -p udp --dport 500 -j ACCEPT
-A INPUT -p esp -j ACCEPT

3. L2TP via IPSec

Sayang banget, proyek pengembangan server L2TP utk Linux juga sudah berhenti, tp masih ada yg bikin mirrornya … http://l2tpd.snapgear.org

1. Pertama kita perlu install dulu IPSEC nya, dan pasang konfigurasi seperti ini :
Untuk Client Win98/XP yg belum update SP2/MacOS X

conn vpn-l2tp-ipsec
authby=secret
pfs=no
left=[ip_client/format_laen_contoh_%any]
leftprotoport=17/0
right=[ip_interface_yg_dikonek_oleh_client/format_laen]
rightprotoport=17/1701
rightsubnet=[network_address_network_lokal]/[subnet_contoh_24]
auto=add
keyingtries=0

Untuk Client XP SP2

conn vpn-l2tp-ipsec
authby=secret
pfs=no
left=[ip_client/format_laen_contoh_%any]
leftprotoport=17/1701
right=[ip_interface_yg_dikonek_oleh_client/format_laen]
rightprotoport=17/1701
rightsubnet=[network_address_network_lokal]/[subnet_contoh_24]
auto=add
keyingtries=0

—> Perhatikan baris lefprotoport dan rightprotoport. Itu yg membedakan dengan konfigurasi IPSEC (tanpa L2TP dan L2TP utk XP/MacOSX dengan L2TP utk XP SP2).
2. Install L2TPD
3. Edit file /etc/l2tpd/l2tpd.conf

[global]
port = 1701

[lns default]
ip range = [alokasi_range_ip_utk_client_contoh:_192.168.2.1-192.168.2.100]
local ip = [ip_lokal_utk_konek_ke_LAN]
require chap = yes
refuse pap = yes
require authentication = yes
name = [nama_VPN_bebas]
ppp debug = yes
pppoptfile = /etc/ppp/options.l2tpd
length bit = yes
4. Edit / Bikin file /etc/ppp/options.l2tpd

ms-dns [dns_server_di_LAN]
ms-wins [wins_server_di_LAN]
require-mschap-v2

ipcp-accept-local
ipcp-accept-remote
auth
crtscts
idle 1800
mtu 1400
mru 1400
nodefaultroute
nodetach
debug
lock
connect-delay 5000
dump
logfd 2
logfile /var/log/l2tpd.log

allow-ip [ip_client_yg_boleh_pake_l2tp]
5. Sekarang tinggal buka Firewall nya, TCP port 1701 dan UDP port 500 dan PROTO ESP.
Contoh:

-A INPUT -i eth0 -p tcp --dport 1701 -j ACCEPT
-A INPUT -i eth0 -p udp --dport 500 -j ACCEPT
-A INPUT -p esp -j ACCEPT

4. OpenVPN (SSL)

1. Download source nya dari http://openvpn.org (mending dari source aja, krn dilengkapin ama script2 buat generate certificatenya, biar gampang)
2. Setelah kelar make dan make install, masuk ke direktori source “easy-rsa”, jalankan :

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="DKI Jakarta"
export KEY_CITY="Jakarta Selatan"
export KEY_ORG="[nama_pt]"
export KEY_EMAIL="dicky.wahyu@gmail.com"
export KEY_COMMON="[namalengkap/FQDN_host_yg_dipasangin_vpn]"
3. Copy openssl.cnf dr dir easy-rsa ke /etc/openvpn
4. Setelah itu jalankan script “./clean-all” dr direktori “easy-rsa”
5. Jalankan “./build-ca”
6. Jalankan “./build-key-server server”
7. Jalankan “./build-key client” dan teruskan jalankan “./build-key client2″ dst, tergantung jumlah client yg dibolehkan mengakses.
8. Jalankan “./build-dh”, waktu menjalankan perintah ini, bisa sangat lama sekali … tergantung komputer dan panjang byte dr key (ada di vars)
9. Kl udah semua, skrg musti bikin /etc/openvpn/server.conf

port [tcp/udp_port_utk_tunnel_contoh:1234]
proto [udp/tcp]
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh1024.pem
server [network&subnet_utk_alokasi_ip_address_utk_client_contoh:192.168.0.0_255.255.255.0]
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 2
dev tun
push "[routing_IP_LAN_yang_akan_dipasang_di_client_contoh:_route_202.155.0.0_255.255.255.0]"
keepalive 10 120
comp-lzo
10. Di sisi client, perlu meng-copy file “ca.crt”, “client.key”, “client.crt” yang sudah digenerate tadi.

Ada beberapa catatan tentang Openvpn ini:
# Openvpn ini agak memiliki kelemahan untuk tunneling bandwidth besar, sepertinya overhead untuk enkripsinya sangat besar sekali, yg menyebabkan beberapa point berikutnya.
# Usahakan sebisa mungkin untuk menggunakan LZO (untuk kompresi data)
# Gunakan UDP (jangan TCP, krn biasanya TCP akan bermasalah dengan Queue Data apalagi kl tanpa LZO)
# Saat melewatkan data yg besar, shg menyebabkan enkripsi bekerja keras … efeknya seakan2 koneksi terganggu seperti terputus / lag.

Melihat beberapa alternatif yang sudah pernah dicoba, kesimpulan sementara mengenai metode VPN yg cukup meyakinkan adalah: L2TP over IPSec… perlindungan ganda, dari L2TP dan IPSec nya … paling rumit tapi jaminan keamanan lebih terjamin. Semuanya tetep tergantung dari yg nginstallin ;))

PPTP merupakan alternatif paling mudah dan paling universal, tetapi mengenai enkripsi MS-CHAPv2 masih sedikit meragukan tentang keamanannya, aku pernah baca bahwa enkripsi ini “bisa” dihack. Sedangkan EAP sendiri, aku msh belum ngerti kemungkinannya. (maklum rada baru soal ginian, sejauh ini banyak yg bilang PEAP-MSCHAPv2 … jd bingung, lg googling)

OpenVPN cukup secure, tp kayaknya kurang applicable utk hal2 yg mengharapkan performansi yg tinggi.

Semoga membantu ;-)

List VPN Client:
Windows 98 : MS DUN 1.4 (PPTP), MSL2TP, Cisco VPN Client, OpenVPN client
Windows XP : Builtin VPN Client (PPTP & L2TP), OpenVPN client
MacOS X : Builtin VPN Client (PPTP & L2TP), IP Securitas (IPSec), TunnelBlick (OpenVPN)

catatan dari : dicky.wahyupurnomo.com
Thnks
logoblog

Thanks for reading Beberapa Cara Buat Server VPN di Linux

Previous
« Prev Post

No comments: