1. Pendahuluan Dalam dunia jaringan komputer diperlukan analisa dalam pertukaran paket data. Ada beberapa manfaat analisa tersebut antara lain, digunakan untuk troubleshooting masalah – masalah jaringan, untuk keamanan jaringan, pengembang software bisa menggunakannya untuk men-debug implementasi protokol jaringan, bisa juga untuk mempelajari protokol jaringan secara detail, dan masih banyak manfaat yang lainnya. Packet Capture adalah sebuah mekanisme menyalin packet yang diterima dalam jaringan dan membawa data yang disalin ke user untuk di analisa lebih lanjut. Dikarenakan traffic data yang melintas dengan transfer rate tinggi di jaringan komputer, maka masalah yang muncul adalah packet loss atau packet data yang tidak sempat dicapture. Teknologi yang dapat mengatasi masalah tersebut adalah PF_RING. Teknologi PF_RING merupakan tipe baru dari network socket yang mampu meningkatkan kemampuan packet capture. Skripsi ini bertujuan untuk menganalisa packet capture performance dari Snort menggunakan PF_RING. 2. Tinjauan Pustaka Packet Capture dan Libpcap Packet Capture adalah tindakan menangkap packet yang melintasi jaringan dengan lalu lintas tinggi [1]. Sebagian besar packet capture dapat merekam header tanpa semua isi datagram. Libpcap merupakan library yang digunakan dalam packet capture. Sebagian besar network tools (Snort, Tcpdump, Ethereal) berbasis pada libpcap, yang dimana menyediakan high-level interface untuk packet capture [2]. Jadi dengan kata lain libpcap merupakan library yang digunakan untuk packet capture.
Snort Snort merupakan packet sniffer dan logger berbasis libpcap yang dapat digunakan di jaringan sederhana sebagai Network Intrusion Detection System (NIDS) [9].
Gambar 1 Arsitektur Snort
5
Gambar 1 menunjukkan arsitektur dari Snort. Arsitektur terdiri dari tiga komponen, yaitu packet decoder, detection engine, dan logger / alerter. Packet decoder : decoder packet Snort mendukung media Ethernet, SLIP, dan PPP. Packet decoder melakukan semua perkerjaan untuk mempersiapkan data dengan cara yang sifatnya membantu mesin deteksi [4]. Detection Engine : merupakan bagian paling penting dari Snort dikarenakan bertanggung jawab untuk menganalisa setiap paket berdasarkan aturan Snort / Snort Rules yang digunakan saat runtime. Detection engine bekerja dengan cara memisahkan Snort rules ke dalam apa yang disebut chain header dan chain options. Atribut umum seperti sumber / tujuan alamat IP dan port mengidentifikasikan chain header. Chain options ditentukan oleh rincian seperti TCP flags, ICMP, payload size, dan lain sebagainya [4]. Logger / Alerter : logger dan alerter merupakan dua hal yang terpisah. Logging memungkinkan user untuk mencatat informasi yang dikumpulkan oleh packet decoder dalam format yang mudah di baca. User dapat mengkonfigurasi alerts untuk dikirim ke syslog, flat file, UNIX sockets or a database [4]. Snort Rules [4] Snort rules berbentuk file ASCII yang dapat dibuat oleh user. Isi dari peraturan memuat antara lain : Variable Definitions : ini mendefenisikan variable yang mungkin dapat digunakan kembali untuk membuat aturan Snort. Snort Rules : ini merupakan aturan sebenarnya yang mengaktifkan deteksi gangguan. Preprocessor : ini identic dengan plugin dan berperan penting dalam memperluas kemampuan snort Include Files : ini memungkinkan user untuk memasukkan Snort rules yang lainya. Output Modules : ini memungkinkan Snort yang mengelola untuk menentukan output untuk logging dan alerting. Output modules berjalan ketika alert atau logging yang merupakan subsistem dari Snort berjalan.
Berikut contoh sederhana Snort rules, untuk memberikan pesan terhadap admin, bahwa seseorang sedang meremote komputer. alert tcp $EXTERNAL_NET any -> $TELNET_SERVERS 22 (msg:"Seseorang Telnet Komputer Kita"; sid:1231214;) 6
snort rules terdiri dari 2 bagian
header : alert $EXTERNAL_NET any -> $TELNET_SERVERS 22
rule options : (msg:"Seseorang Telnet Komputer Kita"; sid:1231214;)
PF_RING PF-RING adalah sebuah library untuk packet capture pada jaringan berkecepatan tinggi yang dapat mengubah sebuah PC menjadi sebuah network measurement box yang effisien dan murah yang cocok untuk packet dan active traffic analysis dan manipulasi [5].
Gambar 2 PF_RING arsitektur [5]
Gambar 2 menunjukkan arsitektur dari PF_RING. Packet yang masuk kemudian dicopy oleh kernel module ke ring, dan dibaca oleh aplikasi user-space. Tidak ada alokasi / dealokasi memori per-paket yang dilakukan. Ketika sebuah paket dibaca dari ring, ruangan yang digunakan di dalam ring untuk menyimpan packet yang baru saja dibaca akan digunakan untuk menampung packet selanjutnya[5].
7
Gambar 3 PF_PACKET dan PF_RING [6]
PF_RING merupakan alternatif dari PF_PACKET di sistem operasi Linux [6]. Gambar 3 menunjukkan bahwa proses PF_RING lebih sederhana dibandingkan dengan proses yang dilakukan oleh PF_PACKET. Salah satu fitur penting PF_RING adalah cara pertukaran packet antara userspace dan kernel [6]. PF_RING memungkinkan efisiensi penyalinan packet dari driver ke PF_RING tanpa m elalui struktur kernel data[5].
8
3. Metode Penelitian Perancangan Pengujian Dalam pengujian ini dilakukan dengan 2 kali tahapan, yaitu tahapan pertama melakukan pengujian dengan Snort tanpa menggunakan PF_RING driver, tahapan kedua melakukan pengujian dengan Snort menggunakan PF_RING driver. Diperlukan 2 komputer dalam melakukan pengujian. Berikut rincian spesifikasi komputer yang digunakan dalam uji coba. Tabel 1 Komputer Pengirim
Sistem Operasi
Windows 7 Ultimate
Mainboard
Gigabyte GA-MA74GM-S2H
Processor
AMD Phenom(tm)8650Triple-Core Processor (3CPU)~2.35GHz
Memory
2048MB RAM
NIC
Realtek PCIe GBE Family Controller
Generator
Ostinato 0.5
Tabel 2 Komputer Penerima
Sistem Operasi
Ubuntu 12.04
Mainboard
DG 31PR Intel
Processor
Intel(R) Pentium(R) Dual CPU E2200 @2.20Ghz
Memory
1048MB RAM
NIC
Intel® PRO/1000 MT Server Adapter, PF_RING v.5.4.4
Packet Capture Application
Snort 2.9.2
Kemudian 2 komputer diatas dihubungkan menggunakan sistem peer to peer seperti pada gambar 4.
9
Gambar 4. Arsitektur Simulasi
Langkah Pengujian Pengujian dilakukan dengan mengirim 1.000.000 packet dengan ukuran standard frame size Ehernet sesuai Tabel 3. Frame Size (byte)
Ethernet (pps)
64
14880
128
8445
256
4526
512
2349
768
1586
1024
1197
1280
961
1518
812
Tabel 3 Standard Ethernet Frame Sizes [7]
Pengujian dilakukan untuk melihat kinerja dari Snort dan Snort dengan PF_RING driver, dalam uji coba ini akan dilihat dampak packet loss yang terjadi dan juga CPU usage.
10
4. Hasil dan Pembahasan
Snort Frame Size (byte) 64 128 256 512 768 1024 1280 1518
Packet Receive Total Receive 1000000 299322 1000000 468012 1000007 756951 1000033 1000033 1000060 1000060 996466 996466 997020 997020 1000054 1000054
Drop 700678 531988 243056 0 0 0 0 0
Packet Drop (%) 70.07% 53.20% 24.31% 0.00% 0.00% 0.00% 0.00% 0.00%
Data Rate pkst/s pkt/m 2934 299322 2802 234006 2824 189237 2127 142861 1524 100006 940 58615 784 47477 731 45457
CPU usage (%) 31.00% 31.00% 31.00% 29.00% 25.00% 20.00% 20.00% 16.00%
Tabel 4 Snort
Pada Tabel 4 dapat dilihat hasil dari pengujian, menggunakan Snort tanpa PF_RING terjadi packet drop / packet loss mencapai 70% dari packet yang dikirimkan, dan juga CPU usage pada saat Snort berjalan mengunakan sekitar 16% - 31%. Sebagai bahan perbandingan dapat melihat Tabel 5.
Snort + PF_RING Frame Size (byte) 64 128 256 512 768 1024 1280 1518
Total 1000007 1000000 1000009 1000000 1000035 1000058 1000094 1000302
Packet Receive 543373 616580 797197 1000000 1000035 1000058 1000094 1000302
Drop 456634 383420 202812 0 0 0 0 0
Packet Drop (%) 45.66% 38.34% 20.28% 0.00% 0.00% 0.00% 0.00% 0.00%
Data Rate pkts/s pkt/m 2985 181124 2936 205526 2720 199299 1630 98764 1483 90912 1162 71432 924 55560 773 47633
CPU Usage (%) 31.00% 31.00% 30.00% 27.00% 12.00% 9.00% 9.00% 7.00%
Tabel 5 Snort dengan PF_RING driver
Percobaan kedua dapat dilihat pada Tabel 5 menggunakan Snort dengan PF_RING driver, dimana pada pengujian kali ini packet drop kembali terjadi hampir mencapai 50% dari packet yang dikirimkan namun hasil ini lebih rendah bila kita bandingkan dengan hasil percobaan menggunakan Snort yang ada pada Tabel 4. PF_RING juga mampu menahan laju CPU usage sehingga CPU tidak terlalu dibebani pada saat melakukan packet capture. Percobaan ini membuktikan bahwa proses pertukaran packet yang dilakukan PF_RING antara userspace dan kernel mampu 11
menghemat CPU usage tetapi tidak mengurangi kinerja packet capture itu sendiri, ini terbukti dari packet drop yang dihasilkan PF_RING lebih rendah dibandingkan Snort tanpa menggunakan PF_RING. Dari Hasil Simulasi maka dihasilkan grafik pada Gambar 5 dan 6.
100 90 80 70 60 50 40 30 20 10 0
Packet drop (%)
snort snort + PF_RING
64
128 256 512 Frame 768 1024 1280 1518 Size (byte)
Gambar 5 Packet Drop
Gambar 5 menunjukkan PF_RING mampu mengoptimalkan kinerja dari packet capture.
100
90 80
CPU usage (%)
70 60
50
snort
40
snort + PF_RING
30 20 10
0 64
128
256
512
768
1024
Frame Size (byte)
1280
1518
Gambar 6 CPU usage Gambar 6 menunjukkan PF_RING mampu menghemat pengunaan CPU / CPU usage yang digunakan pada saat proses packet capture.
5. Simpulan Berdasarkan hasil simulasi yang dilakukan menggunakan Snort dan Snort dengan PF_RING driver dengan tingkat pengiriman packet frame size dan jumlah packet yang sama, menunjukkan bahwa PF_RING mampu meningkatkan atau mengoptimalkan kinerja dari packet capture pada Snort. Selain itu PF_RING mampu menghemat pemakaian resource dari CPU yang digunakan untuk melakukan packet capture. 12
6. Daftar Pustaka [1] Kumar, P. Senthil, S., Arumugam, 2012, Establishing a valuable method of packet capture and packet analyzer tools in firewall, Nandha College of Technology, Erode, India. [2] L.Deri, 2004, Improving Passive Packet Capture:Beyond Device Polling, Via del Brennero Km 4, Loc. La Figuretta 56123 Pisa, Italy [3] Hery Seputro, Snort: Deskripsi, Fitur, dan Penggunaan, http://www.scribd.com/doc/2958707/Snort. [4] Nalneesh Gaur, 2001, Snort: Planning IDS for Your Enterprise, http://www.linuxjournal.com/article/4668 [5] Anonim, 2012, PF_RING User Guide : Linux High Speed Packet Capture, https://svn.ntop.org/svn/ntop/trunk/PF_RING/doc/UsersGuide.pdf. [6] Braun, L., Didebulidze, A., Kammenhuber, N., Carle, G., 2010, Comparing and improving current packet capturing solutions based on commodity hardware, Institute For Informatics, Munich, German. [7] S. Bradner, J. McQuaid, 1999, Benchmarking Methodology for Network Interconnect Devices, Harvard University , NetScout Systems. [8] Askari Azikin, 2011, Debian Gnu / Linux. Bandung : Informatika Bandung. [9] Martin Roesch, 1999, Snort-Lightweight Intrusion Detection for Networks, Seattle, Washington, USA.
13