KI: PRAKTEK 5: Intrusion Detection Dasar

From OnnoWiki
Revision as of 08:15, 23 January 2026 by Onnowpurbo (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Tujuan

Setelah praktikum ini, mahasiswa mampu mendeteksi serangan sederhana di jaringan, memahami jenis alert IDS, dan menafsirkan makna teknis di balik alert, bukan hanya membaca log secara pasif.

Yang dilatih bukan hanya “menjalankan tool”, tetapi cara berpikir security analyst:

  • Apa yang normal?
  • Apa yang mencurigakan?
  • Kenapa ini dianggap serangan?

Konsep Inti (Wajib Dipahami)

1. Apa itu Intrusion Detection System (IDS)

IDS adalah sistem yang mengamati trafik atau log, lalu memberi peringatan (alert) ketika menemukan pola yang dianggap berbahaya.

IDS ≠ Firewall
Firewall mencegah, IDS mendeteksi.

2. Signature-based vs Anomaly-based Detection

Signature-based Detection

Mencocokkan trafik dengan pola serangan yang sudah dikenal.

Contoh:

  • Request HTTP mengandung /etc/passwd
  • Scan port berurutan
  • Payload mengandung shellcode

Kelebihan

  • Akurat
  • Sedikit false positive

Kekurangan

  • Tidak bisa mendeteksi serangan baru (zero-day)

Anomaly-based Detection

Mencari perilaku yang menyimpang dari kebiasaan normal.

Contoh:

  • 1000 request dalam 1 detik
  • Login gagal berulang
  • Pola waktu akses tidak wajar

Kelebihan

  • Bisa mendeteksi serangan baru
  • Cocok untuk unknown attack

Kekurangan

  • Banyak false positive
  • Perlu baseline yang baik

Di dunia nyata, IDS modern menggabungkan dua pendekatan ini.

Tools yang Digunakan (Open Source)

Kita akan menggunakan dua pendekatan nyata:

  • Snort → contoh signature-based IDS
  • Python Log Parser → simulasi anomaly-based IDS

Semua dijalankan di:

  • Ubuntu Linux 24.04
  • Tanpa software proprietary

BAGIAN A — IDS Signature-Based dengan Snort

Step 1 — Instalasi Snort (Ubuntu 24.04)

sudo apt update
sudo apt install -y snort

Saat instalasi:

  • Pilih interface jaringan (misalnya eth0 atau ens33)
  • HOME_NET → isi dengan jaringan lokal, contoh:

192.168.1.0/24

Verifikasi:

snort -V

Step 2 — Menjalankan Snort dalam Mode IDS

Gunakan mode console agar alert langsung terlihat:

sudo snort -A console -q -c /etc/snort/snort.conf -i eth0

Keterangan:

-A console → tampilkan alert di terminal
-q → quiet mode
-c → file konfigurasi
-i → interface jaringan

Step 3 — Membuat Rule IDS Sederhana (Signature)

Buka file rule lokal:

sudo nano /etc/snort/rules/local.rules

Tambahkan rule berikut:

alert icmp any any -> any any (msg:"ICMP Ping Detected"; sid:1000001; rev:1;)

Reload Snort:

sudo systemctl restart snort

Step 4 — Simulasi Serangan Sederhana (Ping Flood)

Dari mesin lain (atau VM kedua):

ping -c 5 IP_TARGET

Hasil yang Diharapkan

Snort akan menampilkan alert:
[**] ICMP Ping Detected [**]

Interpretasi

  • IDS mendeteksi trafik ICMP
  • Bukan serangan fatal, tapi indikasi reconnaissance

Step 5 — Simulasi Serangan Port Scanning

Install nmap:

sudo apt install -y nmap

Lakukan scan:

nmap -sS IP_TARGET

Snort akan memunculkan alert scanning jika rule aktif.

Output Snort

  • Alert di terminal
  • Log di /var/log/snort/alert

Contoh log:

[1:1000001:1] ICMP Ping Detected

BAGIAN B — IDS Sederhana dengan Python (Anomaly-Based)

Sekarang kita tidak pakai signature, tapi analisis perilaku log.

Tujuan

Mendeteksi:

  • Terlalu banyak request
  • Pola akses tidak normal
  • Brute-force login

Step 1 — Contoh Log yang Dianalisis

Misalnya log web server (access.log):

192.168.1.10 - - [20/Jan/2026:10:00:01] "GET /login HTTP/1.1" 200
192.168.1.10 - - [20/Jan/2026:10:00:02] "GET /login HTTP/1.1" 401
192.168.1.10 - - [20/Jan/2026:10:00:03] "GET /login HTTP/1.1" 401
192.168.1.10 - - [20/Jan/2026:10:00:04] "GET /login HTTP/1.1" 401

Step 2 — Script Python IDS Sederhana

Buat file ids_log_parser.py:

from collections import defaultdict

THRESHOLD = 3
ip_counter = defaultdict(int)

with open("access.log", "r") as log:
    for line in log:
        ip = line.split()[0]
        ip_counter[ip] += 1

for ip, count in ip_counter.items():
    if count > THRESHOLD:
        print(f"[ALERT] Suspicious activity from {ip} ({count} requests)")

Jalankan:

python3 ids_log_parser.py

Interpretasi Output=

[ALERT] Suspicious activity from 192.168.1.10 (4 requests)

Maknanya:

  • IP melakukan request berulang
  • Bisa indikasi brute-force, bot, atau scanner

=Diskusi Keamanan (Penting)

  • Apakah ini serangan pasti? → Tidak
  • Apakah ini indikasi awal? → Ya
  • Apakah perlu investigasi lanjut? → Wajib
IDS tidak mengambil keputusan, IDS memberi sinyal.
Manusialah yang memutuskan.

Output Praktikum (Yang Dikumpulkan)

Mahasiswa wajib menyerahkan:

  • Log alert Snort
  • Output script Python
  • Interpretasi singkat, menjawab:
    • Serangan apa?
    • Bukti teknisnya?
    • Dampak jika tidak terdeteksi?

Kesimpulan

  • Security bukan tentang tool
  • IDS bukan alat ajaib
  • Yang penting adalah:
    • Visibility
    • Log
    • Reasoning

Jika kamu bisa menjelaskan KENAPA sebuah alert muncul, berarti kamu sudah berpikir seperti security engineer.


Pranala Menarik