Website berbasis WordPress sering menjadi target serangan hacker, bot spam, dan berbagai ancaman siber lainnya. Jika keamanan tidak diperkuat, website Anda bisa diretas, disusupi malware, atau mengalami pencurian data. Artikel ini akan membahas cara mengamankan website WordPress hingga “semut pun tidak bisa lolos,” tanpa membatasi akses berdasarkan negara sehingga tidak mengganggu kecepatan website dan SEO.
🔥 Key Takeaways
✅ Memanfaatkan Web Application Firewall (WAF) untuk menyaring akses ke website.
✅ Menggunakan custom rules di Cloudflare agar hanya pengguna asli yang bisa mengakses website.
✅ Melindungi file penting seperti wp-config.php, xmlrpc.php, dan lainnya dari eksploitasi.
✅ Menyembunyikan dan mengamankan login page dari bot jahat.
✅ Menambahkan security header untuk menghalau serangan dari sisi browser.
✅ Membatasi jumlah percobaan login agar brute-force attack tidak efektif.
1. Menggunakan Web Application Firewall (WAF) di Cloudflare
Langkah pertama untuk mengamankan website WordPress adalah dengan mengaktifkan Web Application Firewall (WAF) dari Cloudflare. Fitur ini dapat menyaring lalu lintas yang masuk dan hanya mengizinkan pengunjung asli.
🛠 Langkah-langkahnya:
1️⃣ Masuk ke Cloudflare Dashboard > Security > WAF > Tools
2️⃣ Tambahkan IP Hosting Anda
3️⃣ Action: Pilih “Allow”
4️⃣ Zone: Pilih “This Website”
5️⃣ Notes: Bisa diisi sesuai keinginan
Ini akan memastikan server hosting tetap dapat diakses dengan aman tanpa mengizinkan lalu lintas bot yang berbahaya.
2. Menambahkan Custom Rules untuk Memblokir Bot dan Akses Tidak Sah
Cloudflare memungkinkan pembuatan Custom Rules untuk mengontrol siapa yang bisa mengakses website.
🔹 Rules 1: Izinkan Semua Pengguna Manusia & Blokir Bot Spam
Blokir semua bot berbahaya kecuali yang diizinkan oleh Cloudflare (Googlebot, Bingbot, dll).
bash
Copy
(http.host ne “www.domain.com”
and not cf.client.bot
and not cf.verified_bot_category in {“Search Engine Crawler” “Search Engine Optimization” “Monitoring & Analytics” “Advertising & Marketing” “Page Preview” “Security” “Accessibility” “Webhooks” “Aggregator”})
Action: Block 🚫
🔹 Rules 2: Lindungi File Penting dari Peretasan
Beberapa file WordPress rentan terhadap eksploitasi, seperti wp-config.php, xmlrpc.php, readme.html, dan lainnya.
bash
Copy
(http.request.uri.path contains “/xmlrpc.php”)
or (http.request.uri.path contains “/readme.html”)
or (http.request.uri.path contains “/license.txt”)
or (http.request.uri.path contains “/wp-config.php”)
or (http.request.uri.path contains “/error_log”)
or (http.request.uri.path contains “/debug.log”)
Action: Block 🚫
Dengan aturan ini, file-file tersebut tidak dapat diakses secara langsung oleh hacker.
🔹 Rules 3: Blokir Hotlinking dari Situs Lain
Agar konten dan gambar tidak dicuri oleh website lain, tambahkan aturan hotlink protection.
bash
Copy
(http.request.uri.path wildcard r”/wp-content/*”
and not http.referer contains “www.domain.com”
and not http.referer contains “domain.com”
and not cf.client.bot)
or (http.request.uri.path wildcard r”/wp-includes/*”
and not http.referer contains “www.domain.com”
and not http.referer contains “domain.com”
and not cf.client.bot)
Action: Block 🚫
🔍 Hasilnya?
- Gambar dan file statis Anda tidak bisa dicuri oleh website lain
- Bandwidth hosting tidak terbuang sia-sia
🔹 Rules 4: Lindungi Login dan Komentar dari Spam & Brute-Force Attack
Banyak hacker menggunakan brute-force attack untuk membobol WordPress login page. Kita bisa menambahkan proteksi ekstra di sini.
bash
Copy
(http.request.uri contains “/wp-comments-post.php”
and http.request.method eq “POST”
and not cf.client.bot)
or (http.request.uri.path contains “/wp-login.php”
and not http.referer contains “www.domain.com”
and not http.referer contains “domain.com”)
or (http.request.uri.path contains “/wp-admin”
and not http.referer contains “www.domain.com”
and not http.referer contains “domain.com”
and not cf.client.bot)
or (http.request.uri.path contains “/wp-json”
and not http.referer contains “www.domain.com”
and not http.referer contains “domain.com”)
Action: Manage Challenge 🛡️
Hasilnya:
✅ Mencegah bot menyerang halaman login dan wp-admin
✅ Mengurangi spam komentar secara drastis
3. Menambahkan Security Headers untuk Mencegah Serangan XSS & Clickjacking
Security Headers akan menambah lapisan perlindungan dengan membatasi cara browser berinteraksi dengan website Anda.
🛠 Cara menambah Security Headers di Cloudflare:
1️⃣ Masuk ke Rules > Overview > Request Header Transform Rules > Modify Response Header
2️⃣ Buat aturan baru dengan Hostname Contains “domain.com”
3️⃣ Tambahkan Header berikut dengan static values:
Header | Value |
Content-Security-Policy | upgrade-insecure-requests |
Referrer-Policy | strict-origin-when-cross-origin |
Strict-Transport-Security | max-age=31536000; includeSubDomains; preload |
X-Content-Type-Options | nosniff |
X-Frame-Options | SAMEORIGIN |
X-XSS-Protection | 1; mode=block |
💡 Manfaatnya:
✔️ Menghentikan serangan XSS (Cross-Site Scripting)
✔️ Melindungi dari Clickjacking dan serangan dari iframe asing
4. Membatasi Percobaan Login Maksimal 2 Kali
Jika seseorang mencoba login berkali-kali dengan password yang salah, WordPress akan otomatis mengunci mereka.
💾 Tambahkan kode ini di file functions.php:
php
Copy
function check_attempted_login( $user, $username, $password ) {
if ( get_transient( ‘attempted_login’ ) ) {
$datas = get_transient( ‘attempted_login’ );
if ( $datas[‘tried’] >= 2 ) {
return new WP_Error( ‘too_many_tried’, __( ‘ERROR: Terlalu banyak percobaan login, coba lagi nanti.’ ) );
}
}
return $user;
}
add_filter( ‘authenticate’, ‘check_attempted_login’, 30, 3 );
Manfaatnya:
🔒 Mencegah brute-force attack dari bot otomatis
🛑 Mengunci pengguna yang mencoba login berkali-kali
FAQs: Pertanyaan Seputar Keamanan WordPress
❓ Apakah ini akan mempengaruhi SEO website?
✅ Tidak. Rules ini hanya memblokir bot jahat, bukan crawler mesin pencari seperti Googlebot.
❓ Apakah perlu plugin tambahan?
✅ Tidak perlu. Semua proteksi bisa dilakukan langsung di Cloudflare dan functions.php.
❓ Apakah cara ini bekerja di shared hosting?
✅ Ya! Bahkan lebih efektif karena shared hosting biasanya memiliki proteksi tambahan dari CloudLinux.