Tutorial: Monitoring Fail2Ban Simple
Monitoring Fail2Ban menggunakan HTML dan She;ll Script yang diotomatisasi dengan cronjob
Fail2Ban Monitoring dengan HTML dan Bash Script
Dalam tutorial ini, kita akan membuat sistem monitoring sederhana untuk Fail2Ban menggunakan HTML dan Bash Script. Sistem ini akan menghasilkan laporan dalam format HTML dari data Fail2Ban dan mengirimkan laporan tersebut ke server monitoring lain menggunakan rsync. Kita juga akan mengatur cron job untuk menjalankan script secara otomatis.
1. Persiapan
Pastikan Anda memiliki akses ke server yang menjalankan Fail2Ban dan server monitoring tempat laporan akan dikirimkan. Anda juga memerlukan akses ke terminal dan hak istimewa untuk menulis dan menjalankan script.
2. Script Bash
Buat script bash berikut dan simpan dengan nama fail2ban-monitor.sh
di server yang menjalankan Fail2Ban:
#!/bin/bash
# Ambil daftar aturan dari firewall
firewall-cmd --list-rich-rules > /tmp/rich-rules.txt
# Tentukan nama file output HTML
OUTPUT_FILE="/tmp/fail2ban.html"
# Mulai membuat file HTML
echo "<!DOCTYPE html>
<html>
<head>
<title>Fail2Ban Monitoring</title>
<style>
table {
width: 100%;
border-collapse: collapse;
}
table, th, td {
border: 1px solid black;
}
th, td {
padding: 8px;
text-align: left;
}
th {
background-color: #f2f2f2;
}
</style>
</head>
<body>
<h2>Fail2Ban Monitoring</h2>
<table>
<tr>
<th>Source IP</th>
<th>Port</th>
<th>Protocol</th>
<th>Action</th>
</tr>" > $OUTPUT_FILE
# Proses file rich-rules.txt untuk membuat baris HTML
while IFS= read -r line; do
# Hanya proses baris yang terdeteksi sebagai alamat IP
if [[ $line =~ source\ address=\"([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)\" ]]; then
ip=${BASH_REMATCH[1]}
port=$(echo $line | grep -oP 'port port="\K[^"]+')
protocol=$(echo $line | grep -oP 'protocol="\K[^"]+')
action=$(echo $line | grep -oP 'reject type="\K[^"]+')
# Tambahkan baris ke tabel HTML
echo " <tr>
<td>$ip</td>
<td>$port</td>
<td>$protocol</td>
<td>$action</td>
</tr>" >> $OUTPUT_FILE
fi
done < "/tmp/rich-rules.txt"
# Akhiri file HTML
echo " </table>
</body>
</html>" >> $OUTPUT_FILE
# Kirim hasil log ke server monitoring
rsync -ravzh --delete-after -e 'ssh -p2930' $OUTPUT_FILE root@192.168.1.100:/var/www/html/fail2ban.html
3. Menambahkan Izin Eksekusi
Jadikan script bash tersebut dapat dieksekusi dengan perintah:
chmod +x fail2ban-monitor.sh
4. Mengatur Cron Job
Untuk menjalankan script secara otomatis pada interval tertentu, tambahkan cron job. Edit file crontab dengan perintah:
crontab -e
Tambahkan baris berikut untuk menjalankan script setiap jam (sesuaikan sesuai kebutuhan):
0 * * * * /path/to/fail2ban-monitor.sh
Gantilah /path/to/fail2ban-monitor.sh
dengan jalur lengkap ke script Anda.
5. Menyajikan HTML di Server Monitoring
Pastikan server monitoring yang menerima file HTML dapat menyajikan file tersebut melalui HTTP. Anda bisa menggunakan server web seperti Apache atau Nginx.
Contoh konfigurasi server Apache:
Tempatkan file HTML di /var/www/html/
dan pastikan Apache menjalankan layanan tersebut:
sudo systemctl restart apache2
6. Verifikasi
Setelah cron job dijalankan, buka URL berikut di browser Anda untuk memeriksa hasil monitoring:
http://192.168.1.100/fail2ban.html
Anda sekarang memiliki sistem monitoring Fail2Ban yang sederhana namun efektif. Script ini akan memantau aturan Fail2Ban, menghasilkan laporan HTML, dan mengirimkannya ke server monitoring secara otomatis.
Untuk kode lengkap dan detail lainnya, kunjungi repositori GitHub kami: Fail2ban-Simple-Monitoring
Jika ada pertanyaan atau jika Anda mengalami masalah, jangan ragu untuk bertanya!
What's Your Reaction?