Difference between revisions of "IPv6 Enkripsi: Automatic key exchange (IKE)"

From OnnoWiki
Jump to navigation Jump to search
 
Line 175: Line 175:
  
 
==Restart ipsec & racoon==
 
==Restart ipsec & racoon==
 +
 +
Untuk mengaktifkan ipsec & racoon agar komunikasi akan di enkripsi cukup me-restart
  
 
  /etc/init.d/setkey restart
 
  /etc/init.d/setkey restart
 
  /etc/init.d/racoon restart
 
  /etc/init.d/racoon restart
  
setkey akan mengaktifkan ipsec, sehingga komunikasi akan di enkapsulasi.
+
setkey akan mengaktifkan ipsec, sehingga komunikasi akan di enkripsi. Tentunya dengan syarat semua konfigurasi dilakukan dengan benar.
  
 
==Contoh Konfigurasi SPD==
 
==Contoh Konfigurasi SPD==

Latest revision as of 08:52, 9 March 2019

Jika anda ingin menggunakan IPsec untuk berkomunikasi dengan seseorang, Hal ini diperlukan untuk membentuk Security Association (IPsec-SA) antara Anda dan rekan sebelum itu. Ada dua cara untuk membangun itu. Salah satunya adalah dengan menggunakan konfigurasi manual. Cara lain adalah automatis konfigurasi. Dalam contoh berikut ini, kita akan menggunakan “racoon” untuk melakukan konfigurasi secara automatis.

Beberapa parameter (Key) harus dipertukarkan antara anda dan rekan untuk membangun IPsec-SA. Racoon pertukaran mereka dengan menggunakan IKE. IKE membangun SA sendiri sendiri sambil bertukar Key, jangan menggunakan IPsec-SA. Ada dua fase dalam IKE. Salah satu fase untuk membangun SA untuk komunikasi sendiri (IKE-SA). Fase yang lain untuk membangun Ipsec-SA. Disini kita menyebutnya, Tahap 1 dan Tahap 2 . Inisiator untuk memulai IKE mengusulkan beberapa parameter untuk responden, dan pilihan responden salah satu dari mereka atau menolak mereka di setiap tahap. Juga racoon memiliki beberapa parameter untuk pengelolaan dari proses pertukaran. Oleh karenanya, ada banyak banyak item untuk mengkonfigurasi racoon.

Hal ini tidak mudah bagi pengguna umum untuk memahami semuanya. Dokumen ini menjelaskan cara mengkonfigurasi racoon singkat. Konfigurasi kompleks tidak dijelaskan. Juga untuk menggunakan sertifikat dari lingkup dalam dokumen ini.

IPsec membutuhkan pertukaran kunci rahasia. Hal ini dilakukan secara automatis oleh daemon IKE (IPSec Key Exchange). IKE juga menangani authentikasi peer, baik melalui kunci rahasia yang di ketahui bersama (biasa di sebut “pre-shared secret”) atau melalui kunci RSA (yang dapat digunakan dari sertifikat X.509).

Pada kesempatan ini, kita akan mencoba untuk menggunakan ipsec-tools di Ubuntu sebagai contoh. Ujicoba akan dilakukan untuk membangun sambungan terenkripsi antara dua node dengan IPv6 address, yaitu:

  • Host A IPv6 2345::1
  • Host B IPv6 2345::2


Mekanisme Dasar IPsec

Kernel mempertahankan dua database untuk menggunakan IPsec. Salah satunya adalah Security Policy Database (SPD). Kernel mengacu SPD dalam rangka untuk memutuskan apakah akan menerapkan IPsec untuk paket atau tidak. Juga entri SPD menentukan / bagaimana IPsec-SA diterapkan. Satu lagi adalah Security Association Database (SAD). Entri SAD mengandung Key setiap IPsec-SA.

Gambar berikut menentukan aliran sampai kernel memberlakukan IPsec-SA untuk paket.

Ipsec.jpg

Proses yang terjadi pada saat membangun sambungan menggunakan IKE (IPsec Key Exchange) adalah sebagai berikut:

  1. Administrator set policy ke SPD menggunakan setkey.
  2. Kernel mengacu pada SPD untuk mengambil keputusan untuk menjalankan IPsec pada sebuah packet.
  3. Jika IPsec diperlukan, kernel akan mengambilKey untuk IPsec-SA dari SAD.
  4. Jika gagal, kernel akan mengirim permohonan untuk mengambil Key ke racoon.
  5. racoon akan mempertukarkan Key dengan menggunakan IKE dengan yang lain untuk membangun IPsec-SA.
  6. racoon meletakan Key kedalam SAD.
  7. Kernel dapat mengirimkan paket yang menggunakan IPsec.

Seorang administrator harus mengkonfigurasi SPD dengan menggunakan perintah setkey , dan harus mengkonfigurasi racoon. Di samping itu, dia juga perlu menjalankan racoon atau IKE sejenis di sisi satu-nya lagi.

Instalasi racoon

Instalasi ipsec-tools menggunakan perintah

# apt-get install racoon ipsec-tools

Pada pertanyaan “Configuration mode for racoon IKE daemon:” jawab “direct”

Racoon membutuhkan ijin root untuk bisa berjalan. Racoon menggunakan UDP port 500, di samping itu juga membuka file log biasanya di /var/log/racoon.log . Ada beberapa opsi yang dapat digunakan Racoon , beberapa yang sering digunakan adalah:

-f configfile
   menentukan alternate configuration file. 
   /usr/local/v6/etc/racoon.conf sebagai default. 
-l logfile
   memberitahukan alternate log file. 
   /var/log/racoon.log sebagai default. 
-d dlevel
   Set debugging level dengan hexadecimal. 

Di bawah adalah perintah dimana racoon akan mengeluarkan banyak informasi ke standard output maupun log file.

# racoon -d 0xffffffff

Contoh Konfigurasi Racoon

Konfigurasi racoon di Ubuntu biasanya tersimpan di /etc/racoon/racoon.conf

# vi /etc/racoon/racoon.conf 

Penjelasan berikut adalah salah satu dari konfigurasi paling sederhana. Bagian ini akan di jelaskan secara bertahap

path script "/etc/racoon/scripts"; 
path pre_shared_key "/etc/racoon/psk.txt"; 
path certificate "/etc/racoon/certs"; 
log notify; 

remote anonymous
{
	exchange_mode aggressive ;
	my_identifier user_fqdn "sakane@kame.net" ;
	lifetime time 24 hour ;
	proposal {
		encryption_algorithm 3des;
		hash_algorithm sha1;
		authentication_method pre_shared_key ;
		dh_group 2 ;
	}
} 

sainfo anonymous
{
	fs_group 2;
	lifetime time 12 hour ;
	lifetime byte 50 MB ;
	encryption_algorithm 3des, blowfish, des, rijndael ;
	authentication_algorithm hmac_sha1, hmac_md5 ;
	compression_algorithm deflate ;
}


  • path pre_shared_key – berisi file yang mendefinisikan pre-shared keys. Ini digunakan untuk meng-authentikasi peer pada phase 1. Jika kita tidak menggunakan pre-shared key authentication method, kita tidak perlu men-definisikannya. Format yang digunakan seperti hosts. Artinya, parameter di pisahkan oleh beberapa spasi atau tab. Pada contoh di atas, pre-shared key di definisikan sebagai berikut;
 sakane@kame.net	secretkey
  • my_identifier men-definisikan identifier yang digunakan untuk authentikasi pada phase 1. Kata selanjutnya "user_fqdn" yang artinya penggunaan User FQDN sebagai identifier sendiri.


remote

  • remote mendefinsikan tentang Phase 1. anonymous berarti akan melakukan match sembarang peer. Kita dapat saja membatasi exchange dari masing-masing peer.
  • exchange_mode mendefinnisikan exchange mode pada Phase 1; aggressive berarti exchange menggunakan aggressive mode. Kita dapat menggunakan main sebagai main mode dan base sebagai base mode. Jika peer memulai exchange dengan mode yang tidak di definisikan disini, racoon akan menolak-nya. racoon dapat menerima ke tiga mode tersebut.
  • identifier di remote menentukan apa identifier sendiri yang digunakan. Identifier akan mengirimkan ke peer, dan peer akan menggunakan sebagai satu dari authentication information. Dalam contoh di atas, identifier di remote menggunakan user_fqdn, oleh karenanya "sakane@kame.net" digunakan dalam dentifier user_fqdn.
  • lifetime time dan lifetime byte menentukan lifetime dari IKE-SA. Ini berdasarkan time (waktu) dan berdasarkan byte. Kita dapat menggunakan sec, min dan hour sebagai unit dari lifetime berdasarkan time. Dan kita juga dapat menggunakan B, KB, MB dan TB sebagai unit dari lifetime berdasarkan bytes.
  • proposal mendefinisikan proposal pada Phase 1. Kita dapat saja menggunakan beberapa / multiple proposal.
  • encryption_algorithm menunjukan algoritma enkripsi pada Phase 1. racoon dapat menggunakan DES, 3DES, RC5, IDEA, CAST, BLOWFISH sebagai algoritma enkripsi. Kita perlu menentukan des, 3des, rc5, idea, cast, blowfish. Kita dapat menentukan salah satu dari algoritma tersebut di proposal untuk Phase 1.
  • hash_algorithm menentukan hash algorithm. racoon dapat menggunakan MD5 dan SHA1 sebagai hash algorithm. Kita perlu menentukan md5 dan sha1. Kita dapat menentukannya di proposal untuk Phase 1.
  • authentication_method menentukan authentication method pada Phase 1. Pada contoh di atas, kita menggunakan Pre-shared Key sebagai authentication method. Racoon dapat menggunakan RSA Signature authentication method.
  • dh_group dapat menentukan group untuk Diffie-Hellman Key Exchange. Racoon dapat menggunakan 1, 2 dan 5 sebagai group. Kita perlu menentukan 1, 2 dan 5.

sainfo

  • sainfo menentukan beberapa parameter yang digunakan pada Phase 2. anonymous berarti akan match ke sembarang peer. Kita dapat saja membatasi exchange untuk masing-masing peer.
  • pfs_group menentukan group untuk Diffie-Hellman Key Exchange di Phase 2. Racoon dapat menggunakan 1, 2 dan 5 sebagai group. Kita perlu menentukan 1, 2 dan 5 .
  • lifetime time dan lifetime byte menentukan lifetime dari IPsec-SA. Ini berdasarkan time (waktu) dan berdasarkan byte. Kita dapat menggunakan sec, min dan hour sebagai unit dari lifetime berdasarkan time. Dan kita juga dapat menggunakan B, KB, MB dan TB sebagai unit dari lifetime berdasarkan bytes.
  • encryption_algorithm menentukan proposal untuk algoritma enkripsi untuk ESP. racoon dapat menggunakan DES, 3DES, CAST, BLOWFISH, TWOFISH, RIJNDAEL dan NULL sebagai algoritma enkripsi untuk ESP. 3des, cast128, blowfish, des, twofish, rijndael ; Kita perlu menentukan des, 3des, cast, blowfish, twofish, rijndael dan null_enc .
  • authentication_algorithm menentukan proposal untuk authentication algorithm untuk ESP dan AH. racoon dapat menggunakan HMAC-SHA1, HMAC-MD5 dan Keyed-MD5 sebagai authentication algorithm. Kita perlu menentukan hmac_sha1, hmac_md5 dan kpdk.
  • compression_algorithm menentukan proposal untuk compression algorithm untuk IPCOMP. racoon dapat menggunakan DEFLATE pada saat ini. Kita perlu menulis deflate.

CATATAN: racoon tidak mempunyai daftar dari security protocol yang akan di tawarkan. Daftar security protocol di berikan oleh kernel. Sebelumnya kita harus mendefinisikan semua algoritma yang mungkin digunakan kedalam sainfo meskipun kita tidak membutuhkan algoritma kompresi apapun. Contoh di atas akan menerima exchange untuk Phase 1 dan Phase 2, jika kita memasukan Pre-shared Key yang benar sebelum exchange. Racoon dapat membatasi untuk melakukan exchange dengan peer setiap phase.

Contoh konfigurasi Sederhana

log notify;
path pre_shared_key "/etc/racoon/psk.txt";
path certificate "/etc/racoon/certs";

remote anonymous {
        exchange_mode main,aggressive;
        proposal {
                encryption_algorithm 3des;
                hash_algorithm sha1;
                authentication_method pre_shared_key;
                dh_group modp1024;
        }
        generate_policy off;
}

sainfo anonymous {
        pfs_group modp768;
        encryption_algorithm 3des;
        authentication_algorithm hmac_md5;
        compression_algorithm deflate;
}

Contoh Konfigurasi Pre Shared Key

Pre Shared Key biasanya tersimpan di file

/etc/racoon/psk.txt 

Contoh isi dari Pre Shared Key kira-kira sebagai berikut:

# IPv4/v6 addresses 
10.160.94.3     mekmitasdigoat 
172.16.1.133    0x12345678 
194.100.55.1    whatcertificatereally 
2001:470:19:b37::101 a9993e364706816aba3e
2001:470:19:b37::100 a9993e364706816aba3e  
3ffe:501:410:ffff:200:86ff:fe05:80fa    mekmitasdigoat 
3ffe:501:410:ffff:210:4bff:fea2:8baa    mekmitasdigoat 
2345::1 abcdef
2345::2 abcdef
# USER_FQDN 
foo@kame.net    mekmitasdigoat 
sakane@kame.net	secretkey
# FQDN 
foo.kame.net    hoge


Restart ipsec & racoon

Untuk mengaktifkan ipsec & racoon agar komunikasi akan di enkripsi cukup me-restart

/etc/init.d/setkey restart
/etc/init.d/racoon restart

setkey akan mengaktifkan ipsec, sehingga komunikasi akan di enkripsi. Tentunya dengan syarat semua konfigurasi dilakukan dengan benar.

Contoh Konfigurasi SPD

Kasus 1

Security protocol yang digunakan ESP. Encapsulation mode adalah Transport.

   Host-A                    Host-B
   2345::1 ----------------- 2345::2

Konfigurasi di Host-A 2345::1 file /etc/ipsec-tools.conf

spdadd 2345::1 2345::2 any -P out ipsec
	esp/transport//require ;
spdadd 2345::2 2345::1 any -P in ipsec
	esp/transport//require ;

Perhatikan IP address dan arah-nya. IP address pertama berarti source IP header. IP address selanjutnya berarti destination IP header. out berarti packet keluar. in berarti packet masuk.

Konfigurasi di Host-B 2345::2 file /etc/ipsec-tools.conf

spdadd 2345::2 2345::1 any -P out ipsec
	esp/transport//require ;
spdadd 2345::1 2345::2 any -P in ipsec
	esp/transport//require ;

Kasus 2

ESP Transport mode digunakan pertama, dan AH Transport mode digunakan selanjutnya. Hal ini berarti kernel akan membuat paket menjadi [IP|AH|ESP|ULP].

   Host-A		           Host-B
  2345::1 ----------------------- 2345::2

Konfigurasi pada Host-A 2345::1 file /etc/ipsec-tools.conf

spdadd 2345::1 2345::2 any -P out ipsec
	esp/transport//require
	ah/transport//require ;
spdadd 2345::2 2345::1 any -P in ipsec
	esp/transport//require
	ah/transport//require ;

Perhatikan urutan security protocol. Di outgoing case mendefinisikan out, dia mendefinisikan urutan security protocol yang akan digunakan oleh kernel kepada paket. Di incoming case mendefinisikan in, dia mendefinisikan urutan security protocol yang akan digunakan oleh kernel kepada packet. Pada kasus di atas berarti ESP transport mode digunakan pertama, dan di lanjutkan dengan AH transport mode.

Konfigurasi pada Host-B 2345::2 file /etc/ipsec-tools.conf

spdadd 2345::2 2345::1 any -P out ipsec
	esp/transport//require
	ah/transport//require ;
spdadd 2345::1 2345::2 any -P in ipsec
	esp/transport//require
	ah/transport//require ;

Perhatikan IP address cara alokasinya sama seperti kasus 1 di atas.

Kasus 3

ESP Tunnel untuk VPN.


                      =========== ESP ===========
                      |                         |
   Network-A      Gateway-A                Gateway-B        Network-B
   2002::/64 ---- 2345::1 ---------------- 2345::2 -------- 2003::/64


Konfigurasi pada Gateway-A 2345::1 file /etc/ipsec-tools.conf

spdadd 2002::/64 2003::/64 any -P out ipsec
	esp/tunnel/2345::1-2345::2/require ;
spdadd 2003::/64 2002::/64 any -P in ipsec
	esp/tunnel/2345::2-2345::1/require ;

Tunnel end point harus di definisikan.

Konfigurasi pada Gateway-B 2345::2 file /etc/ipsec-tools.conf

spdadd 2003::/64 2002::/64 any -P out ipsec
	esp/tunnel/2345::2-2345::1/require ;
spdadd 2002::/64 2003::/64 any -P in ipsec
	esp/tunnel/2345::1-2345::2/require ;

Referensi


Pranala Menarik