Kembali ke Blogs
2026-05-20
5 min read
Data Science / Security

Analisis Log Nginx Dengan Pandas & NumPy Untuk Deteksi Serangan

Pendahuluan

File log web server seperti Nginx menyimpan ribuan data kunjungan yang sangat berharga. Namun, saat terjadi serangan, membaca file log berukuran gigabyte secara manual sangatlah mustahil. Artikel ini membahas cara melakukan parsing log menggunakan pustaka Python **Pandas** dan **NumPy** untuk menganalisis pola akses mencurigakan.

Mengimpor Log ke Pandas

File log Nginx umumnya berformat Common Log Format (CLF). Kita dapat membaca log ini menggunakan regex di Pandas:

python
import pandas as pd

log_pattern = r'([^ ]*) ([^ ]*) ([^ ]*) \[(.*?)\] "([^ ]*) (.*?) (.*?)" ([0-9]*) ([0-9]*)' data = []

with open("access.log", "r") as f: for line in f: match = re.match(log_pattern, line) if match: data.append(match.groups())

df = pd.DataFrame(data, columns=['ip', 'client', 'user', 'datetime', 'method', 'request', 'protocol', 'status', 'size']) print(df.head())

Deteksi Serangan Brute Force & Scanning

Setelah log diubah ke format DataFrame, kita dapat dengan mudah menyaring IP yang melakukan request halaman error 404 atau login gagal secara berlebihan:

python
# Deteksi IP yang mengakses halaman 404 lebih dari 50 kali errors = df[df['status'] == '404'] attacker_ips = errors['ip'].value_counts()

print("IP Mencurigakan (Banyak request 404):") print(suspicious_ips)

Dengan mengotomatisasi skrip ini di server Homelab, kita bisa langsung mengirimkan IP mencurigakan ke **Fail2ban** atau memblokirnya langsung melalui firewall MikroTik.

#Python#Pandas#Cyber Security#Nginx
DashboardProjectsBlogsResumeHomelabChats