04. Role: Web App Server
04. Role: Web App Server (Caddy + Backend)
Server ini menjalankan aplikasi web (Node.js, Python, Go) yang diisolasi dengan Caddy sebagai reverse proxy dan TLS terminator.
2.1 Arsitektur
Semua aplikasi backend mendengarkan pada 127.0.0.1 (localhost) untuk meminimalkan permukaan serangan. Caddy menangani komunikasi eksternal.
2.2 Instalasi Paket
2.2.1 Caddy (Reverse Proxy)
Gunakan repository resmi untuk mendapatkan versi terbaru.
2.2.2 Backend Runtimes
Instal runtime sesuai dengan kebutuhan aplikasi.
2.3 Konfigurasi Caddy
Lokasi file: /etc/caddy/Caddyfile
Template Konfigurasi:
2.4 Runtime Backend & Sandboxing
Semua aplikasi backend (Node.js, Python, Go) harus dijalankan sebagai service systemd dengan fitur sandboxing aktif untuk membatasi akses ke sistem jika terjadi kompromi pada aplikasi.
2.4.1 Template Systemd Terproteksi (Sandbox)
Simpan di /etc/systemd/system/<service-name>.service. Template ini memberikan isolasi tingkat tinggi.
2.4.2 Penjelasan Direktif Keamanan
| Direktif | Fungsi |
|---|---|
ProtectSystem=strict |
Seluruh root filesystem menjadi read-only bagi service. |
ProtectHome=yes |
Direktori /home dan /root tidak dapat diakses oleh service. |
PrivateTmp=yes |
Memberikan /tmp dan /var/tmp yang terisolasi dan privat. |
NoNewPrivileges=yes |
Mencegah proses mendapatkan privilege tambahan (misal via SUID). |
CapabilityBoundingSet= |
Menghapus semua kernel capabilities (Service tidak bisa jadi root). |
SystemCallFilter= |
Membatasi syscall yang diizinkan hanya untuk fungsi standar service. |
2.4.3 Contoh Per Runtime
Node.js
Pastikan aplikasi mendengarkan pada 127.0.0.1:PORT.
Python (Gunicorn)
Gunakan virtual environment untuk keamanan dan isolasi dependensi.
Go
Go binary sangat cocok dengan sandboxing karena statis.
2.5 Verifikasi & Monitoring Keamanan
-
Audit Isolasi: Jalankan perintah berikut untuk mengecek seberapa aman service Anda:
Target skor: < 2.0 (Low Exposure).
-
Firewall (UFW): Hanya izinkan trafik publik ke Caddy (Reverse Proxy).
-
CrowdSec Integration: Pastikan CrowdSec memantau log Caddy untuk memblokir serangan layer 7.
Catatan: Pemblokiran aktual (remediasi) ditangani oleh
crowdsec-firewall-bouncer-nftablesyang telah diinstal di tahap baseline. Ini akan secara otomatis memutus koneksi IP penyerang ke port 80/443.