antond.net

0 %
Anton Darmawanto
Front-end Developer
Ui/UX Designer
  • Residence:
    Indonesia
  • City:
    Jakarta Selatan
  • Age:
    40
Indonesian
English
Jawa
html
CSS
Js
PHP
WordPress
Proxmox
Laravel
Linux server (ubuntu, debian, fedora)
Alibaba Cloud
  • Proxmox, Vm Ware
  • Stylus, Sass, Less
  • Gulp, Webpack, Grunt
  • GIT knowledge
0

No products in the cart.

Return To Shop

Cara Pasang Fail2ban di VPS Linux untuk Proteksi Brute Force Login WordPress

05/11/2026

Setiap hari, website WordPress yang terhubung ke internet menghadapi ratusan hingga ribuan percobaan login otomatis dari bot. Bot-bot ini mencoba kombinasi username dan password secara acak — metodologi yang disebut brute force attack.

Di shared hosting, proteksi semacam ini biasanya sudah ada di level server. Tapi di VPS Linux yang Anda kelola sendiri, perlindungan ini tidak otomatis hadir. Fail2ban adalah solusi gratis yang terbukti efektif: ia memantau log gagal login, dan secara otomatis memblokir IP yang terlalu sering mencoba.

Instalasi dan konfigurasi layanan Fail2ban via terminal SSH
Instalasi dan konfigurasi layanan Fail2ban via terminal SSH

Mengapa Ini Penting untuk VPS WordPress?

Jika Anda menjalankan WordPress di VPS Nginx/Apache di Ubuntu atau Debian, log akses server Anda penuh dengan baris seperti:

POST /wp-login.php HTTP/1.1 200 - [IP: 45.33.32.156]
POST /xmlrpc.php HTTP/1.1 200 - [IP: 45.33.32.156]

Tanpa pembatasan, bot ini bisa mencoba jutaan kombinasi kata sandi selama berhari-hari. Mereka juga memakan bandwidth dan resource server.

Fail2ban bekerja dengan cara: 1. Memantau file log (Nginx access log, auth log) 2. Mendeteksi pola percobaan login gagal berulang dari IP yang sama 3. Menambahkan aturan firewall (iptables/nftables) untuk memblokir IP tersebut selama periode tertentu

Langkah 1: Install Fail2ban di Ubuntu/Debian

sudo apt update
sudo apt install fail2ban -y

Verifikasi instalasi: “bash sudo fail2ban-client status “

Langkah 2: Buat Konfigurasi Jail untuk WordPress

Jangan edit langsung /etc/fail2ban/jail.conf — file ini akan tertimpa saat update. Buat file konfigurasi lokal:

sudo nano /etc/fail2ban/jail.local

Tambahkan konfigurasi berikut:

[DEFAULT]
bantime  = 3600
findtime = 600
maxretry = 5
ignoreip = 127.0.0.1/8 ::1

[nginx-wp-login]
enabled  = true
port     = http,https
filter   = nginx-wp-login
logpath  = /var/log/nginx/access.log
maxretry = 5
bantime  = 86400
findtime = 300

Penjelasan parameter: – bantime = 86400 — IP diblokir selama 24 jam (dalam detik) – maxretry = 5 — blokir setelah 5 percobaan gagal – findtime = 300 — hitungan percobaan dalam 5 menit terakhir

Aturan firewall otomatis memblokir IP address penyerang
Aturan firewall otomatis memblokir IP address penyerang

Langkah 3: Buat Filter Regex untuk wp-login.php

sudo nano /etc/fail2ban/filter.d/nginx-wp-login.conf

Isi dengan:

[Definition]
failregex = ^<HOST> .* "POST /(wp-login\.php|xmlrpc\.php) HTTP/.*" [45][0-9]{2}
ignoreregex =

Filter ini menangkap: – POST request ke wp-login.php (halaman login WordPress) – POST request ke xmlrpc.php (sering disalahgunakan untuk brute force) – Hanya respons dengan kode HTTP 4xx atau 5xx (gagal)

Langkah 4: Restart dan Aktifkan Fail2ban

sudo systemctl restart fail2ban
sudo systemctl enable fail2ban

Verifikasi jail aktif: “bash sudo fail2ban-client status nginx-wp-login “

Output yang diharapkan: “ Status for the jail: nginx-wp-login |- Filter | |- Currently failed: 2 | |- Total failed: 47 – Actions |- Currently banned: 3 |- Total banned: 12 “`

Langkah 5: Cek dan Kelola IP yang Diblokir

Lihat daftar IP yang sedang diblokir: “bash sudo fail2ban-client status nginx-wp-login “

Buka blokir IP tertentu (misalnya IP kantor Anda yang salah terblokir): “bash sudo fail2ban-client set nginx-wp-login unbanip 192.168.1.100 “

Blokir IP secara manual: “bash sudo fail2ban-client set nginx-wp-login banip 45.33.32.156 “

Tambahan: Proteksi wp-login.php via Nginx

Sebagai lapisan tambahan, batasi akses ke wp-login.php langsung di konfigurasi Nginx:

location = /wp-login.php {
    # Batasi ke IP tertentu (opsional)
    # allow 203.0.113.5;
    # deny all;

    # Batasi jumlah request
    limit_req zone=login burst=5 nodelay;
    include fastcgi_params;
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

Tambahkan di blok http di nginx.conf: “nginx limit_req_zone $binary_remote_addr zone=login:10m rate=5r/m; “

SeranganProteksi
Brute force wp-login.phpFail2ban + rate limit Nginx
xmlrpc.php spamFail2ban filter + nonaktifkan xmlrpc
Distributed brute forceCloudflare WAF (lapisan tambahan)
User enumeration via URLBlokir ?author=N di .htaccess
Analisis log percobaan login wp-login pada Nginx web server
Analisis log percobaan login wp-login pada Nginx web server

Monitoring Berkala

Tambahkan perintah ini ke jadwal cron harian untuk laporan singkat:

# Tambahkan ke crontab -e
0 8 * * * fail2ban-client status nginx-wp-login >> /var/log/fail2ban-report.log

Cek log ini setiap minggu untuk memahami pola serangan ke server Anda.

—

Setup Fail2ban adalah satu langkah kecil tapi dampaknya besar dalam keamanan VPS jangka panjang. Jika Anda baru pindah ke VPS atau ingin audit keamanan server WordPress yang lebih menyeluruh, antond.net menyediakan layanan setup dan hardening VPS untuk bisnis yang butuh server andal dan aman.

Posted in TutorialTags: