hai semua apa kabarnya 😀 selamat natal dan tahun baru ya bagi yang merayakan :3

pada blog kali ini aku akan membahas snort. Snort adalah sistem deteksi intrusi jaringan Open Source yang diciptakan oleh pendiri Sourcefire dan mantan CTO Martin Roesch. Cisco kini mengembangkan dan mengelola Snort. Sumber: https://en.wikipedia.org/wiki/Snort_(software)

Apa itu Snort?

Snort disebut sebagai packet sniffer yang memantau lalu lintas jaringan, memeriksa setiap paket secara saksama untuk mendeteksi muatan berbahaya atau anomali yang mencurigakan. Sudah lama menjadi yang terdepan di antara alat pencegah dan deteksi intrusi perusahaan, pengguna dapat mengompilasi Snort di sebagian besar sistem operasi (OS) Linux atau Unix. Versi Snort juga tersedia untuk Windows. tapi pada blog ini aku akan membahas snort pada linux saja.

Bagaiamana cara kerja snort?

Snort didasarkan pada library packet capture (libpcap). Libpcap adalah alat yang banyak digunakan dalam tcp/IP address traffic sniffer, content search and analyzer untuk pencatatan paket, analisis lalu lintas waktu nyata, analisis protokol, dan pencocokan konten.

Pengguna dapat mengonfigurasi Snort sebagai sniffer, pencatat paket — seperti TCPdump atau Wireshark– atau metode pencegahan intrusi jaringan.

ok baik itu saja teori nya, langsung saja praktek. silahkan sediakan komputer, server virtual (bisa public atau lokal) dan internet yang cepat.

Install SNORT dan konfigurasi

pertama-tama install snort.

apt install snort -y

maka akan terinstall snort versi 2.9.x.x. kemudian setelah itu buka file bernama /etc/snort/snort.debian.conf kemudian isi variabel DEBIAN_SNORT_OPTIONS dengan value -A full. Maka jadinya seperti ini:

DEBIAN_SNORT_STARTUP=”boot”

DEBIAN_SNORT_HOME_NET=”eth0″

#DEBIAN_SNORT_OPTIONS=””

DEBIAN_SNORT_OPTIONS=”-A full”

DEBIAN_SNORT_INTERFACE=”eth0 eth1 docker0″

DEBIAN_SNORT_SEND_STATS=”true”

DEBIAN_SNORT_STATS_RCPT=”root”

DEBIAN_SNORT_STATS_THRESHOLD=”1″

untuk menjalankan snort bisa dua mode, yaitu mode console dan mode background running.

untuk background running bisa menggunakan perintah berikut:

snort -c /etc/snort/snort.conf -l /var/log/snort/ -K ascii -D

untuk running sebagai console

snort -A console -c /etc/snort/snort.conf -i eth0 -v

Keterangan perintah

FlagKeterangan
SnortPerintah untuk menjalankan service snort
-c /etc/snort/snort.confGunakan rules pada file konfigurasi /etc/snort/snort.conf
-l /var/log/snortSimpan log pada /var/log/snort
-K asciiSimpan log dalam bentuk ascii
-DJalan snort di latar belakang
-A consoleMenentukan mode output alert Snort, dengan console sebagai pilihan untuk menampilkan alert langsung di layar terminal.
-i eth0Memilih antarmuka jaringan (eth0) untuk dipantau oleh Snort. Pastikan antarmuka ini aktif dan memiliki lalu lintas yang relevan.
-vMenampilkan paket-paket yang diterima secara langsung di terminal. Informasi yang ditampilkan meliputi header paket, alamat IP sumber dan tujuan, serta protokol.

pada blog ini aku jalan snort mode background.

Dasar Menulis Rules

Snort mendeteksi berdasarkan rule atau aturan yang di buat. Didalam snort sudah banyak rule yang bisa digunakan (file rule ada pada /etc/snort/rule) tetapi kali ini aku membuat rule atau aturan sendiri. Pertama-tama format rule, format rul seperti ini:

action protocol address port direction address port (rule option)

Format rule Snort terdiri dari beberapa bagian, yaitu action, protocol, address, port, direction, address, port, dan rule options. Berikut penjelasan rinci untuk masing-masing bagian:

1. Action

Menentukan tindakan yang dilakukan Snort ketika mendeteksi kecocokan dengan aturan. Contoh tindakan:

  • alert: Menghasilkan alert atau notifikasi.
  • log: Merekam paket ke dalam file log.
  • pass: Mengabaikan paket.
  • drop: Menjatuhkan paket (hanya pada mode inline).
  • reject: Menolak koneksi dan memberi tahu pengirim.
  • sdrop: Menjatuhkan paket tanpa mencatatnya

2. Protocol

Menentukan protokol jaringan yang diperiksa. Contoh protokol:

  • tcp: Untuk lalu lintas TCP.
  • udp: Untuk lalu lintas UDP.
  • icmp: Untuk pesan ICMP.
  • ip: Untuk semua lalu lintas IP.

3. Address (Sumber dan Tujuan)

Menentukan alamat sumber dan tujuan paket. Format:

  • Alamat IP spesifik: 192.168.1.1
  • Subnet: 192.168.1.0/24
  • Semua alamat: any
  • Negasi: !192.168.1.0/24 (alamat yang tidak termasuk subnet ini).

4. Port (Sumber dan Tujuan)

Menentukan port sumber atau tujuan. Format:

  • Port spesifik: 80
  • Rentang port: 8000:9000
  • Semua port: any
  • Negasi: !80

5. Direction

Menentukan arah lalu lintas yang diperiksa:

  • ->: Dari alamat sumber ke tujuan.
  • <-: Dari alamat tujuan ke sumber.
  • <>: Dua arah (bidirectional).

6. Rule Options

Dibungkus dalam tanda kurung () dan berisi kriteria tambahan serta tindakan saat aturan cocok. Beberapa elemen dalam rule options:

  • msg: Pesan yang ditampilkan saat aturan cocok.
    Contoh: msg:"Possible SQL Injection";
  • sid: ID unik aturan.
    Contoh: sid:1000001;
  • rev: Revisi aturan.
    Contoh: rev:1;
  • content: String konten yang dicari dalam paket.
    Contoh: content:"SELECT";
  • threshold: Mengontrol frekuensi notifikasi.
    Contoh: threshold:type limit, track by_dst, count 1, seconds 60;

Contoh aturan snort untuk mendeteksi permintaan GET dan POST:

REQRule
GETalert tcp any any -> any 80 (msg:”GET Request Detected”; content:”GET”; http_method; sid:1000012;)
POSTalert tcp any any -> any 80 (msg:”POST Requet Detected”; content:”POST”; http_method; sid:1000013;)

Penjelasan aturan GET

Action:
alert → Menghasilkan notifikasi saat aturan cocok.

Protocol:
tcp → Aturan ini berlaku untuk lalu lintas protokol TCP.

Address (Sumber dan Tujuan):
any any → Aturan berlaku untuk semua alamat IP dan port sebagai sumber.
-> → Lalu lintas diarahkan ke alamat tujuan.

Address Tujuan:
any 80 → Aturan berlaku untuk semua alamat tujuan pada port 80 (umumnya digunakan untuk HTTP).

Rule Options:

  • msg:"GET Request Detected";
    Menampilkan pesan “GET Request Detected” saat aturan cocok.
  • content:"GET";
    Mendeteksi string “GET” dalam payload.
  • http_method;
    Memastikan string “GET” adalah metode HTTP (bukan string sembarangan dalam data).
  • sid:1000012;
    Memberikan Snort ID (sid) unik untuk aturan ini.

Penjelasan aturan POST

Action:
alert → Menghasilkan notifikasi saat aturan cocok.

Protocol:
tcp → Aturan ini berlaku untuk lalu lintas protokol TCP.

Address (Sumber dan Tujuan):
any any → Aturan berlaku untuk semua alamat IP dan port sebagai sumber.
-> → Lalu lintas diarahkan ke alamat tujuan.

Address Tujuan:
any 80 → Aturan berlaku untuk semua alamat tujuan pada port 80 (umumnya digunakan untuk HTTP).

Rule Options:

  • msg:"POST Request Detected";
    Menampilkan pesan “POST Request Detected” saat aturan cocok.
  • content:"POST";
    Mendeteksi string “POST” dalam payload.
  • http_method;
    Memastikan string “POST” adalah metode HTTP.
  • sid:1000013;
    Memberikan Snort ID (sid) unik untuk aturan ini.

Deteksi Serangan DDOS

buka file /etc/snort/rules/local.rules untuk membuat rule sendiri atau kustom:

alert tcp any any -> $HOME_NET 80 (flags: S; msg:"Serangan DDOS"; detection_filter: track by_dst, count 10000, seconds 60; sid:1000002;)

Penjelasan rule:

setelah rule di tulis, jalan service snort dengan perintah systemctl start snort kemudian jalankan snort di latar belakang snort -c /etc/snort/snort.conf -l /var/log/snort/ -K ascii -D. Setelah itu log kita bisa watch file alert nya di /var/log/snort/alert. Jika ingin melihat secara real-time gunakan perintah beritkut watch -n 1 tail /var/log/snort/alert.

Uji Coba Serangan Deteksi DDOS

gunakan hping:

hping3 -S -p 80 -d 120 --flood <IP target>

Penjelasan perintah:

setelah perintah hping di jalankan, maka pada monitor file alert, akan seperti ini:

dari file alert ini, bisa di integrasikan dengan bot telegram untuk notifikasi serangan ke admin. seperti ini contohnya:

Sekian terima kasih sudah membaca sampai akhir, semoga ilmu nya bermanfaat untuk keperluan mu 😀

By cicak

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *