• Indonesian
  • English
  • Cara Membaca Log Dovecot Login Failed: Mendeteksi Brute

    Kecepatan:

    Difficulty: Beginner–Intermediate
    Last Updated: 20 Juli 2026
    Tested On: Exim 4.96, Dovecot 2.3.x, cPanel/WHM, CentOS 7/8, AlmaLinux 9

    Pendahuluan

    Suatu sore, saya lagi asyik monitor email queue di server production. Tiba-tiba saya lihat ada dua baris log yang kelihatannya sepele — tapi setelah saya perhatikan lebih dekat, isinya cukup bikin waspada:

    2026-07-20 16:38:05 dovecot_login authenticator failed for H=(aGrT3z2j) [10.0.0.1]:61890: 535 Incorrect authentication data (set_id=info@client-a.com)
    2026-07-20 16:38:06 dovecot_login authenticator failed for H=(jAvmHBGX) [10.0.0.2]:55446: 535 Incorrect authentication data (set_id=info@client-b.com)

    Dua percobaan login email gagal dalam waktu 1 detik, dari dua IP berbeda, mengincar dua email berbeda pula. Tapi ada satu pola yang mencurigakan: HELO string-nya acakaGrT3z2j dan jAvmHBGX. Manusia biasanya pakai nama domain yang jelas (mail.client.com), bukan string random seperti ini.

    Ini awal mula saya menyadari bahwa server email kita sedang jadi target brute force — dan log ini hanyalah puncak gunung es.

    Gejala — Apa yang Terjadi?

    Log ini muncul di /var/log/exim/mainlog (atau /var/log/maillog di beberapa distro). Isinya:

    2026-07-20 16:38:05 dovecot_login authenticator failed for H=(aGrT3z2j) [10.0.0.1]:61890: 535 Incorrect authentication data (set_id=info@client-a.com)
    2026-07-20 16:38:06 dovecot_login authenticator failed for H=(jAvmHBGX) [10.0.0.2]:55446: 535 Incorrect authentication data (set_id=info@client-b.com)

    Gejala-gejalanya:

    • Ada percobaan login ke email (SMTP authentication) yang gagal
    • Error code 535 — “Incorrect authentication data” (password salah)
    • HELO string berupa karakter acak random — indikasi bot
    • Dua IP berbeda dalam 1 detik — indikasi serangan distributed
    • Email yang diincar: info@client-a.com dan info@client-b.com — alamat umum yang sering jadi target

    Root Cause — Apa yang Salah?

    Tidak ada yang “salah” dari sisi server — server bekerja dengan benar. Authentication failed memang karena password-nya salah. Tapi masalahnya adalah serangan brute force yang sedang berlangsung.

    Kenapa Ini Brute Force, Bukan User Lupa Password?

    Ada beberapa tanda yang membedakan:

    1. HELO string acakaGrT3z2j dan jAvmHBGX adalah string random. Manusia yang login dari Outlook/Thunderbird biasanya pakai HELO seperti mail.client.com atau nama komputer (DESKTOP-ABC123). String random adalah ciri khas bot/script
    2. Dua IP berbeda dalam 1 detik — terlalu cepat untuk user yang sama. Ini distributed attack
    3. Email target: info@ — alamat email generik seperti info@, admin@, support@ adalah target utama brute force karena sering punya password lemah
    4. Error code 535 — “Incorrect authentication data” artinya password yang dicoba memang salah. Bot mencoba ribuan kombinasi password

    Bagaimana Membaca Log Ini Detail

    Mari kita bongkar setiap bagian dari log ini satu per satu:

    2026-07-20 16:38:05 dovecot_login authenticator failed for H=(aGrT3z2j) [10.0.0.1]:61890: 535 Incorrect authentication data (set_id=info@client-a.com)
    Bagian Nilai Arti
    2026-07-20 16:38:05 Timestamp Waktu kejadian (20 Juli 2026, jam 16:38:05)
    dovecot_login Authenticator Jenis autentikasi yang digunakan — Dovecot SASL (Simple Authentication and Security Layer). Artinya Exim menggunakan Dovecot untuk memverifikasi username/password
    authenticator failed Status Autentikasi gagal — password tidak cocok
    H=(aGrT3z2j) HELO hostname Nama host yang dikirim client saat SMTP handshake. String random = bot. Manusia pakai nama domain/komputer yang jelas
    [10.0.0.1] Source IP IP address yang mencoba login. IP private ini menunjukkan serangan datang dari dalam jaringan atau via VPN/tunnel
    :61890 Source port Port yang digunakan client. Port tinggi (>1024) adalah normal untuk client
    535 SMTP error code Kode error SMTP. 535 = “Authentication credentials invalid” (password salah atau user tidak ada)
    Incorrect authentication data Error message Pesan error: data autentikasi tidak benar (password salah)
    set_id=info@client-a.com Email target Email yang dicoba login. info@ adalah target umum brute force

    Kenapa Server Tidak Langsung Blok?

    Exim/Dovecot secara default tidak memblokir IP setelah beberapa percobaan gagal. Mereka hanya mencatat log dan melanjutkan. Tanpa konfigurasi tambahan (Fail2Ban, rate limiting, atau firewall rules), brute force bisa berlangsung selama berhari-hari tanpa terdeteksi — kecuali Anda rajin membaca log.

    Step-by-Step Solution — Mengamankan Server Email

    PERINGATAN KEAMANAN: Sebelum Mengubah Config Email

    Mengubah config Dovecot/Exim atau firewall rules bisa memutus akses email seluruh server. Sebelum melanjutkan:

    1. Backup config yang adacp -r /etc/dovecot /etc/dovecot.bak dan cp /etc/exim.conf /etc/exim.conf.bak
    2. Pastikan Anda punya akses alternatif — jika email down, Anda masih bisa hubungi client via Telegram/WhatsApp
    3. Test config sebelum restartdoveconf -n untuk test Dovecot, exim -bV untuk test Exim
    4. Jangan blok IP internal secara permanen — IP private bisa berubah, dan Anda bisa terkunci dari server sendiri

    Langkah 1: Cek Aktivitas Brute Force

    Pertama, kita perlu tahu seberapa parah serangan ini. Jalankan command berikut untuk melihat percobaan login gagal dalam 1 jam terakhir:

    # Hitung jumlah percobaan login gagal per IP dalam 1 jam terakhir
    grep "dovecot_login authenticator failed" /var/log/exim/mainlog | 
      grep "$(date -d '1 hour ago' +'%d/%b/%Y:%H:')" | 
      grep -oE '[[0-9]+.[0-9]+.[0-9]+.[0-9]+]' | 
      sort | uniq -c | sort -rn | head -n 10

    Contoh output:

      15423 10.0.0.1
      12847 10.0.0.2
       9834 10.0.0.3
       8721 10.0.0.4
       7654 10.0.0.5

    Jika angkanya ribuan per IP, itu sudah pasti brute force. Sekarang cek email mana yang paling banyak diincar:

    # Cek email target paling banyak dicoba
    grep "dovecot_login authenticator failed" /var/log/exim/mainlog | 
      grep "$(date -d '1 hour ago' +'%d/%b/%Y:%H:')" | 
      grep -oE 'set_id=[^)]+' | 
      sort | uniq -c | sort -rn | head -n 10

    Contoh output:

      8432 set_id=info@client-a.com
      6721 set_id=admin@client-a.com
      5432 set_id=support@client-a.com
      4321 set_id=info@client-b.com
      3210 set_id=admin@client-b.com

    Email info@, admin@, support@ selalu jadi target utama karena alamat ini umum dikenal dan sering punya password default/lemah.

    Langkah 2: Install & Konfigurasi Fail2Ban

    Fail2Ban adalah solusi paling efektif untuk memblokir IP yang melakukan brute force. Install jika belum ada:

    # Install Fail2Ban (CentOS/RHEL)
    yum install -y fail2ban
    
    # Install Fail2Ban (Ubuntu/Debian)
    apt install -y fail2ban

    Buat config khusus untuk email brute force di /etc/fail2ban/jail.local:

    [DEFAULT]
    bantime = 3600
    findtime = 600
    maxretry = 5
    
    [dovecot]
    enabled = true
    port = smtp,465,submission,imap,pop3,pop3s
    filter = dovecot
    logpath = /var/log/exim/mainlog
    maxretry = 3
    bantime = 86400
    
    [exim]
    enabled = true
    port = smtp,465,submission
    filter = exim
    logpath = /var/log/exim/mainlog
    maxretry = 5
    bantime = 3600

    Penjelasan config:

    • maxretry = 3 — setelah 3 percobaan gagal, IP diblokir
    • bantime = 86400 — blokir selama 24 jam (86400 detik)
    • findtime = 600 — jendela waktu 10 menit untuk menghitung percobaan

    Start Fail2Ban:

    # Start dan enable Fail2Ban
    systemctl enable --now fail2ban
    
    # Cek status
    fail2ban-client status dovecot
    fail2ban-client status exim

    Langkah 3: Rate Limiting di Dovecot

    Selain Fail2Ban, kita bisa menambahkan rate limiting langsung di Dovecot. Edit /etc/dovecot/conf.d/10-auth.conf:

    # Tambahkan di akhir file
    auth_mechanisms = plain login
    
    # Rate limiting — maksimal 5 percobaan per menit per IP
    service auth {
      process_min_avail = 1
      process_limit = 10
    }
    
    # Disable plaintext auth tanpa SSL (keamanan tambahan)
    disable_plaintext_auth = yes

    Restart Dovecot:

    systemctl restart dovecot

    Langkah 4: Blok IP Brute Force via Firewall

    Jika Anda sudah tahu IP mana yang melakukan brute force, bisa blok langsung via firewall:

    # Cek IP yang paling banyak brute force
    grep "dovecot_login authenticator failed" /var/log/exim/mainlog | 
      grep -oE '[[0-9]+.[0-9]+.[0-9]+.[0-9]+]' | 
      sort | uniq -c | sort -rn | head -n 5
    
    # Blok IP dengan iptables (ganti IP yang sesuai)
    iptables -I INPUT -s 10.0.0.1 -j DROP
    iptables -I INPUT -s 10.0.0.2 -j DROP
    
    # Simpan rule agar persisten setelah reboot
    service iptables save

    Langkah 5: Verifikasi

    Setelah konfigurasi diterapkan, cek apakah brute force masih berlangsung:

    # Monitor log secara real-time
    tail -f /var/log/exim/mainlog | grep "dovecot_login authenticator failed"

    Jika Fail2Ban sudah aktif, seharusnya IP brute force sudah diblokir dan log menunjukkan pesan [dovecot] Ban 10.0.0.x.

    Langkah 6: Buat Script Monitoring Brute Force

    Buat script sederhana untuk alert jika brute force terdeteksi:

    #!/bin/bash
    # /usr/local/bin/check-email-brute-force.sh
    
    LOG="/var/log/exim/mainlog"
    THRESHOLD=100
    HOURS=1
    
    COUNT=$(grep "dovecot_login authenticator failed" "$LOG" | 
      grep "$(date -d "${HOURS} hour ago" +'%d/%b/%Y:%H:')" | wc -l)
    
    if [ "$COUNT" -gt "$THRESHOLD" ]; then
        echo "WARNING: $COUNT failed email logins in last $HOURS hour(s)" | 
          mail -s "Email Brute Force Alert" admin@your-server.com
    fi

    Jalankan script ini via cron setiap 30 menit:

    # Edit crontab
    crontab -e
    
    # Tambahkan baris ini
    */30 * * * * /usr/local/bin/check-email-brute-force.sh

    Pro Tips & Warnings

    • Gunakan password kuat untuk email — email info@ sering punya password default dari panel. Segera ganti dengan password minimal 16 karakter
    • Nonaktifkan email yang tidak terpakai — jika ada email info@ yang tidak digunakan, disable atau hapus. Lebih baik tidak ada email daripada email dengan password lemah
    • Gunakan SPF, DKIM, dan DMARC — ini melindungi domain Anda dari spoofing, bukan dari brute force. Tapi tetap penting untuk keamanan email secara keseluruhan
    • Monitor log secara berkala — jangan tunggu sampai ada alert. Cek log minimal sekali sehari
    • Gunakan IP dari RFC 5737 untuk testing — jika Anda ingin test apakah Fail2Ban bekerja, gunakan IP dari range RFC 5737 (192.0.2.x, 198.51.100.x, 203.0.113.x) agar tidak memblokir IP production
    • Backup config sebelum edit — selalu backup /etc/dovecot dan /etc/exim.conf sebelum mengubah apapun

    FAQ

    Q: Apakah error 535 selalu berarti brute force?

    Tidak selalu. Error 535 bisa muncul karena user lupa password, email typo, atau konfigurasi client yang salah. Tapi jika angkanya ribuan dalam satu jam dari banyak IP berbeda dengan HELO string random — itu sudah pasti brute force. Selalu cek konteks sebelum mengambil kesimpulan.

    Q: Bagaimana cara membedakan brute force dan user yang lupa password?

    Perhatikan polanya: (1) User lupa password biasanya hanya 1-2 IP yang sama, (2) HELO string-nya jelas (nama komputer/domain), (3) Waktu percobaan tidak seragam. Brute force: banyak IP berbeda, HELO random, percobaan seragam dalam waktu singkat.

    Q: Apakah Fail2Ban bisa memblokir IP yang salah (false positive)?

    Bisa, jika maxretry terlalu rendah. Misal, user yang benar-benar lupa password dan mencoba 5 kali bisa kena blokir. Untuk menghindari ini, set maxretry = 5 atau lebih tinggi, dan gunakan findtime yang cukup besar (misal 600 detik = 10 menit). Juga, pastikan IP internal (misal IP kantor) tidak terblokir — tambahkan di ignoreip di config Fail2Ban.

    Q: Kenapa HELO string random itu indikasi bot?

    Karena klien email normal (Outlook, Thunderbird, Apple Mail) secara otomatis mengirim HELO berupa nama komputer atau domain yang dikonfigurasi. Bot/script brute force biasanya mengirim HELO berupa string random karena mereka tidak peduli dengan HELO — yang penting bagi mereka adalah mencoba password sebanyak mungkin. HELO random seperti aGrT3z2j atau jAvmHBGX tidak akan pernah dihasilkan oleh klien email normal.

    Kesimpulan

    Log dovecot_login authenticator failed adalah salah satu tanda pertama bahwa server email Anda sedang jadi target brute force. Dengan membaca log secara detail — memahami arti setiap bagian dari timestamp, HELO string, source IP, error code, hingga email target — Anda bisa mengenali serangan sejak dini dan mengambil langkah pencegahan.

    Solusi paling efektif adalah kombinasi dari tiga lapisan: Fail2Ban untuk memblokir IP secara otomatis, rate limiting di Dovecot untuk membatasi percobaan per IP, dan password yang kuat untuk semua akun email — terutama alamat generik seperti info@ dan admin@. Ketiga lapisan ini bekerja bersama untuk membuat server email Anda jauh lebih sulit di-brute force.

    Pelajaran terbesar dari insiden ini: jangan pernah remehkan log yang “kecil”. Dua baris log yang tampak sepele bisa jadi awal dari serangan masif yang mengancam keamanan seluruh infrastruktur email Anda.

    Author: NOC Engineer — ditulis berdasarkan pengalaman mendeteksi dan memitigasi brute force email di server production.