05. Role: Web CMS Server
05. Role: Web CMS Server (WordPress + PHP-FPM)
Server ini dikhususkan untuk menjalankan WordPress dengan PHP-FPM dan Caddy.
3.1 Instalasi Paket
Instal PHP-FPM dan ekstensi yang diperlukan oleh WordPress.
sudo apt update
sudo apt install -y php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip php-imagick
3.2 Konfigurasi Caddy untuk WordPress
cms.<YOUR_DOMAIN> {
root * /var/www/wordpress
encode gzip
php_fastcgi 127.0.0.1:9000
file_server
# Block access ke file sensitif
@blocked {
path /wp-config.php
path /wp-includes/*
path /.env
}
handle @blocked {
respond 404
}
}
3.3 Hardening WordPress (wp-config.php)
// Nonaktifkan pengeditan file dari dashboard
define('DISALLOW_FILE_EDIT', true);
define('DISALLOW_FILE_MODS', true);
// Gunakan salt yang unik (generate dari api.wordpress.org)
define('AUTH_KEY', '...');
// ... dst
3.4 Konfigurasi PHP-FPM
File: /etc/php/<VERSION>/fpm/pool.d/www.conf
listen = 127.0.0.1:9000
user = www-data
group = www-data
pm = dynamic
pm.max_children = 20
3.5 Firewall & Keamanan (UFW & CrowdSec)
-
UFW (Firewall):
Izinkan trafik web publik (HTTP/HTTPS).
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
-
CrowdSec:
Instal koleksi khusus untuk mendeteksi serangan pada WordPress dan PHP.
sudo cscli collections install crowdsecurity/wordpress
sudo cscli collections install crowdsecurity/php
sudo cscli collections install crowdsecurity/caddy
Instalasi WordPress Bouncer:
Bouncer ini memungkinkan CrowdSec menampilkan CAPTCHA atau memblokir akses di level aplikasi.
- Buat API key untuk bouncer:
sudo cscli bouncers add wordpress-bouncer
- Catat API key yang dihasilkan.
- Masuk ke dashboard WordPress -> Plugins -> Add New.
- Cari dan instal plugin CrowdSec, lalu aktifkan.
- Masukkan API key pada pengaturan plugin CrowdSec di WordPress.
-
File Permissions:
Pastikan file dimiliki oleh www-data dengan izin minimal.
sudo chown -R www-data:www-data /var/www/wordpress
sudo find /var/www/wordpress -type d -exec chmod 755 {} \;
sudo find /var/www/wordpress -type f -exec chmod 644 {} \;