Bikin VPN Server di Linux

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

Aku akan coba jelaskan 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.

  • 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)

  • 37 Comments Add yours

    1. rendy says:

      kalo bikin vpn server di winsux gmn tuw…?

    2. massaint says:

      rata2 musti beli software nya yg agak mahal …😀

    3. gandulbosok says:

      Kang Bisa nggak kang, mohon banget minta dokumentasinya di atach ke e-mailku,
      maaf banget kang soalnya saya baru belajar linux dan ada tugas suruh mbuat vPN server.

      Selebihnya makasih…

    4. massaint says:

      http://www.openswan.org/docs/
      di sini udah cukup lengkap dan jelas koq …

    5. wawan says:

      halo,

      saya ada masalah nih dgn vpn server (Poptop), RH 8, pppd version 2.4.3
      Setiap kali connect, langsung putus ..
      di log messages :

      Feb 9 16:35:12 gs pptpd[24256]: CTRL: Ignored a SET LINK INFO packet with real ACCMs!
      Feb 9 16:35:12 gs pppd[24260]: MPPE 128-bit stateless compression enabled
      Feb 9 16:35:15 gs pppd[24260]: Cannot determine ethernet address for proxy ARP
      Feb 9 16:35:15 gs pppd[24260]: local IP address 172.16.54.254
      Feb 9 16:35:15 gs pppd[24260]: remote IP address 172.16.54.1
      Feb 9 16:35:17 gs pptpd[24256]: GRE: read(fd=7,buffer=8056b40,len=8260) from network failed: status = -1 error = Message too long
      Feb 9 16:35:17 gs pptpd[24256]: CTRL: GRE read or PTY write failed (gre,pty)=(7,6)
      Feb 9 16:35:17 gs pppd[24260]: Modem hangup
      Feb 9 16:35:17 gs pppd[24260]: Connect time 0.1 minutes.
      Feb 9 16:35:17 gs pppd[24260]: Sent 1728 bytes, received 975 bytes.
      Feb 9 16:35:17 gs pppd[24260]: MPPE disabled
      Feb 9 16:35:17 gs pppd[24260]: Connection terminated.
      Feb 9 16:35:17 gs /etc/hotplug/net.agent: NET unregister event not supported
      Feb 9 16:35:17 gs pppd[24260]: Exit.

      kira2 yg salah apa yah, tolong dong

      trims

    6. massaint says:

      kernelnya support GRE gak ya ?
      ato koneksi nya dari IP masquaraded/NAT … ?

    7. vpn says:

      ./build-ca
      Using configuration from $/usr/share/ssl/openssl.cnf
      error on line 134536644 of $/usr/share/ssl/openssl.cnf
      7900:error:02001002:system library:fopen:No such file or directory:bss_file.c:104:fopen(‘$/usr/share/ssl/openssl.cnf’,’rb’)
      7900:error:2006D002:BIO routines:BIO_new_file:system lib:bss_file.c:106:
      7900:error:0E064002:configuration file routines:CONF_load:system lib:conf_lib.c:91:

      yang salah dimana sih ?

    8. gakngerti says:

      sebenernya anda install di folder apa ? lalu configurasi anda seperti apa padasaat ./configure , saya agak bingung dan pada ./configure –help banyak option yang bisa dipakai…

      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]”

      Copy openssl.cnf dr dir easy-rsa ke /etc/openvpn

      Pada saat di ./clean-all direktory keys gak ada, /etc/openvpn

    9. jimz says:

      ada ym gak bro, susah bener jelasinnya

    10. newbie says:

      [root@proxy easy-rsa]# ./build-ca
      Using configuration from /etc/openvpn/openssl.cnf
      error on line 120 of /etc/openvpn/openssl.cnf
      13706:error:0E065068:configuration file routines:STR_COPY:variable has no value:conf_def.c:594:line 120

      ini kenapa yah ?

    11. massaint says:

      Pertanyaan

      ./build-ca
      Using configuration from $/usr/share/ssl/openssl.cnf
      error on line 134536644 of $/usr/share/ssl/openssl.cnf
      7900:error:02001002:system library:fopen:No such file or directory:bss_file.c:104:fopen(’$/usr/share/ssl/openssl.cnf’,’rb’)
      —————
      Jawaban … coba liat file openssl.cnf line 134536644

    12. massaint says:

      btw … gak nyesel tuh pilih OpenVPN ? Lemot banget, man! ;))
      Emang bikin CA itu paling ribet, kayaknya script nya dari dia ada yg ngaco … dulu lupa musti ngapain dulu heheheheheh :”>

    13. dikaa says:

      software/install vpn ipsec gimana?? nama softwarenya apa??

    14. massaint says:

      Kan udah disebut di tulisan ku, ipsec bisa pake openswan/freeswan, url nya jg udah ada kan😉

    15. edy says:

      saya baru belajar menggunakan linux dan ada tugas bikin vpn yang saya gunakan adalah fedora core 4, didalamnya kan udah diistall openswan gimana cara nyyeting biar bisa berfungsi sebagai vpn server dan bagaimana settingan pada client? jika berkenan tolong dikirim dokumentasinya ke mail saya, selebihnya terima kasih

    16. massaint says:

      coba ke situs nya deh http://openswan.org.

      utk mempermudah installasi, hindari NAT/IP Masq.

      tinggal ikuti contoh config yg ada, saya usulkan utk ambil yg pake pre-shared key.

    17. ngurah says:

      pagi..
      bang ak mau minta tolong supaya dikirimin cara konfigurasi server dan client VPN dengan openswan pada FC4, saya bingung banget baca yang di http://openswan.org..
      makasi sebelumnya..

    18. massaint says:

      ikutin aja contoh yg di sini😉

    19. ngurah says:

      pagi maap bang saya terlalu rewel..
      bisa ga saya dikasi contoh konfigurasi untuk ipsec.conf dan ipsec.secrets lengkap dengan contoh ipnya jika digunakan untuk koneksi antar dua lan yang berbeda..
      makasi sebelumnya..

    20. ian says:

      mas, punya rancangan flow chart dr VPN L2tp+IPsec yg dikau tulis d atas???
      sy kurang faham alur kerja dr masing2 protokol itu secara mendalam.ini berkenaan dg TA sy:).
      kl ada referensi situs ato buku yg bs menjelaskan flowchart ttg VPN L2TP via IPsec, harap sy d khabari ya…mksh byk. salam -ian-

    21. anto says:

      met kenal, pak..
      langsung nanya ya..?🙂
      Kalo pd openvpn yg sudah ada dg 2 client existing, bagaimana cara bikin (next clients) key & certificate untuk client ke 3 dst?

      Mohon pencerahan, terima kasih.
      salam,
      Anto

    22. anto says:

      met kenal, pak..
      langsung nanya ya..?🙂
      Kalo pd openvpn yg sudah ada dg 2 client existing, bagaimana cara bikin (next clients) key & certificate untuk client ke 3 dst?

      Mohon pencerahan, terima kasih.
      salam,
      Anto

    23. kayaknya sih ada di doc nya openvpn … tp gw sendiri belum pernah coba😀 jd mangap ya ;))

    24. kayaknya sih ada di doc nya openvpn … tp gw sendiri belum pernah coba😀 jd mangap ya ;))

    25. iwan says:

      halo mas diky bisa minta penjelasan,,,urutan langkah langkah pembutan VPN server. trus yg diperlukan untuk membuat VPN server apa ja ?apa L2tp , pptp , ipsec itu diistalkan semu di linux..
      mohon pencerahan…ke alamat email..

    26. tbob says:

      saya ingin tahu, apakah ada linux yang bisa menjalankan file ASP seperti IIS di windows.
      terimakasih

    27. tbob says:

      saya ingin tahu, apakah ada linux yang bisa menjalankan file ASP seperti IIS di windows.
      terimakasih

    28. evida says:

      lengkap banget…mantap dan terinci dengan jelas…thanks

    29. evida says:

      lengkap banget…mantap dan terinci dengan jelas…thanks

    30. danny says:

      macam mana nak configure strongswan jika kalau install kat ubuntu 8.04 server edition..

      cam mana nak create connection antara client dengan server VPN..

      lg satu apa configuration file untuk server ubuntu hardy….

    31. widi says:

      Ass.wr.wb
      Salam kenal…
      Begini Mas, saya rencananya mau coba implementasi pptp server di kampus pke ubuntu ,tapi saya masih bingung harus ngapain setelah konfigurasi pptpnya selesai.
      Trus untuk sistem pembagian IP secara dinamis oleh vpn server perlu setting dhcp server g? atau dah otomatis disetting pada saat kita konfigurasi pptpd-optionnya?
      Sebenarnya apa aja sih yang harus saya persiapkan sebelum melakukan proses implementasi vpn server ini?
      o y satu lagi, untuk sistem administrasi pptp server yang menggunakan freeradius gm caranya? (denger2 sih klo pke itu bisa lebih mudah diakses dari sourcenya).
      mohon penjelasannya y mas makasih sebelumnya.

    32. arif rahman says:

      mas saya mo tanya donk? blh?
      gni mas, saya mau mmbangun jaringan vpn, truz kira2 ap saja ya mas yg saya bth kan soalnya saya orng awam di bidang ini.

      mksh ya mas…!

    33. buat widi: sorry nih gak bisa jawab … dah rada lama gak maenan soal vpn ;))

      buat arif: anda harus mulai dari belajar linux dan jaringan kl memang benar2 awam. kl udah menguasai linux en jaringan, pasti baca artikel ini udah cukup jelas😉

    34. emi says:

      salam kenal mas…
      saya uda buat ssl server dan client
      tapi pas ngejalanin di client ada tulisan:
      WARNING: NO SERVER CERTIFICATE VERIFICATION METHOD HAS BEEN ENABLED

      tapi klo dicek diwireshark… uda ada tulisan openvpn…

    Leave a Reply

    Fill in your details below or click an icon to log in:

    WordPress.com Logo

    You are commenting using your WordPress.com account. Log Out / Change )

    Twitter picture

    You are commenting using your Twitter account. Log Out / Change )

    Facebook photo

    You are commenting using your Facebook account. Log Out / Change )

    Google+ photo

    You are commenting using your Google+ account. Log Out / Change )

    Connecting to %s