Difference between revisions of "KI: PRAKTEK 5: Intrusion Detection Dasar"
Onnowpurbo (talk | contribs) (Created page with "PRAKTEK 5: Intrusion Detection Dasar Tujuan Setelah praktikum ini, mahasiswa mampu mendeteksi serangan sederhana di jaringan, memahami jenis alert IDS, dan menafsirkan makna t...") |
Onnowpurbo (talk | contribs) |
||
| (One intermediate revision by the same user not shown) | |||
| Line 1: | Line 1: | ||
| − | + | ||
| − | Tujuan | + | ==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. | 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: | Yang dilatih bukan hanya “menjalankan tool”, tetapi cara berpikir security analyst: | ||
| − | Apa yang normal? | + | * Apa yang normal? |
| − | Apa yang mencurigakan? | + | * Apa yang mencurigakan? |
| − | Kenapa ini dianggap serangan? | + | * Kenapa ini dianggap serangan? |
| − | Konsep Inti (Wajib Dipahami) | + | |
| − | 1. Apa itu Intrusion Detection System (IDS) | + | ==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 adalah sistem yang mengamati trafik atau log, lalu memberi peringatan (alert) ketika menemukan pola yang dianggap berbahaya. | ||
| − | IDS ≠ Firewall | + | IDS ≠ Firewall |
| − | Firewall mencegah, IDS mendeteksi. | + | Firewall mencegah, IDS mendeteksi. |
| − | 2. Signature-based vs Anomaly-based Detection | + | |
| − | Signature-based Detection | + | ===2. Signature-based vs Anomaly-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 | ||
| − | |||
| − | |||
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: | ||
| − | |||
| − | 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 | |
| − | + | ||
| − | + | ===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.