Halo teman-teman NewbieNotes! Kali ini kita akan bahas topik yang sangat penting untuk keamanan server, terutama buat yang menjalankan Zimbra Mail Server.
Pernah lihat log server kamu penuh dengan percobaan login gagal dari IP asing? Itu tandanya ada yang mencoba menerobos (brute-force). Nah, untuk mengatasinya, kita akan pasang Fail2ban. Anggap saja Fail2ban ini seperti satpam digital yang akan otomatis memblokir IP yang mencoba masuk berkali-kali gagal.
Yuk, kita mulai!
Apa itu Fail2ban?
Fail2ban adalah software yang memonitor log file server. Ketika ada IP yang melakukan percobaan login gagal melewati batas yang kita tentukan (misal 3 kali), Fail2ban akan langsung memblokir IP tersebut menggunakan firewall (seperti UFW) selama waktu tertentu.
Langkah 1: Install Fail2ban
Pertama, install dulu paket Fail2ban. Biasanya sudah tersedia di repository default.
Untuk Ubuntu/Debian:
sudo apt update
sudo apt install fail2ban ufw -y
Tips: Pastikan UFW (firewall) sudah aktif dan kamu tidak sedang terkunci dari server ya.
Langkah 2: Buat File Filter Khusus Zimbra
Fail2ban bekerja berdasarkan pola (regex) di dalam file log. Karena Zimbra punya format log yang khas, kita perlu membuatkan file filter khusus.
Buat file baru di /etc/fail2ban/filter.d/zimbra-auth.conf:
sudo nano /etc/fail2ban/filter.d/zimbra-auth.conf
Isi dengan skrip berikut:
[Definition]
failregex = ^.*\[name=.*;oip=<HOST>(?:,.*)?;.*\] security - cmd=Auth;.*error=authentication failed.*$
^.*\[ip=.*;oip=<HOST>(?:,.*)?;.*\] security - cmd=Auth;.*error=authentication failed.*$
^.*postfix/submission/smtpd.*: warning: unknown\[<HOST>\]: SASL .* authentication failed.*$
Penjelasan singkat: Pola di atas akan menangkap percobaan login gagal, baik dari log audit.log Zimbra maupun dari log zimbra.log (untuk percobaan via SMTP/SASL). Kerennya lagi, pola ini tetap bisa membaca IP publik meskipun di log muncul dua IP (misal IP publik dan IP proxy Nginx).
Langkah 3: Konfigurasi Jail (Aturan Penjara)
Setelah filter dibuat, kita pasang aturan "penjara"-nya. Buat file di /etc/fail2ban/jail.d/zimbra.conf:
sudo nano /etc/fail2ban/jail.d/zimbra.conf
Isi dengan konfigurasi berikut:
[zimbra-auth]
enabled = true
port = 25,465,587,7071,8443,993,995
protocol = tcp
filter = zimbra-auth
backend = polling
logpath = /opt/zimbra/log/audit.log
/var/log/zimbra.log
action = ufw
maxretry = 3
findtime = 1800
bantime = 86400
ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24
Apa arti semua ini? (Gue jelasin biar paham):
- enabled = true : Mengaktifkan aturan ini.
- port : Port-port Zimbra yang akan dilindungi (SMTP, POP3, IMAP, Webmail, Admin).
- filter : Mengacu ke file filter yang kita buat tadi.
- logpath : Memberi tahu Fail2ban di mana log Zimbra berada.
- action = ufw : Perintah yang dijalankan saat memblokir adalah menambahkan aturan ke UFW.
- maxretry = 3 : Jika gagal login 3 kali dalam periode tertentu, langsung blokir.
- findtime = 1800 : Periode waktu yang dihitung adalah 1800 detik (30 menit).
- bantime = 86400 : IP yang diblokir akan tetap terblokir selama 86400 detik (24 jam).
- ignoreip : IP lokal (internal) diabaikan, biar kita nggak keblokir saat akses dari kantor atau rumah.
Langkah 4: (Opsional) Tambahkan IP Proxy ke Zimbra
Buat kamu yang pakai Nginx atau HAProxy sebagai proxy di depan Zimbra, ada baiknya kita kasih tahu Zimbra agar menerima header X-Forwarded-For. Dengan begitu, Zimbra tetap bisa mencatat IP asli pengunjung.
Jalankan perintah ini sebagai user zimbra:
su - zimbra
zmprov mcf +zimbraMailTrustedIP 192.168.200.10
zmmailboxdctl restart
exit
Ganti 192.168.200.10 dengan IP server proxy kamu. (Jika tidak pakai proxy, abaikan langkah ini).
Langkah 5: Restart dan Cek Status
Setelah semua konfigurasi selesai, saatnya restart Fail2ban agar aturan langsung berlaku.
sudo systemctl restart fail2ban
Untuk memastikan satpam digital kita sudah on, cek status jail zimbra-auth:
sudo fail2ban-client status zimbra-auth
Jika berhasil, outputnya akan menampilkan daftar IP yang sedang diblokir. Seperti ini contohnya:
Status for the jail: zimbra-auth
|- Filter
| |- Currently failed: 0
| |- Total failed: 0
`- Actions
|- Currently banned: 1
|- Total banned: 5
`- Banned IP list: 175.158.43.43
Kesimpulan
Dengan langkah-langkah simpel di atas, Zimbra mail server kamu sekarang sudah lebih aman dari serangan brute-force. Fail2ban akan bekerja otomatis di belakang layar tanpa perlu kamu pantau terus-menerus.
Prinsip keamanan itu sederhana: Jangan percaya siapa pun yang mencoba masuk berkali-kali gagal!
Semoga tutorial ini bermanfaat buat teman-teman NewbieNotes. Kalau ada pertanyaan atau saran, jangan ragu untuk berkomentar di bawah ya!
Stay secure, stay newbie! 😄