Log Management
Protokol Syslog
Syslog adalah standar logging untuk sistem UNIX/Linux (RFC 5424). Setiap pesan log memiliki:
- Facility - sumber log (kern, user, mail, daemon, auth, syslog)
- Severity - tingkat keparahan (0=emerg, 1=alert, 2=crit, 3=err, 4=warning, 5=notice, 6=info, 7=debug)
Format standar syslog:
<timestamp> <hostname> <process[pid]>: <message>
Jul 21 10:15:30 server1 sshd[1234]: Failed password for root from 192.168.1.100 port 22 ssh2
rsyslog
rsyslog adalah implementasi syslog modern dengan performa tinggi, dukungan TCP/SSL, dan output ke database.
Konfigurasi di /etc/rsyslog.conf dan
/etc/rsyslog.d/:
# Format: facility.severity action
auth.* /var/log/auth.log
*.info;auth,authpriv.none /var/log/syslog
kern.* /var/log/kern.log
cron.* /var/log/cron.log
mail.* /var/log/mail.log
*.*;auth,authpriv.none -/var/log/syslog
Tanda - sebelum path berarti buffered write (lebih
cepat, resiko data loss saat crash).
Restart setelah ubah konfigurasi:
sudo systemctl restart rsyslog
journald - Systemd Journal
journald adalah sistem logging bawaan systemd yang menyimpan log dalam format binary terstruktur.
Keunggulan journald:
- Terintegrasi dengan systemd - log service otomatis tanpa konfigurasi
- Metadata kaya: PID, UID, GID, priority, boot ID, unit file
- Rotasi otomatis berdasarkan ukuran/waktu
- Query fleksibel dengan journalctl
Konfigurasi di /etc/systemd/journald.conf:
[Journal]
Storage=auto # auto, persistent, volatile, none
SystemMaxUse=500M # Maksimum ukuran log
SystemMaxFileSize=100M # Maksimum per file
MaxRetentionSec=2week # Retention 2 minggu
Compress=yes # Kompresi
ForwardToSyslog=yes # Forward ke rsyslog
Logrotate
logrotate mencegah log memenuhi disk dengan merotasi, mengompresi, dan menghapus log lama.
Konfigurasi di /etc/logrotate.conf:
weekly
rotate 4
create
compress
delaycompress
include /etc/logrotate.d
Konfigurasi per-service di /etc/logrotate.d/nginx:
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
systemctl reload nginx > /dev/null
endscript
}
Jalankan manual:
sudo logrotate -d /etc/logrotate.conf # Dry run
sudo logrotate -f /etc/logrotate.conf # Force rotate
Log Analysis dengan grep dan awk
grep untuk filtering:
# Cari error dalam 24 jam terakhir
grep "$(date +'%b %e')" /var/log/syslog | grep -i error
# Ekstrak IP dari auth.log
grep "Failed password" /var/log/auth.log | awk '{print $(NF-3)}'
# Hitung jumlah failed login per IP
grep "Failed password" /var/log/auth.log \
| awk '{print $(NF-3)}' \
| sort \
| uniq -c \
| sort -rn
awk untuk parsing:
# Hitung error per jam
awk '/ERROR/ {
hour = substr($0, 12, 2)
count[hour]++
}
END {
for (h in count) print h": "count[h]" errors"
}' /var/log/app.log
Centralized Logging
Pada lingkungan multi-server, log dikumpulkan ke satu server:
Rsyslog server:
# Di server log (/etc/rsyslog.conf)
module(load="imtcp")
input(type="imtcp" port="514")
*.* /var/log/central/all.log
Klien mengirim log:
# Di klien (/etc/rsyslog.d/client.conf)
*.* @logserver:514 # UDP (single @)
*.* @@logserver:514 # TCP (double @@)
Alternatif modern: ELK Stack (Elasticsearch, Logstash, Kibana), Loki (Grafana), atau Graylog untuk visualisasi dan alerting.
Log Security
Prinsip keamanan log:
- Jangan hapus log - Log adalah bukti forensik. Hapus hanya setelah backup dan sesuai kebijakan retensi.
- Akses terbatas -
/var/log/hanya bisa dibaca oleh admin (chmod 640, group adm) - Waktu akurat - Gunakan NTP. Tanpa timestamp yang akurat, log tidak berguna untuk forensik.
- Immutable (append-only) - Gunakan
chattr +a /var/log/auth.logagar log hanya bisa ditambahkan, tidak bisa dihapus. - Log rotasi aman - Permission rotasi harus dijaga agar attacker tidak menyusupkan log palsu.
sudo chattr +a /var/log/auth.log # Set append-only
lsattr /var/log/auth.log # Verifikasi flag: ----a--------
Monitoring real-time:
tail -f /var/log/auth.log | grep "Failed password" # Monitor brute force
journalctl -u sshd -f # Journal real-time
Log management yang baik adalah fondasi keamanan siber - tanpa log yang memadai, deteksi insiden dan forensik menjadi mustahil.