Snort merupakan salah satu software favorit yang digunakan untuk memproteksi network dari serangan hacker. Proteksi tambahan ini cukup memadai untuk menghindari serangan hacker pada umumnya.
'SNORT' merupakan salah satu software untuk mendeteksi intrusi pada system, mampu menganalisa 'real-time traffic' dan logging ip, mampu menganalisa port dan mendeteksi segala macam 'serangan' dari luar seperti buffer overflows, stealth port scans, CGI attacks, SMB probes, OS fingerprinting. secara default nya snort mempunyai 3 hal yang terpenting yaitu :
(1) paket sniffer, seperti tcpdump, iptraf dll
(2) paket logger, yang berguna untuk paket traffic dll
(3) NIDS, deteksi intrusi pada network.
1.1 Pengenalan
Snort bukanlah software yang sulit, tapi perlu banyak latihan karena banyaknya 'command-command' yang harus digunakan, tujuan dari pembuatan artikel ini untuk membuat user lebih mudah untuk mengenali 'snort'.
1.2 Instalasi
download paket yang terbaru dari snort.org, saya disini menggunakan snort 2.0.0
# wget -c http://www.snort.org/dl/snort-2.0.0.tar.gz |
jangan lupa juga mendownload rules terbaru.
# wget -c http://www.snort.org/dl/rules/snortrules-stable.tar.gz |
extract dan install paket snort
# tar -zxvf snort-2.0.0.tar.gz ; cd snort-x.x.x ; ./configure ; make ; make install |
untuk lebih lengkap nya silahkan baca ./configure --help secara default snort akan terinstall di /usr/local/bin/snort
1.3 Paket Sniffer
fyuh, mari coba pelajaran dasar dulu ;) jika anda ingin menampilkan TCP/IP header ke layar ( mis. sniffer mode ), coba perintah ini:
command di atas akan menjalan snort dan hanya akan menampilkan IP dan TCP/UDP/ICMP header, tapi jika anda mau melihat transit data coba dengan command ini
instruksi tersebut akan menampilkan transit data, tapi jika anda mau lebih spesifik coba dengan
1.3 Paket logger
ok, command-command di atas mungkin hanya sebagai pengenalan, pada instruksi diatas ada kasus dimana kita tidak mungkin melihat ke layar setiap menit nya ;) oleh karena itu dibutuhkan log, sebelum nya buat direktori 'log' di direktori kerja anda sekarang
# mkdir -p log # snort -dve -l ./log |
Jika instruksi diatas dijalankan, tetapi anda belum membuad direktory log, maka snort akan segera berhenti dengan keterangan 'ERROR: log directory './log' does not exist', jika berhasil, snort akan menyimpan setiap paket ke dalam direktori-direktory IP address, jika sistem anda memiliki beberapa network tetapi anda hanya ingin memonitor network tertentu saja.
# snort -dev -l ./log -h 192.168.1.0/24 |
Rules ini akan menyimpan setiap data link dan TCP/IP header ke dalam direktory 'log' dan menyimpan setiap paket dari 192.168.1.0 kelas C network.
1.4 Mendeteksi 'Pengacau' Jaringan
Sebelum ini di bahas, sebaik nya anda membaca manual dari snort.org, http://www.snort.org/docs/writing_rules/chap2.html , disini diminta untuk membuat rules sendiri atau anda bisa memakai rules yang di sedikan oleh snort.org sendiri.
# tar -zxvf snortrules-stable.tar.gz |
tapi, saya coba membuat rules sendiri, karena saya kurang suka dengan paket dari orang lain, setelah di gunain tapi tidak tahu gunanya buat apa ;) contoh rules sederhana
# cd rules; touch avudz.conf # vi avudz.conf alert tcp any any -> ipsaya/29 21 (content: "root"; \ msg: "FTP root login";) alert tcp any any -> ipprivate/24 22 (msg:"sshd access";) alert tcp any any -> ipsaya/29 21 (content: "anonymous"; \ msg: "Ada yg Coba FTP server!";) alert tcp any any -> ipsaya/29 22 (msg:"ada yang login";) # http://www.linuxsecurity.com/feature_stories/feature_story-144.html |
Content digunakan untuk mendefinisikan inputan dari $user, sedangkan msg untuk membuat pernyataan tentang $user yang menggunakan 'content' tersebut.
sebelum rules baru ini di jalankan, pastikan anda membuat direktory logging di /var/log/snort
# mkdir -p /var/log/snort |
tetapi jika anda merasa partisi /var anda sudah minim, silahkan buat symbolic link untuk logging, misal
# ln -s /home/avudz/snort/log /var/log/snort |
ok, selesai sudah ;) sekarang coba kita jalankan software nya.
# snort -d -c rules/avudz.conf Running in IDS mode Log directory = /var/log/snort Initializing Network Interface eth0 |
setelah itu silahkan anda coba ftp / ssh ke server anda dari network yang berbeda ( diconfig saya menggunakan ip public), dan pantau traffic nya.
# tail -f /var/log/snort/alert |
contoh :
[**] [1:0:0] ada yang login [**] [Priority: 0] 06/12-05:47:23.911639 202.xxx.xxx.xx:3962 -> 202.xxx.xxx.xxx:22 TCP TTL:64 TOS:0x10 ID:57036 IpLen:20 DgmLen:52 DF ***A**** Seq: 0xAC015F2A Ack: 0xAD5438B5 Win: 0x3EBC TcpLen: 32 TCP Options (3) => NOP NOP TS: 16723031 55655688 [**] [1:0:0] Ada yg Coba FTP server! [**] [Priority: 0] 06/12-05:48:24.419800 202.xxx.xxx.xx:3971 -> 202.xxx.xxx.xxx:21 TCP TTL:64 TOS:0x10 ID:57642 IpLen:20 DgmLen:68 DF ***AP*** Seq: 0xAE133FB1 Ack: 0xAFCB3637 Win: 0x3EBC TcpLen: 32 TCP Options (3) => NOP NOP TS: 16729081 55661127 |
Ah.. selesai sudah, tinggal tambahin beberapa rules yang dibutuhkan untuk memantau aktivitas 'machine' anda ;) misalnya iseng mo monitor irc server, tinggal tambahin di avudz.conf
# vi rules/avudz.conf alert tcp ipsaya any -> any 6666:7000 (msg:"CHAT IRC "; flow:to_server,established; content: "NICK "; offset:0; classtype:misc-activity; sid:542; rev:8;) alert tcp ipsaya any -> any 6666:7000 (msg:"permintaan DCC Chat "; flow:to_server,established; content:"PRIVMSG "; nocase; offset:0; content:" \:.DCC SEND"; nocase; classtype:misc-activity; sid:1639; rev:3;) # === done === # |
Semua config dan rules nya bisa anda pelajari dari file snortrules-stable.tar.gz yang sudah di extract, seperti msyql rules, backdoor rules, ICMP rules, bad traffic rules dll. yang penting adalah mencoba, jangan pernah menyerah! MERDEKA!! =)
Referensi :
1. http://www.snort.org/
2. http://www.snort.org/docs/writing_rules/chap2.html
3. http://marc.theaimsgroup.com/?l=snort-users