Hardening Website WordPress di Web Server Apache & NGINX

FeaturedNgoprekProgramming
Views: 16

Apaan sih Hardening? Hardening WordPress di level server merupakan langkah penting untuk mencegah serangan sebelum mencapai aplikasi. Dengan NGINX, proteksi bisa dilakukan lebih awal dan lebih efisien dibandingkan hanya mengandalkan plugin. Salah satu langkah dasar adalah menonaktifkan directory listing agar struktur folder tidak bisa diintip langsung oleh publik, sekaligus melindungi file sensitif seperti wp-config.php yang berisi kredensial database dan kunci keamanan WordPress.

Hardening adalah proses penguatan sistem dengan cara menutup celah keamanan, membatasi akses yang tidak diperlukan, dan mengurangi permukaan serangan pada server maupun aplikasi.

Tujuan utama hardening bukan hanya mencegah peretasan, tetapi juga meminimalkan dampak jika terjadi percobaan serangan. Dengan konfigurasi yang tepat, sistem menjadi lebih aman, lebih stabil, dan lebih efisien karena hanya menjalankan fungsi yang benar-benar dibutuhkan.

Langkah krusial berikutnya adalah menonaktifkan XML-RPC. Fitur ini sering dimanfaatkan untuk serangan brute force, pingback abuse, dan DDoS, padahal sebagian besar website tidak lagi membutuhkannya. Dengan memblokir xmlrpc.php langsung di NGINX dan memperkuatnya dari level aplikasi melalui wp-config.php, server akan menolak permintaan berbahaya sejak awal tanpa membebani PHP atau WordPress itu sendiri.

Selain itu, eksekusi file PHP di direktori upload juga perlu diblokir. Folder wp-content/uploads seharusnya hanya berisi file media, bukan script. Banyak kasus website diretas karena file PHP berbahaya berhasil diunggah dan dieksekusi. Dengan aturan NGINX yang melarang eksekusi PHP di folder ini, celah umum tersebut bisa ditutup secara efektif.

Terakhir, pembatasan metode request dan rate limiting pada halaman login menjadi lapisan pertahanan tambahan. Dengan hanya mengizinkan metode GET dan POST serta membatasi jumlah request ke wp-login.php, serangan brute force dapat ditekan tanpa mengganggu pengguna normal. Kombinasi hardening di level server dan aplikasi ini menjadikan WordPress lebih aman, stabil, dan siap digunakan untuk kebutuhan jangka panjang.

Berkut contoh script untuk config-nya…

APACHE 2.4+ .htaccess:

# =====================================================
# Disable directory browsing
# =====================================================
Options -Indexes

# =====================================================
# Protect wp-config.php
# =====================================================
<Files "wp-config.php">
    Require all denied

# =====================================================
# Block PHP execution in uploads
# (Directory TIDAK BOLEH di .htaccess → pakai FilesMatch)
# =====================================================

    <FilesMatch "^wp-content/uploads/.*\.php$">
        Require all denied
    
    RewriteEngine On

    # =================================================
    # Block direct PHP execution in uploads (Rewrite)
    # =================================================
    RewriteRule ^wp-content/uploads/.*\.php$ - [F,L]

    # =================================================
    # Block brute force on wp-login & xmlrpc
    # =================================================
    RewriteCond %{REQUEST_URI} ^/(wp-login\.php|xmlrpc\.php)$ [NC]
    RewriteCond %{HTTP:Authorization} !^$ [OR]
    RewriteCond %{REQUEST_METHOD} POST
    RewriteRule .* - [F,L]
# =====================================================
# Disable XML-RPC completely (recommended)
# =====================================================
<Files "xmlrpc.php">
    Require all denied
# =====================================================
# Limit request methods (allow only GET & POST)
# =====================================================

    Require all denied




NGINX Conf:

# =====================================================
# Disable directory listing
# =====================================================
autoindex off;

# =====================================================
# Protect wp-config.php
# =====================================================
location = /wp-config.php {
    deny all;
    access_log off;
    log_not_found off;
}

# =====================================================
# Disable XML-RPC completely
# =====================================================
location = /xmlrpc.php {
    deny all;
    access_log off;
    log_not_found off;
}

# =====================================================
# Block PHP execution in uploads directory
# =====================================================
location ~* ^/wp-content/uploads/.*\.php$ {
    deny all;
    access_log off;
    log_not_found off;
}

# =====================================================
# Allow only GET & POST methods
# =====================================================
if ($request_method !~ ^(GET|POST)$ ) {
    return 444;
}

# =====================================================
# Block brute force attempts (wp-login)
# =====================================================
location = /wp-login.php {
    limit_req zone=login burst=5 nodelay;
    include fastcgi_params;
    fastcgi_pass php-fpm;
}


Mungkin Kamu juga suka

Script PHP: Landing Page dengan Meta Pixel & Conversion API

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Fill out this field
Fill out this field
Mohon masukan alamat email yang sah.
You need to agree with the terms to proceed