Dokumen ini menjelaskan langkah pengamanan server WordPress menggunakan Nginx dan PHP 8.3-FPM agar lebih aman dari brute force, informasi disclosure, dan serangan umum internet.
I. PENGAMANAN DASAR NGINX
Pengertian:
Hardening Nginx adalah proses mengurangi informasi yang bocor ke publik dan memperkecil permukaan serangan pada web server.
- Sembunyikan Versi Nginx
File:
/etc/nginx/nginx.conf
Di dalam blok http { } tambahkan:
server_tokens off;
Fungsi:
Menghilangkan informasi versi Nginx dari header HTTP dan halaman error.
- Tambahkan Security Headers
File:
/etc/nginx/sites-available/domainkamu
Di dalam server { } tambahkan:
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;
Fungsi:
Melindungi browser pengguna dari clickjacking, MIME sniffing, dan penyalahgunaan fitur browser.
- Blokir File Sensitif
Tambahkan dalam server { }:
location ~ /\. {
deny all;
}
location ~* (wp-config.php|readme.html|license.txt) {
deny all;
}
Fungsi:
Mencegah akses langsung ke file konfigurasi dan file sistem tersembunyi.
II. PERLINDUNGAN WP-LOGIN.PHP
Pengertian:
Proteksi wp-login.php bertujuan membatasi percobaan login berulang yang biasa digunakan dalam serangan brute force.
- Aktifkan Rate Limiting Global
File:
/etc/nginx/nginx.conf
Dalam http { } tambahkan:
limit_req_zone $binary_remote_addr zone=wp_login:10m rate=5r/m;
Fungsi:
Membatasi setiap IP maksimal 5 request per menit.
- Batasi Akses ke wp-login.php
File:
/etc/nginx/sites-available/domainkamu
Dalam server { } tambahkan:
location = /wp-login.php {
limit_req zone=wp_login burst=3 nodelay;
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
Fungsi:
Mencegah percobaan login cepat dan berulang sebelum diproses WordPress.
- Nonaktifkan XML-RPC
Tambahkan:
location = /xmlrpc.php {
deny all;
}
Fungsi:
Menutup celah brute force massal melalui XML-RPC.
III. PENGAMANAN PHP 8.3 FPM
Pengertian:
Hardening PHP-FPM bertujuan mencegah informasi versi PHP terekspos dan membatasi akses langsung ke engine PHP.
- Sembunyikan Versi PHP
File:
/etc/php/8.3/fpm/php.ini
Ubah:
expose_php = Off
Restart:
systemctl restart php8.3-fpm
Fungsi:
Menghilangkan header X-Powered-By: PHP/8.3.x
- Pastikan Socket PHP Aman
Pastikan Nginx menggunakan socket:
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
Dan periksa permission socket:
ls -l /run/php/
Fungsi:
Menggunakan Unix socket lebih aman dan cepat dibanding TCP port terbuka.
IV. AKTIVASI DAN VALIDASI
Setelah semua konfigurasi selesai:
nginx -t
systemctl reload nginx
systemctl restart php8.3-fpm
Pastikan tidak ada error konfigurasi.
V. HASIL AKHIR HARDENING
Dengan konfigurasi ini:
- Versi Nginx tidak terekspos
- Versi PHP 8.3 tidak terlihat publik
- wp-login.php terlindungi dari brute force
- XML-RPC tidak bisa digunakan untuk serangan massal
- File sensitif tidak bisa diakses langsung
- Permukaan serangan server berkurang signifikan
KESIMPULAN
Hardening server adalah proses memperkecil kemungkinan eksploitasi dengan membatasi informasi dan akses yang tidak diperlukan. Dengan kombinasi Nginx security, proteksi wp-login, dan pengamanan PHP 8.3-FPM, server WordPress menjadi jauh lebih tahan terhadap serangan otomatis yang umum terjadi di internet.