Tutorial: Monitoring Fail2Ban Simple

Monitoring Fail2Ban menggunakan HTML dan She;ll Script yang diotomatisasi dengan cronjob

Tutorial: Monitoring Fail2Ban Simple

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?

like

dislike

love

funny

angry

sad

wow