Home

How VPN works (especially site2site one)

4 Comments

Well, another one of my note that left behind, I’ll make sure this one goes to my blog as well…

Gua buat catetan ini karena banyak konfigurasi yang ga ngerti pas lagi buat VPN…

ini command buat apaaa…kenapa harus adaaa…dsb dsb…

Make sure you read my basic VPN article first

———————————————————-

VPN Networking Protocol, the basic

There are 4 main protocols:

  • PPTP (Point-to-Point Tunnel Protocol), metode agar gimana caranya client/workstation bisa konek ke VPN (kek remote VPN gitu)
  • L2TP (Layer 2 Tunnel Protocol), metode agar gimana caranya Main Office Network bisa konek ke Branch Office network via ISP tapi dengan skema IP yang sama/network yang sama (contoh: main network pake IP 10.1.1.0~10.1.1.200, nah branch network tinggal make ip sisanya sampe 10.1.1.254…seakan2 nge-LAN gituh…walaupun beda wilayah)
  • IPsec (IP Security)…metode enkripsi untuk layer 3 (IP – internet Protocol)
  • SSL (Secure Socket Layer)…metode enkripsi untuk layer 4 keatas

Like I said…VPN networking protocol (Layer 3 in OSI Layer)…

The difference? I’ll explain it to you simply in one line: PPTP < L2TP < SSL < IPsec

Yang gunain PPTP rata2 adalah Microsoft Client (using Microsoft Windows Platform) and this protocol is a weak one (but easier to use and configure), link

Yang gunain L2TP rata2 adalah ISP…kelemahannya adalah Layer 3 ga dienkripsi (untuk itu biasanya digabung sama IPsec)

Yang gunain SSL adalah remote user untuk Remove VPN, user2 hanya perlu komputer yang support “HTTPS” (clientless, ga perlu install macem2, cukup browser aja)

Yang terakhir yang paling bagus adalah IPsec (RFC 4301)…jeleknya adalah settingannya aga banyak, plus harus disetting on both side of network, that’s why SSL more preferable in common user

——————————————————————

So…IPsec huh?

IPsec is quite complex (that’s why it secure…), why?

  • Because there must be some policy how to exchange and manage the key
  • Because there must be some protocol that can authenticate traffic
  • Or, there must be a protocol that CAN both encrypt and authenticate the traffic

From seeing above image, you’ll understand what I mean…

So, dalam membangun VPN terutama site2site…settingan IPsec pasti ada…

This guy itself support 2 encryption modes:

  • Transport mode: encrypt only payload (data), header ga diutak atik

ipsec-modes-transport-tunnel-3

  • Tunnel mode: default, more secure, header packet (inget…yg CCNA, PDU layer internet apa pada TCP/IP protocol?!?) juga di enkripsi

——————————————————–

Key Management, Policy, and Negotiation

Yup…we’re talking about IKE* (Internet Key Exchange)

Yang namanya VPN pasti ada tuker2an kunci (traffic VPN kan di enkripsi…cara buka-nya gimana…validasi peering VPN-nya juga gimana)

Nah, kita membahas how IKE works…

This protocol consist of 2 phase

  • Phase 1 (ISAKMP* Phase):
    • Specify gateway addresses (local ip buat VPN gateway traffic inbound dan remote ip VPN gateway traffic outbound)
    • Specify authentication…mau pake PSK* (pre-shared-key) atau mau pake Digital Certificate* (via CA*/PKI*)
    • Specify NAT-T* (NAT Traversal)
    • Specify Transform-set*
    • Phase 1 ada 2 mode:
      • Main Mode: more secure but slower…commonly used
      • Aggressive Mode: fast without encryption…biasanya klo salah satu IP Gateway ada yang dinamis, contoh:

    • All of those parameter above is called SA*

Don’t worry…I’ll explain those Terminology used in this article on the bottom chapter

  • Phase 2 (IPsec Phase):
    • Specify what traffic/network go through VPN (Access-list anyone?!?)
    • Specify the use of PFS*
    • Specify the proposal
      • authenticate and encrypt the traffic (ESP* – Encapsulating Security Payload)
      • or authenticate only (AH – Authentication Header), better performance-less secure
      • or both of them…AH and ESP (not common anymore, everyone prefers ESP now)
    • Specify Expiry Date…for Key and Session

Nah, IKE itu ada 2 versi…versi jadul yaitu IKEv1 dan versi robust and flexible one which called IKEv2

—————————————————————

IKEv1 and v2

IKEv1

  • Defined in RFC 2409
  • Use UDP port 500
  • Using “Phased” approach (ISAKMP – RFC 2408 on phase 1)

IKEv2

  • One of the document is RFC 4306 and RFC 5996
  • Same…use UDP port 500, and port 4500
  • Not backward compatible to IKEv1
  • Using Child SA instead of phase
  • Fewer exchanges data to form than IKEv1
  • Has built-in DPD*
  • Resistant to DoS attack because of cookie mechanism
  • Has built-in NAT-T
  • Can be used with EAP*

3 steps in IKEv2 exchange messages:

  • IKE_SA_INIT: tuker2 proposal SA sama peer, klo match…ke step selanjutnya (klo di IKEv1, mm-main mode alias phase 1-nya udah 4x bolak balik transaksi peering VPN)
  • IKE_AUTH & CREATE_CHILD_SA: authentikasi peers dan bikin child SA (ini kek Phase 2 di IKEv2, qm-quick mode)
    • CHILD_SA ini berguna untuk notifikasi peer mati, keepalive, authentication message, bikin key baru/rekeying dll
    • Klo ga ada child_sa, berarti balik lagi ke phase 1…repot
    • Ini artinya lebih cepet connect/reconnect-nya

IKEv2 provide better DoS prevention

Di IKE…hacker bisa ngirim SPI* (lets say peer initiation) to victim router with many spoofed IP address, hasilnya…consume CPU resources karena banyak “half open” initiation yang masuk, klo ga ada mekanisme prevention DoS…maka ketika victim router establish connection ke router peer DENGAN SPI/KEY YANG DIKASI HACKER…wassalam, ketauan semua isinya, soalnya hacker bisa generate sendiri key-nya (orang dia yang bikin) plus bisa decrypt traffic pake kunci itu

Di IKEv2, mereka pake cookies pas pertama kali peering VPN (ada semacam fingerprint lah)…jadi klo hacker ngirim SPI intended for man-in-the-middle attack…si victim router tinggal ngomong…”bener ga lu ngirim ginian?
Ke router asli-nya….karena router asli-nya punya cookie pas pertama kali peering…tinggal di cek…klo salah, di drop

Nah, di Cisco…mereka punya teknologi yang bernama FlexVPN* that relies heavily on IKEv2…

—————————————————————

Terminology

ISAKMP (Internet Security Association and Key Management Protocol): this is a framework…of protocol, kek lu mau masuk ke istana Negara…pasti ada protocol yang harus dipenuhi sebelum lu bisa masuk, nah protocol2 itu kan ga Cuma 1…pasti ada parameter2 lain yang harus dipenuhi. Kumpulan protocol2 ini di VPN dinamakan SA (security association)

Framework: i might have to explain this because I’ve used this words many times…klo protocol itu aturan, nah framework itu adalah kumpulan peraturan2

PSK (Pre-shared-key): think this as a password or key to enter a door…password being said must exactly same like password remembered by door guard (key also…must match in order to unlock the door), lawannya PSK? Digital Certificate

Digital Certificate: tired remembering all the password for site A, site B, site C, and so on…?? Or exhausted from bringing all keys in “Key-chain” to unlock all the doors?…this is the solution, it like ID Card for US…as long as You (as ID Card bearer) and Door Guard recognize the Card (who made it of course) then you ready to go…

PKI (Public Key Infrastucture): this is a framework explaining how to create digital certificate, which mentioned above

CA (Certificate Authority): ini server yang bikin digital certificate, dia yang bikin, dia juga yang verifikasi keasliannya

RA (Registration Authority): ini optional, klo lu mau CA cuma bikin sertifikat dan yang nge-cek validitasnya server lain…si RA ini untuk ngecek validitas certificate-nya

CRL (Certificate Revocation List): ini serial number-nya certificate…di dalemnya ada masa berlaku ini sertifikat (expiry date)

SCEP (Simple Certificate Enrollment Protocol): Cisco punya, kek PKI Framework-nya Cisco…simple, Cuma pake HTTP untuk ngirim dan nerima request dan sertifikat

NAT-T (NAT Traversal): NAT and IPsec is not compatible each other, NAT itu kan ganti IP…jelas akan break salah satu rules dari VPN yaitu integrity (make sure data hasn’t been changed). NAT-T ini bikin header UDP di”depan”nya IPsec…jadi yang dibaca UDP NAT-nya dulu bukan IPsec-nya…both side harus aware klo mereka pake NAT-T (bahasa mudahnya…2-2nya harus dienable NAT-T klo mau pake VPN). Workaround for NAT-T? just use IP PUBLIC on your Firewall/Gateway

SA (Security Association): men-define mau pake apa enkripsinya, integritynya (hashing), bikin key sama tuker2annya mau pake apa

  • Encryption mode: aes, des, 3des
  • Hashing mode: md5 atau sha
  • Key exchange mechanism: DH = diffie-hellman, all variant
  • Expiry date untuk key-nya

Transform Set: isinya adalah metode yang akan digunakan oleh IPsec…mau pake ESP apa AH

PFS (Perfect Forward Secrecy): ensure itu VPN peer ga make key yang sama klo mau bikin session VPN baru

ESP (Encapsulation Security Payload): defined in RFC 4303 using IP Protocol* 50, isinya bagaimana caranya kita bisa authenticate dan encrypt itu traffic lewat VPN

IP Protocol: tipe2 sub-protocol didalam IP itu sendiri, contoh: 50 – ESP, 51 – AH, 46 – RVSP buat QoS, dll…(link)

AH (Authentication Header): more fast but less secure than ESP, only authenticate header with no encryption

DPD (Dead Peer Detection): teknologi untuk memastikan VPN peering kita ga down…kek IP SLA-nya VPN lah (default di IKEv2 sudah bisa setting ginian, ga perlu konfigurasi khusus kek di IKEv1)

EAP (Extensible Authentication Protocol): sebuah framework untuk extend PPP protocol yang mengatur bagaimana caranya mengauthentikasi user (bisa pake password, AAA, LEAP-nya Cisco, EAPOL-nya ethernet LAN, dll)

SPI (Security Parameter Indexes): mekanisme identifikasi SA ke packet yang datang (besarnya 32 bit)

——————–

References:

ISAKMP – https://tools.ietf.org/html/rfc2408

IKE – https://www.ietf.org/rfc/rfc2409.txt

Security Architecture for IP – https://tools.ietf.org/html/rfc4301

IPsec – https://tools.ietf.org/html/rfc4303

IKEv2 – https://tools.ietf.org/html/rfc4306

IKEv2 Updated – https://tools.ietf.org/html/rfc5996

http://www.h-online.com/security/features/A-death-blow-for-PPTP-1716768.html

https://tools.ietf.org/html/draft-ietf-ipsec-ikev2-tutorial-01

http://www.juniper.net/documentation/en_US/junos12.3×48/topics/concept/vpn-security-ikev2-understanding.html

http://security.stackexchange.com/questions/56434/understanding-the-details-of-spi-in-ike-and-ipsec

https://supportforums.cisco.com/document/21746/what-extensible-authentication-protocol

https://en.wikipedia.org/wiki/List_of_IP_protocol_numbers

CCNP Security SIMOS powerpoint slide

Enroll Cisco ISE in PKI

Leave a comment

note: deploy CA/PKI with fully working DNS…

Biasanya klo awal2 implementasi Cisco ISE kita akan menemukan bahwa komputer kita ga percaya dengan Certificate yang diberikan oleh ISE this certificate is not trusted” klo di Firefox, analoginya kek gini: “klo gw mau buka account rekening di bank (anggeplah PC kita) tentu gw harus punya semacam kartu identitas (certificate), trus kartu identitas apa yang diakui oleh bank?? Tentunya oleh pemerintah (trusted CA)…ga mungkin kartu surat keterangan menikah lu pake buat buka rekening hahahaha… nah, berarti kita harus daftar (request CA) ke institusi yang di trusted oleh bank (yaitu pemerintah-trusted CA) untuk dibikinin KTP (valid and trusted certificate), Sedangkan untuk bikin KTP berarti harus ada data2 identitas yang harus diisi sebelum KTP itu dibuat (self-certificate), data2 identitas inilah yang kita kasi ke institusi pembuat sertifikat resmi, setelah data2 identitas ini disetujui (approved request by trusted-CA)…dibikinlah KTP Baru dah lu dengan identitas resmi lu (binding self-certificate with trusted-CA-certficate) diterima oleh bank” Begitulah cara ISE (dan semua device2 yang menggunakan PKI) bekerja Step2nya:

  1. Create PKI Server
  2. Download Certificate from PKI Server and Install it into ISE
  3. Bind ISE Certificate with CA from PKI Server
  4. Download Certificate from PKI Server and Install it into internet browser biar masuk dalam list trusted server (ga lucu kan klo gw mau bikin rekening bank pake KTP trus ditolak gara2 pembuat KTP-nya ga dikenal oleh bank wkwkwk, yang buat PEMERINTAH ENEEEH!!!)

Requirement:

========================================= Unduh Sertifikat from PKI Server (unduh?!? Wkwkw download aja kali bahasanya…) Masuk ke internet browser, ketik http://ip-nya-pki-server/certsrv (klo ga bisa diakses link-nya berarti lu belum bikin role Certificate Authority di Server), klik “download a CA certificate… Lu boleh langsung install this CA certificate klo mau langsung di install di web browser, atau mau download (gw prefer yang download), nanti hasilnya kek dibawah ini: File yang udah di download di klik 2x. Sebelum itu CA diinstall, kita bisa liat certificate information-nya…valid dari tgl brp sampe tgl brp, trus klik deh install certificate Ada beberapa folder untuk certificate, taro aja di Trusted Root Certification Authorities Klo uda silahkan di cek di web browser option (IE: Internet Option -> Content -> Certificates, Firefox: Options -> Advance tab -> Certificates -> View Certificates) Ada tuh…PKI Server bernama “CA” ============================================ (Optional) Connecting End User using Certificates Karena kita pake certificate…ada baiknya kita setting dot1x authentication di PC pake “verify the server’s identity by validating the certificate Hasilnya seperti dibawah (Authentication Failed because PC doesn’t recognize ISE certificate) So what do we do to make PC recognize ISE, the answer is in below chapter =============================================== Enroll ISE to PKI Server Masuk ke Administration -> System -> Certificates Trus klik Certificate Operations -> Certificate Store -> klik Import Masukin certificate file yang udah kita download, centang/check option “trust for client authentication or Scure Syslog services” dan klik submit ========================================= Binding ISE Certificate with CA Masuk ke Certificate Operations -> Local Certificate -> klik add -> Generate Certificate Signing Request Masukin data2 sertifikatnya (PKI server gw namanya CN=ise.domain.com, liatnya pas lo bikin CA/PKI Server pertama kali…ada informasi ini), key length dan Hashing nya, klik submit Nah, nanti di Certificate Operations -> Certificate Signing Request…ada sertifikat bernama “ise.domain.com” yang ready untuk di upload ke PKI Server untuk di “bikinin” versi “resmi”-nya Caranya?? Ya klik Export Nah, download dah itu file isedomaincom.pem Setelah itu kita akan masuk ke PKI Server kembali untuk upload itu file isedomaincom.pem Masuk ke http://ip-nya-pki-server/certsrv kembali, trus klik Request a certificate Klik advanced certificate request Copy paste informasi isedomaincom.pem kedalam text box yang disediakan oleh kolom Saved Requestl, trus klik Submit Lah, informasi-nya isedomaincom.pem-nya dapet darimana?? Oh iya… Masuk ke folder tempat lo download file isedomaincom.pem, trus klik kanan file-nya -> open with -> wordpad (gw pake notepad++…sama aja) Nah…lo blok semua kata2nya…paste ke kolom saved request yang tadi (ctrl+a trus ctrl+c aja) Setelah di submit, catet nomor Your Request Id-nya, gw nomor 8…nyok kita masuk ke PKI Server-nya Masuk ke Server Manager -> Roles -> Active Directory Certificate Services -> CA -> Pending Request, cari nomor kita Klik kanan -> all tasks -> pilih issue Masuk lagi ke alamat web tempat kita request certificate…pilih “View the status of a pending certificate… Klik “Saved-Request Certificate…” (klo lo belum issue ini pending request…tulisan saved-request ini ga ada) Download dengan option DER (Distinguished encoding Rules) Encoded trus klik download certificate (Ga usa pusing dengan apa itu DER…klo lo belajar lebih dalam tentang security terutama yang berkaitan dengan PKI Server dan X.509 baru dah lu oprek2) note: klo CA ga bisa issue gara2 di deny, mungkin lo harus liat microsoft link ini: https://technet.microsoft.com/en-us/library/dd441378(office.13).aspx Download…kasi nama yang beda (contohnya ise-certnew), sertifikat inilah yang akan dibinding ke ISE, jadi ISE akan ngomong ke PC kita dengan nama ISE yang terotorisasi PKI Server (ceritanya ISE punya KTP Resmi inih) Masuk ke Certificate Operations -> Certificate Store -> klik add Bind CA signed Certificate Masukin file yang uda kita download tadi ke ISE, jgn lupa di centang EAP dan HTTPS nya Nanti pas di submit, ada notice dari ISE klo servernya harus direstart..OK-in aja Wait a couple of minutes…then login back to ISE ==================== Verification Harusnya sih…klo gw mau ke GUI-nya ISE lewat web browser…ga ada tulisan certificate error lagi, yuk kita coba Weleh…masuk “certificate error”, pas dilihat…valid from 15 januari 2015….HAHAHAHA (gw posting ini tanggal 14 januari…so…kita tunggu besok dah) ….updated, masih error…kek-nya Certificate yang gw bikin di PKI Server-nya engga valid deh (salah domain) nih screenshotnya This Connection is untrustedthis certificate is only valid for ise.domain.com” yah…tapi klo lu bener domain dan setting CA di PKI server-nya…harusnya ga ada lagi tulisan “certificate error” nah…skrg kita tes show authen sess int fa0/2, success ga show authen sess int fa02 yup…success

Older Entries