Keamanan WP: Keamanan wp-admin | Ganti URL Login·Batasi Login·XML-RPC

Keamanan wp-admin adalah pengaturan untuk memblokir serangan brute force yang masuk lewat layar admin dan layar login WordPress. Dari log akses server Nginx + Apache yang menjalankan beberapa situs WordPress, permintaan otomatis ke xmlrpc.php tetap berlanjut meski URL login sudah diganti, sehingga pembatasan kecepatan di tingkat server pun ikut diterapkan.
1️⃣ Mengapa wp-admin dan wp-login.php Diserang
Alamat admin WordPress yang sudah diketahui umum memang kelemahan, tetapi bisa ditutupi dengan memperkuat keamanan. Semua situs WordPress memakai /wp-admin/ dan [wp-login.php] yang sama, dan jika /wp-admin/ dibuka saat belum login, Anda diarahkan ke layar login [wp-login.php].
Serangan datang sebagai brute force, yaitu memasukkan nama pengguna dan kata sandi berulang-ulang ke layar login ini. Karena itu, keamanan wp-admin lebih dulu soal mencegah percobaan login, bukan menyembunyikan alamat.
2️⃣ Efek dan Batas Mengganti URL Login
Jika URL login diganti dengan plugin keamanan, [wp-login.php] bawaan akan mengembalikan galat 404, sehingga serangan otomatis yang terus mengetuk alamat bawaan tidak sampai ke layar login. URL baru harus diberitahukan terpisah kepada pemilik akun admin.
Cara ini tidak merepotkan, tetapi jika URL baru terlupa, Anda tidak bisa masuk ke layar admin dan harus menonaktifkan plugin itu dengan mengganti nama foldernya lewat FTP atau pengelola file. Untuk situs yang dikelola beberapa orang, sebaiknya alamat itu dicatat di satu tempat.
3️⃣ Membatasi Percobaan Login dan Autentikasi Dua Langkah
Meski URL login diganti, jika alamat baru tersebar, percobaan menebak kata sandi tetap berlanjut. Inti WordPress tidak membatasi jumlah login gagal, jadi berapa kali pun kata sandi salah dimasukkan, layar login yang sama terbuka lagi.
Plugin pembatas percobaan login memblokir IP yang melewati jumlah tertentu selama waktu tertentu, sedangkan autentikasi dua langkah meminta kode dari aplikasi autentikator di ponsel sekali lagi meski kata sandi benar. Saat mengaktifkan autentikasi dua langkah, simpan juga kode cadangan untuk dipakai jika ponsel hilang.
4️⃣ Menutup xmlrpc.php
[xmlrpc.php] adalah pintu kedua yang menerima nama pengguna dan kata sandi tanpa melewati layar login, dan dengan metode [system.multicall] banyak kata sandi bisa dicoba dalam satu permintaan.
Log akses server Nginx + Apache yang menjalankan beberapa situs WordPress mencatat 2,250 permintaan POST ke [xmlrpc.php] antara pukul 00.00 dan 09.50 pada 13 Oktober. Permintaan datang dari 22 IP, dan User-Agent-nya menyamar sebagai Jetpack dan WordPress.com.
Jika Anda tidak memakai aplikasi seluler WordPress atau Jetpack, blokir permintaan [xmlrpc.php] di konfigurasi Nginx atau pakai pengaturan mematikan XML-RPC dari plugin keamanan.
# di dalam blok server — tolak permintaan xmlrpc.php
location = /xmlrpc.php {
deny all;
}Dengan pengaturan ini, permintaan GET dan POST ke [xmlrpc.php] semuanya berakhir dengan 403 tanpa sampai ke PHP. Fitur mematikan XML-RPC pada plugin keamanan hanya menolak permintaan yang perlu login sementara file-nya tetap merespons, jadi untuk mengurangi eksekusi PHP sekalian, lebih tepat memblokir di Nginx.
5️⃣ Memblokir di Server: Batasi IP Akses Admin·Batasi Kecepatan
Jika Anda mengelola hanya dari IP tetap, cara paling pasti adalah mengizinkan [wp-login.php] dan /wp-admin/ hanya untuk IP itu di Nginx. Cara ini tidak cocok untuk lingkungan yang IP rumah atau kantornya sering berubah.
Memblokir seluruh /wp-admin/ tampak cukup, tetapi fitur di layar pengunjung seperti pencarian atau keranjang belanja sering mengirim permintaan ke [admin-ajax.php], jadi file itu harus tetap dibuka.
# di dalam blok server — di atas location pemrosesan PHP
location = /wp-login.php {
allow 203.0.113.10; # IP tetap untuk mengelola
deny all;
# salin pengaturan location pemrosesan PHP apa adanya di bawah ini
}Jika [wp-login.php] dibuka dari IP selain yang ditentukan, muncul 403, sedangkan dari IP yang ditentukan layar login terbuka. Di dalam location, pengaturan pemrosesan PHP situs (fastcgi_pass dan lainnya) harus disalin apa adanya agar layar login berjalan normal.
Jika IP tidak bisa dibuat tetap, ada cara memberi batas kecepatan pada permintaan PHP dari pengunjung yang belum login; proses membatasinya menjadi 30 kali per menit agar permintaan otomatis tidak menguasai sumber daya server dibahas di peringatan php-fpm max_children (artikel terpisah).
# blok http — hitung per IP hanya permintaan tanpa cookie login
map $http_cookie $php_anon_key {
default $binary_remote_addr;
"~*wordpress_logged_in" "";
}
limit_req_zone $php_anon_key zone=php_anon:10m rate=30r/m;
# di dalam location pemrosesan PHP
limit_req zone=php_anon burst=60 nodelay;
limit_req_status 429;Jika satu IP yang belum login mengirim permintaan PHP beruntun, permintaan diproses sampai yang ke-61 dan setelah itu dikembalikan 429; permintaan dengan cookie login tidak dihitung. Jika cache halaman merespons tanpa melewati PHP, kunjungan halaman pengunjung biasa tidak terkena batas ini.
Plugin keamanan
Best 5 Plugin Keamanan WordPress
Lima plugin keamanan utama dirangkum dalam tabel perbandingan.
Log Masuk
Atur ulang kata sandi admin yang hilang
Cara mengganti kata sandi di profil dan cara mengatur ulang saat lupa.
Peralatan
Generator Kata Sandi Acak
Alat yang membuat kata sandi 6–30 karakter dengan menggabungkan huruf besar, huruf kecil, angka, dan karakter khusus.
ℹ️ Pemberitahuan Afiliasi
Konten di situs ini berisi tautan afiliasi. Jika pengunjung membeli produk atau layanan melalui tautan tersebut, situs ini menerima komisi dari penjual. Harga yang dibayar pembeli(turun saat ada diskon promo ↓), tidak naik karena hal ini. Harga, diskon, dan informasi stok yang ditampilkan berlaku pada saat penulisan dan bisa berbeda dengan kondisi sebenarnya, jadi pastikan kembali di situs penjual sebelum membeli. Pemilihan dan penilaian produk dibuat berdasarkan standar kami sendiri, dan ada tidaknya komisi tidak memengaruhi urutan maupun isi penilaian.