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: 0×03
      # everything after this point is secret
      PrivateExponent: 0×1a….
      }
      [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)



  • Tulisan yg mungkin msh terkait:

    25 Komentar sejauh ini
    Ikut Komentar

    kalo bikin vpn server di winsux gmn tuw…?

    rata2 musti beli software nya yg agak mahal … :D

    [...] erver yang berada di luar jaringan perusahaan, masih ada alternatif lain seperti teknologi VPN seperti L2TP atau PPTP. Atau cukup dengan memasang daemon SSH atau [...]

    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…

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

    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

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

    ./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 ?

    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

    ada ym gak bro, susah bener jelasinnya

    [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 ?

    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

    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 :">

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

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

    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

    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.

    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..

    ikutin aja contoh yg di sini ;)

    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..

    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

    kayaknya sih ada di doc nya openvpn … tp gw sendiri belum pernah coba :D jd mangap ya ;))

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

    lengkap banget…mantap dan terinci dengan jelas…thanks

    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.



    Ikutan Komentar
    Tag HTML yg dibolehin: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

    (wajib diisi)

    (wajib diisi)


    Halaman: