Your IP

Sign by Danasoft - Get Your Free Sign

Selasa, 07 April 2009

Virtual Private Network (Linux 2)

lanjutan...

I Made Wiryana

Proxy tranparant

Kernel Linux terbaru (paling tidak versi 2.0 ke atas) memiliki banyak kemampuan memfilter paket. Paket kernel yang terbaru telah mendukung suatu kemampuan yang disebut transparency proxying, yang dapat membantu penyusunan suatu sistem tunneling.

Suatu proxy, adalah suatu program jaringan khusus yang akan merelay data, dari sisi satu ke sisi lainnya, dan sebaliknya. Proses merelay ini dilakukan oleh program proxy, yang terjadi di user space. Ini berarti proxy akan menerima data pada salah satu buffer yang dimilikinya, dan mungkin meng-copy nya ke buffer lainnya selain melakukan hal yang intelligence, dan mengirimkan ke buffer lainnya di interface jaringan yang lainnya (sisi luar) untuk menuju tujuan paket tersebut. Karena paket keluaran di kirim secara manual, dari interface sisi luar, maka paket akan memiliki alamat IP sama dengan external interface tersebut sebagai source address. Suatu paket yang telah diforwardkan olehj kernel biasanya memiliki soruce address sama dengan original source address. Dengan cara ini (menggunakan proyxy), alamat IP internal telah ditransformasikan menjadi alamat IP eksternal. Ditambah lagi beberapa hal dapat ditambahkan di program proxy ini, misal otentikasi pengguna, dan kompressi.

Salah satu masalah dengan menggunakan proxy adalah menyalurkan data dari internal network ke proxy. Tak ada cara yang portabel untuk melakukan hal ini. Bila diinginkan melakukan telnet, melewati suatu proxy. Maka :

  • Harus telnet ke mesin proxy tersebut
  • Mungkin melakukan otentikasi
  • Barulah melakukan koneksi ke alamat sesungguhnya yang dituju

Suatu Web Browser dapat dikonfifgurasikan secara otomatis untuk menggunakan suatu proxy (awalnya bertujuan untuk caching), tetapi sebagian besar aplikasi yang menggunakan TCP/IP tak dapat secara mudah diubah.

Tetapi pada kernel Linux yang baru dapat dikonfigurasi sehingga dapat mendrop seluruh traffic untuk port tertentu atau untuk alamat IP teretentu pada port network di mesin yang sama. Hal ini dapat dilakukan dengan menggunakan command ipfwadm.

ipfwadm 2.3.0 1996/07/30

Usage : /sbin/ipfwadm -A [direction] command [options] (accounting)

/sbin/ipfwadm -F command [options] (forwarding firewall)

/sbin/ipfwadm -I command [options] (input firewall)

/sbin/ipfwadm -O command [options] (output firewall)

/sbin/ipfwadm -M [-s | -l] [options] (masquerading entries)

/sbin/ipfwadm -h (print this help information)

Command :

-i [policy] insert rule (no policy for accounting rule)

-a [policy] append rule (no policy for accounting rule)

-d [policy] delete rule (no policy for accounting rule)

-l list all rules of this category

-z reset packet/byte counters of all rules of this cateogry

-f remove all rules of this category

-p policy change default policy (accept/deny/reject)

-s tcp tcpfin udp set measuring timeout values

-c check acceptance of IP packet

Options :

-P protocol (either tcp, udp, icmp, or all)

-S address[/mask][port ... ]

source specification

-D address[/mask][port ... ]

destination specification

-V address network interface address

-W name network interface name

-b bidirectional match

-e extended output mode

-k match TCP packets only when ACK set

-m masquerade packets as coming from local host

-o turn on kerjel logginf for matching packets

-r [port] redirect packets to local port (transparent proxying)

-t and xor and/xor TOS field

-v verbose mode

-x expand numbers (display exact value)

-y match TCP packets only when SYN set and ACK cleared

ipfwadm digunakan untuk mendefinisikan aturan pemfilteran pada code firewall di kernel Linux. Jika dikombinasikan denngan suatu INPUT rule dengan option -r (transparent proxying), kernel akan mengirimkan seluruh traffic network yang sesuai dengan rule ke network port di mesin. Sehingga bila telah ada proxy yang mendengar (listening) ke port tersebut, secara otomatis akan merelay traffic network tersebut. Sebagai contoh aturan berikut ini akan melewatkan seluruh traffic outgoing telnet, ke suatu transparent proxy yang berjalan pada firewall dan melakukan listen, pada port telnet

ipfwadm -l -a accept -P tcp -r -S localnet/24 -D 0.0.0.0/0 telnet

Bila destination address (yang ditunjukkan setelah option -D, dalam hal ini 0.0.0.0) diubah, maka dapat dilakukan redirek hanya koneksi tertentu melalui proxy.

Untuk menjalankan transpararet proxy (pada kernel 2.0 ke atas), harus dispesifikasikan beberapa option ketika membangun kernel. Harus dibuat agar code IP firewall menjadi enable, begitu juga option transparent proxy harus enable juga. Walaupun sepintas solusi ini cocok dengan kebutuhan VPN, ada juga kekurangan yaitu :

  • Harus ditulis code untuk transparant proxy ini, dan implementasi ini sangat khas Linux. Dan setiap protocol harus diproxy dnegan cara yang berbeda
  • Ketika menggunakan proxy, maka akan kehilangan alamat IP asli dari message, sehingga pengukuran seukirit pada sisi lainnya (misalnya ingin diketahui siapa sebenarnya (atau workstation mana yang mengirim packet) menjadi sia sia, karena hanya akan terlihat alamat IP proxy, dan bukannya alamt IP pengirim asli

Penggunaan Real Tunnel

Linux (setidaknya kernel 2.0 ke atas) telah menyediakan fasilitas real tunneling. Fasilitas ini dapat dioperasikan dengan merubah option. Yaitu :

Network firewalls (CONFIG_FIREWALL) [N/y/?] y

IP : Forwarding/gatewaying (CONFIG_IP_FORWARD) [N/y/?] y

IP : Firewalling (CONFIG_IP_FIREWALL) [N/y//?] (NEW) y

IP : tunneling (CONFIG_NET_IPIP) [N/y/m/?] (NEW) m

Ketika membangun fasilitas tunneling sebagai suatu modul (dtemtukan dengan m pada option terakhir), maka modul dapat dimasukkan atau dikelaurkan ketika sistem sedang berjalan. Ini mempermudah ketika melakukan konfigurasi dan uji coba.

Sekali telah dibangun kernel dan modul ini, maka akan ada satu modul untuk tunneling, new_tunnel.o. Modul ini perlu "berkomunikasi" dengan module tunneling pada mesin Linux di sisi jaringan lainnya. Modul yang mengirimkan data akan bertugas memultipleks, dan module penerima (di sisi seberang) akan menangani tugas demultipleks. Kemampuan inilah yang akan digunakan untuk membanguns suatu VPN.

Konfigurasi Tunnel

Setelah membangun kernel, dan modul yang bersangkutan, maka sistem harus di-reboot untuk mengaktifkan kernel yang baru ini. Setelah dilakukan hal tersebut, maka dapat digunakan perintah insmod, rmod, dan lsmod untuk memasukkan (insert), menghilangkan (remove), dan melihat modul yang ada (list)

Setelah memasukkan modul new_tunnel.o dengan perintah insmod, maka dapat diperiksa keberhasilan pemuatan modul tersebut dengan menggunakan perintah lsmod. Maka akan ditampilkan hasil sebagai berikut.

Module #pages : Used by:

new_tunnel 1 0

Dan ketika dilakukan perintah cat /proc/net/devm maka akan terlihat divais networking baru yang bernama tun10.

Inter-| Receive | Transmit

face | packets errs drop fifo frame|packets errs drop fifo colls carrier

lo: 18 0 0 0 0 18 0 0 0 0 0

eth0: 3347 0 0 0 0 4009 0 0 0 19 0

tun10: 0 0 0 0 0 0 0 0 0 0 0

Divais tun10 dapat digunakan sebagai divais networking normal, dan program ifconfig dapat digunakan untuk mengkonfigurasi dan mengaktifkan divais (interface) ini.

Misal, untuk keperluan percobaan, 2 network yang keduanya dihubungkan ke ISP masing masing. Dua network ini akan dikoneksikan secara tranparant. Misal network pada bagian kiri memiliki address 193.78.174.32 dengan subnetmask 255.255.255.224, dan network yang di sebelah kanan memiliki address 1293.78.174.64 dengan subnetmask yang sama pula 255.255.255.224. Setiap network menggunakan firewall T1 dan T2, yang digunakan untuk menghubungkan ke network, dengan address masing masing ditunjukkan pada gambar yaitu T1 adalah 194.21.134.23 dan T2 adalah 208.34.1.12. T1 memiliki address internal 193.78.174.33. dan firewall T2 memiliki address internal 193.78.174.65. Misal seluruh konfigurasi normal telah dilakukan untuk seluruh network dan akan ditunjukkan perubahan yang dilakukan agar tunneling dapat berjalan.

Pada T1, perlu dilakukan konfigurasi interface tun10, sudah barang tentu modul tunneling telah dimasukkan terlebih dahulu. Sehingga akan tampak

ifconfig tun10 193.78.174.33 netmask 255.255.255.224 up

Interface tunnel memiliki address IP yang sama dengan interface internal real (sebenarnya). Setelah interface dikonfigurasi, maka dapat ditambahkan static routing entry, yang akan memforward seluruh traffic untuk network 193.78.174.64. melalui tunnel :

route add -net 193.78.174.64 netmask 255.255.255.224 gw

208.34.1.12 tun10

Perintah di atas akan menambahkan static route untuk network 193.78.174.64. Seluruh traffic untuk address tersebut akan dikirim ke gateway 208.34.1.12 (IP address sisi luar sisi luar dari T2). Pada T2 dilakukan hal yang sama dengan dibalik

ifconfig tun10 193.78.174.65 netmask 255.255.255.224 up

route add -net 193.78.174.32 netmask 255.255.255.224 gw

194.21.134.23 tun10

Setelah mengkonfigurasi ke dua sisi tunnel seperti ini, seluruh traffic dari network satunya akan dimultipleks dan didemultipleks secara otomatis oleh modul tunneling. Dengan menambahkan static route ini, seluruh proses dilakukan secara transparansi tanpa perlu campur tangan user.

Ke dua network sudah dapat berkomunikasi. Tetapi seluruh data dikirim secara gamblang, sehingga dapat dibaca oleh siapapun yang memiliki akses ke paket yang dikirim (misal dengan tcpdump). Bagian selanjutnya akan dibahas bagaimana memecahkan masalah ini.

bersambung...

Tidak ada komentar:

Posting Komentar