Friday, 13 March 2015

IPsec Over MPLS VPN Howto

Pertama kali denger IPsec over MPLS VPN itu kaget, iya karena sebelumnya belum pernah sama sekali tau tentang IPsec, dan besoknya harus udah implementasi di costumer. untuk MPLS VPN ga masalah karena kita di sisi user kan tinggal konfig Static aja, tapi untuk IPsec ini ga kebayang rumitnya kaya gimana. googling sana sini dan ga ketemu dokumentasi yang memuaskan, kebanyakan malah bahas teori padahal saya harus udah bikin test Lab nya malem itu. 
Bersyukur banget dikasih workbook CCIE Security nya Micronics dari Mas Momon, Nah disitu baru ngeh ternyata IPsec itu "Simple", cuma verifikasi nya aja yang harus di perhatiin.

Nah disini kita akan menggabungkan MPLS VPN dengan IPsec, IPsec itu digunakan untuk memproteksi trafik pada VPN yang dilewatkan melalui jaringan public dalam hal ini jaringan provider MPLS, biasanya untuk melindungi trafik yang sensitif misalkan transaksi perbankan.

teruss kenapa kita perlu IPsec? bagaimana IPsec melindungi traffik yang dikirimkan?  

Oke berikut ini 4 proteksi yang mampu di lakukan oleh IPsec : 

Integrity, IPsec menjamin data yang diterima tidak mengalami perubahan saat pengiriman. caranya dengan menandai setiap paket yang dikirimkan dengan chryptographic checksum, yang kemudian akan diverifikasi oleh penemerima.

Confidentiallity, IPsec menjamin data hanya bisa dibaca oleh penerima yang semestinya, caranya dengan melakukan enkripsi pada data sebelum dikirimkan. 

Authentication, kalau yang ini digunakan untuk menjamin data yang diterima berasal dari perangkat yang sah. caranya dengan mencocokkan message auntentication pada kedua IPsec Peers. 

Anti-Replay, menjamin ke unik -an setiap packet. hal ini untuk menghindari packet di intercept kemudian digunakan kembali untuk mendapatkan akses ke resource oleh pihak lain.


Oke sekarang mari kita lanjut ke Lab, Topologi berikut ini menggambarkan Koneksi antara kantor pusat SAP Corp. dengan cabang SAP Corp. melalui MPLS VPN. Misal providernya kita pakai Telkom, jadi nanti IPsec kita konfigurasikan setelah MPLS VPN dari telkom aktif. Untuk konfigurasi yang kita lakukan adalah Konfigurasi kedua Router CE agar server di Branch bisa Ping ke Server HQ. Konfigurasi IPsec untuk memproteksi trafik dari 192.168.100.10 ke 192.168.50.10 - 14. 


Konfigurasi yang kita gunakan disini adalah Basic Site To Site IPsec Main Mode, nah mungkin ada yang bertanya gini "Kenapa ga pake tunnel GRE?", karena keperluan kita cuma koneksi antar server aja, dan disini menggunakan Static routing. sedangkan GRE tunnel dibutuhkan apabila trafik yang akan di proteksi IPsec berupa multicast atau broadcast misal kita pakai IGP seperti EIGRP atau OSPF. 
   
Untuk router yang digunakan biasanya 1900 ISR series. Berikut ini langkah setup IPsec yang kita lakukan :

Step 1: VPN Connection
Konfigurasi Router CE untuk koneksi VPN menggunakan static routing agar kedua network di kantor cabang dan pusat saling terhubung.
SAP_BRANCH(config)#ip route 192.168.0.5 255.255.255.255 192.168.0.2
SAP_BRANCH(config)#ip route 192.168.50.10 255.255.255.255 192.168.0.2
SAP_BRANCH(config)#ip route 192.168.50.11 255.255.255.255 192.168.0.2
SAP_BRANCH(config)#ip route 192.168.50.12 255.255.255.255 192.168.0.2
SAP_BRANCH(config)#ip route 192.168.50.13 255.255.255.255 192.168.0.2
SAP_BRANCH(config)#ip route 192.168.50.14 255.255.255.255 192.168.0.2

Step 2: IPsec Configuration
IPsec bisa disebut tunnel inside tunnel, karena di IPsec terdapat dua Phase, IKE phase 1 atau disebut ISAKMP yang digunakan untuk memproteksi negosiasi tunnel IKE phase 2 didalamnya, dan IKE phase 2 ini lah yang memproteksi trafik data.

Beberapa hal yang perlu diperhatikan ketika konfigurasi IPSec adalah Parameter dan Interesting trafik nya. Berikut ini contoh parameter IPsec yang akan dikonfigurasikan, parameter ini harus sama di kedua sisi.

ISAKMP                                                              
IPSec                                                                    
Authentication : Pre Shared
Encryption : ESP-3DES
Encryption : 3DES
Hash : MD5
Hash : MD5
Proxy ID : 192.168.0.1 – 192.168.0.5
DH Group : 2

PSK : ciscosap123


Trafik yang akan dimasukan ke tunnel IPSec atau disebut "Interesting Traffic"

192.168.100.10 - 192.168.50.10 s/d 192.168.50.14 ( Server )
192.168.0.1 - 192.168.0.5  ( Pengetesan )

SAP_BRANCH(config)#crypto isakmp policy 1
SAP_BRANCH(config-isakmp)#encr 3des
SAP_BRANCH(config-isakmp)#hash md5
SAP_BRANCH(config-isakmp)#authentication pre-share
SAP_BRANCH(config-isakmp)#group 2 
SAP_BRANCH(config-isakmp)#crypto isakmp key ciscosap123 address 192.168.0.5 
SAP_BRANCH(config)#crypto ipsec transform-set 3desmd5 esp-3des esp-md5-hmac 
SAP_BRANCH(cfg-crypto-trans)#crypto map VPN 1 ipsec-isakmp
SAP_BRANCH(config-crypto-map)#set peer 192.168.0.5
SAP_BRANCH(config-crypto-map)#set transform-set 3desmd5
SAP_BRANCH(config-crypto-map)#match address sapcorp 
SAP_BRANCH(config-crypto-map)#interface eth0/1
SAP_BRANCH(config-if)#crypto map VPN 
SAP_BRANCH(config-if)#ip access-list extended sapcorp
SAP_BRANCH(config-ext-nacl)#remark * sap branch to hQ *
SAP_BRANCH(config-ext-nacl)#permit ip host 192.168.100.10 host 192.168.50.10
SAP_BRANCH(config-ext-nacl)#permit ip host 192.168.100.10 host 192.168.50.11
SAP_BRANCH(config-ext-nacl)#permit ip host 192.168.100.10 host 192.168.50.12
SAP_BRANCH(config-ext-nacl)#permit ip host 192.168.100.10 host 192.168.50.13
SAP_BRANCH(config-ext-nacl)#permit ip host 192.168.100.10 host 192.168.50.14
SAP_BRANCH(config-ext-nacl)#remark * IPSec Test *
SAP_BRANCH(config-ext-nacl)#permit icmp host 192.168.0.1 host 192.168.0.5

Step 3: Verifikasi IPSec
Setelah Tunnel IPSec kita konfigurasikan, bisa kita lakukan verifikasi dengan menggunakan command berikut .
SAP_BRANCH#show crypto isakmp sa
IPv4 Crypto ISAKMP SA
dst                    src                   state                     conn-id      status
192.168.0.5     192.168.0.1     QM_IDLE           1001          ACTIVE
IPv6 Crypto ISAKMP SA
terlihat status dari tunnel, QM_IDLE menunjukan Quick Mode (Phase 2) berhasil. Untuk melihat lebih detail proses negosiasi IPSec Phase 1 dan Phase 2 bisa dengan melakukan debug "debug crypto isakmp" dan "debug crypto ipsec".

SAP_BRANCH#show crypto ipsec sa
interface: Ethernet0/1
  Crypto map tag: VPN, local addr 192.168.0.1
protected vrf: (none)
local  ident (addr/mask/prot/port): (192.168.0.1/255.255.255.255/1/0)
remote ident (addr/mask/prot/port): (192.168.0.5/255.255.255.255/1/0)
current_peer 192.168.0.5 port 500
   PERMIT, flags={origin_is_acl,}
  #pkts encaps: 14, #pkts encrypt: 14, #pkts digest: 14
  #pkts decaps: 14, #pkts decrypt: 14, #pkts verify: 14
  #pkts compressed: 0, #pkts decompressed: 0
--More--
berikutnya kita bisa melihat lebih detail source dan destination dari interesting traffic. Output command ini cukup panjang karena setiap prefix yang dimasukan tunnel IPSec dijelaskan dengan detail. 
SAP_BRANCH#show crypto sessionCrypto session current status
Interface: Ethernet0/1
Session status: UP-ACTIVE
Peer: 192.168.0.5 port 500
  Session ID: 0
  IKEv1 SA: local 192.168.0.1/500 remote 192.168.0.5/500 Active
  IPSEC FLOW: permit 1 host 192.168.0.1 host 192.168.0.5
        Active SAs: 2, origin: crypto map
  IPSEC FLOW: permit ip host 192.168.100.10 host 192.168.50.12
        Active SAs: 0, origin: crypto map
  IPSEC FLOW: permit ip host 192.168.100.10 host 192.168.50.13
        Active SAs: 0, origin: crypto map
  IPSEC FLOW: permit ip host 192.168.100.10 host 192.168.50.14
        Active SAs: 0, origin: crypto map
  IPSEC FLOW: permit ip host 192.168.100.10 host 192.168.50.10
        Active SAs: 2, origin: crypto map
  IPSEC FLOW: permit ip host 192.168.100.10 host 192.168.50.11
        Active SAs: 0, origin: crypto map
yang terahir ini paling sering saya gunakan, karena outputnya cukup mudah untuk dilihat dan informasi yang ditampilkan jelas.

saya sarankan temen-temen untuk nyoba njalanin debug nya biar kita tau proses tunnel IPSec, ada IKE Phase 1 message 1 sampai dengan 6, kemudian IKE Phase 2 message 1 sampai 3. apabila ada masalah nanti kelihatan disitu.

Oke pembahasan IPsec kita cukupkan sampai disini ya, ilmu newbie cuma di kulitnya jadi cuma bisa nulis segini doang. lagian kebanyaken teori nanti malah jadi bingung. terimakasih semua, Keep Sharing ya ^.^