Difference between revisions of "KI: PRAKTEK 5: Intrusion Detection Dasar"

From OnnoWiki
Jump to navigation Jump to search
 
Line 15: Line 15:
  
 
===2. Signature-based vs Anomaly-based Detection===
 
===2. Signature-based vs Anomaly-based Detection===
Signature-based Detection
+
 
 +
====Signature-based Detection====
 +
 
 
Mencocokkan trafik dengan pola serangan yang sudah dikenal.
 
Mencocokkan trafik dengan pola serangan yang sudah dikenal.
 +
 
Contoh:
 
Contoh:
Request HTTP mengandung /etc/passwd
+
* Request HTTP mengandung /etc/passwd
Scan port berurutan
+
* Scan port berurutan
Payload mengandung shellcode
+
* Payload mengandung shellcode
 +
 
 
Kelebihan
 
Kelebihan
Akurat
+
* Akurat
Sedikit false positive
+
* Sedikit false positive
 +
 
 
Kekurangan
 
Kekurangan
Tidak bisa mendeteksi serangan baru (zero-day)
+
* Tidak bisa mendeteksi serangan baru (zero-day)
Anomaly-based Detection
+
 
 +
====Anomaly-based Detection====
 
Mencari perilaku yang menyimpang dari kebiasaan normal.
 
Mencari perilaku yang menyimpang dari kebiasaan normal.
 +
 
Contoh:
 
Contoh:
1000 request dalam 1 detik
+
* 1000 request dalam 1 detik
Login gagal berulang
+
* Login gagal berulang
Pola waktu akses tidak wajar
+
* Pola waktu akses tidak wajar
 +
 
 
Kelebihan
 
Kelebihan
Bisa mendeteksi serangan baru
+
* Bisa mendeteksi serangan baru
Cocok untuk unknown attack
+
* Cocok untuk unknown attack
 +
 
 
Kekurangan
 
Kekurangan
Banyak false positive
+
* Banyak false positive
Perlu baseline yang baik
+
* Perlu baseline yang baik
 
Di dunia nyata, IDS modern menggabungkan dua pendekatan ini.
 
Di dunia nyata, IDS modern menggabungkan dua pendekatan ini.
Tools yang Digunakan (Open Source)
+
 
 +
==Tools yang Digunakan (Open Source)==
 
Kita akan menggunakan dua pendekatan nyata:
 
Kita akan menggunakan dua pendekatan nyata:
Snort → contoh signature-based IDS
+
* Snort → contoh signature-based IDS
Python Log Parser → simulasi anomaly-based IDS
+
* Python Log Parser → simulasi anomaly-based IDS
 
Semua dijalankan di:
 
Semua dijalankan di:
Ubuntu Linux 24.04
+
* Ubuntu Linux 24.04
Tanpa software proprietary
+
* Tanpa software proprietary
BAGIAN A — IDS Signature-Based dengan Snort
+
 
Step 1 — Instalasi Snort (Ubuntu 24.04)
+
==BAGIAN A — IDS Signature-Based dengan Snort==
 +
 
 +
===Step 1 — Instalasi Snort (Ubuntu 24.04)===
 +
 
 +
sudo apt update
 +
sudo apt install -y snort
  
sudo apt update
 
sudo apt install -y snort
 
 
Saat instalasi:
 
Saat instalasi:
Pilih interface jaringan (misalnya eth0 atau ens33)
+
* Pilih interface jaringan (misalnya eth0 atau ens33)
HOME_NET → isi dengan jaringan lokal, contoh:
+
* HOME_NET → isi dengan jaringan lokal, contoh:
 
192.168.1.0/24
 
192.168.1.0/24
 +
 
Verifikasi:
 
Verifikasi:
snort -V
+
 
Step 2 — Menjalankan Snort dalam Mode IDS
+
snort -V
 +
 
 +
===Step 2 — Menjalankan Snort dalam Mode IDS===
 +
 
 
Gunakan mode console agar alert langsung terlihat:
 
Gunakan mode console agar alert langsung terlihat:
sudo snort -A console -q -c /etc/snort/snort.conf -i eth0
+
 
 +
sudo snort -A console -q -c /etc/snort/snort.conf -i eth0
 +
 
 
Keterangan:
 
Keterangan:
-A console → tampilkan alert di terminal
+
-A console → tampilkan alert di terminal
-q → quiet mode
+
-q → quiet mode
-c → file konfigurasi
+
-c → file konfigurasi
-i → interface jaringan
+
-i → interface jaringan
Step 3 — Membuat Rule IDS Sederhana (Signature)
+
 
 +
===Step 3 — Membuat Rule IDS Sederhana (Signature)===
 
Buka file rule lokal:
 
Buka file rule lokal:
sudo nano /etc/snort/rules/local.rules
+
sudo nano /etc/snort/rules/local.rules
 
Tambahkan rule berikut:
 
Tambahkan rule berikut:
alert icmp any any -> any any (msg:"ICMP Ping Detected"; sid:1000001; rev:1;)
+
alert icmp any any -> any any (msg:"ICMP Ping Detected"; sid:1000001; rev:1;)
 
Reload Snort:
 
Reload Snort:
sudo systemctl restart snort
+
sudo systemctl restart snort
Step 4 — Simulasi Serangan Sederhana (Ping Flood)
+
 
 +
===Step 4 — Simulasi Serangan Sederhana (Ping Flood)===
 
Dari mesin lain (atau VM kedua):
 
Dari mesin lain (atau VM kedua):
ping -c 5 IP_TARGET
+
ping -c 5 IP_TARGET
 
Hasil yang Diharapkan
 
Hasil yang Diharapkan
Snort akan menampilkan alert:
+
Snort akan menampilkan alert:
[**] ICMP Ping Detected [**]
+
[**] ICMP Ping Detected [**]
  
 
Interpretasi
 
Interpretasi
IDS mendeteksi trafik ICMP
+
* IDS mendeteksi trafik ICMP
Bukan serangan fatal, tapi indikasi reconnaissance
+
* Bukan serangan fatal, tapi indikasi reconnaissance
Step 5 — Simulasi Serangan Port Scanning
+
 
 +
===Step 5 — Simulasi Serangan Port Scanning===
 
Install nmap:
 
Install nmap:
sudo apt install -y nmap
+
sudo apt install -y nmap
 
Lakukan scan:
 
Lakukan scan:
nmap -sS IP_TARGET
+
nmap -sS IP_TARGET
 
Snort akan memunculkan alert scanning jika rule aktif.
 
Snort akan memunculkan alert scanning jika rule aktif.
Output Snort
+
==Output Snort==
Alert di terminal
+
* Alert di terminal
Log di /var/log/snort/alert
+
* Log di /var/log/snort/alert
 +
 
 
Contoh log:
 
Contoh log:
[1:1000001:1] ICMP Ping Detected
+
[1:1000001:1] ICMP Ping Detected
BAGIAN B — IDS Sederhana dengan Python (Anomaly-Based)
+
 
 +
==BAGIAN B — IDS Sederhana dengan Python (Anomaly-Based)==
 +
 
 
Sekarang kita tidak pakai signature, tapi analisis perilaku log.
 
Sekarang kita tidak pakai signature, tapi analisis perilaku log.
Tujuan
+
 
 +
===Tujuan===
 
Mendeteksi:
 
Mendeteksi:
Terlalu banyak request
+
* Terlalu banyak request
Pola akses tidak normal
+
* Pola akses tidak normal
Brute-force login
+
* Brute-force login
Step 1 — Contoh Log yang Dianalisis
+
 
 +
===Step 1 — Contoh Log yang Dianalisis===
 
Misalnya log web server (access.log):
 
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: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: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:03] "GET /login HTTP/1.1" 401
192.168.1.10 - - [20/Jan/2026:10:00:04] "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
+
===Step 2 — Script Python IDS Sederhana===
 
Buat file ids_log_parser.py:
 
Buat file ids_log_parser.py:
from collections import defaultdict
 
  
THRESHOLD = 3
+
from collections import defaultdict
ip_counter = defaultdict(int)
+
 +
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
  
with open("access.log", "r") as log:
+
===Interpretasi Output====
    for line in log:
+
[ALERT] Suspicious activity from 192.168.1.10 (4 requests)
        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:
 
Maknanya:
IP melakukan request berulang
+
* IP melakukan request berulang
Bisa indikasi brute-force, bot, atau scanner
+
* Bisa indikasi brute-force, bot, atau scanner
Diskusi Keamanan (Penting)
+
 
Apakah ini serangan pasti? → Tidak
+
====Diskusi Keamanan (Penting)===
Apakah ini indikasi awal? → Ya
+
* Apakah ini serangan pasti? → Tidak
Apakah perlu investigasi lanjut? → Wajib
+
* Apakah ini indikasi awal? → Ya
IDS tidak mengambil keputusan, IDS memberi sinyal.
+
* Apakah perlu investigasi lanjut? → Wajib
Manusialah yang memutuskan.
+
IDS tidak mengambil keputusan, IDS memberi sinyal.
Output Praktikum (Yang Dikumpulkan)
+
Manusialah yang memutuskan.
 +
 
 +
==Output Praktikum (Yang Dikumpulkan)==
 
Mahasiswa wajib menyerahkan:
 
Mahasiswa wajib menyerahkan:
Log alert Snort
+
* Log alert Snort
Output script Python
+
* Output script Python
Interpretasi singkat, menjawab:
+
* Interpretasi singkat, menjawab:
Serangan apa?
+
** Serangan apa?
Bukti teknisnya?
+
** Bukti teknisnya?
Dampak jika tidak terdeteksi?
+
** Dampak jika tidak terdeteksi?
 
Kesimpulan
 
Kesimpulan
Security bukan tentang tool
+
* Security bukan tentang tool
IDS bukan alat ajaib
+
* IDS bukan alat ajaib
Yang penting adalah:
+
* Yang penting adalah:
Visibility
+
** Visibility
Log
+
** Log
Reasoning
+
** Reasoning
 +
 
 
Jika kamu bisa menjelaskan KENAPA sebuah alert muncul,
 
Jika kamu bisa menjelaskan KENAPA sebuah alert muncul,
 
berarti kamu sudah berpikir seperti security engineer.
 
berarti kamu sudah berpikir seperti security engineer.

Latest revision as of 08:15, 23 January 2026

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