Mengamankan server web Apache memerlukan penerapan konfigurasi tingkat lanjut untuk mencegah eksploitasi celah keamanan, kebocoran informasi sensitif, dan serangan siber seperti Denial of Service (DoS) serta Remote Code Execution (RCE). Pengerasan (hardening) pada berkas httpd.conf atau apache2.conf adalah langkah mutlak yang harus diterapkan oleh setiap administrator sistem untuk menjaga integritas infrastruktur web.
Panduan teknis ini menyajikan parameter konfigurasi otentik yang siap diterapkan langsung pada lingkungan produksi untuk menonaktifkan informasi versi server, membatasi akses direktori secara ketat, serta mengaktifkan header HTTP pengaman modern.
Parameter Utama Pengerasan Apache
Tabel berikut merinci direktif konfigurasi inti beserta fungsi keamanannya yang wajib diterapkan pada server Apache:
| Direktif Konfigurasi | Nilai Optimal | Fungsi Keamanan |
|---|---|---|
ServerSignature |
Off |
Menghilangkan informasi versi Apache dan sistem operasi pada halaman galat (error pages). |
ServerTokens |
Prod atau ProductOnly |
Membatasi informasi header HTTP Server hanya menampilkan nama aplikasi tanpa nomor versi detail. |
TraceEnable |
Off |
Mencegah serangan Cross-Site Tracing (XST) dengan menonaktifkan metode HTTP TRACE. |
FileETag |
None |
Menghilangkan informasi inode pada header ETag guna mencegah kebocoran informasi internal server. |
Options pada root |
None atau -Indexes |
Mencegah penjelajahan direktori (directory listing) jika berkas indeks utama tidak ditemukan. |
Penerapan Konfigurasi Keamanan
Berikut adalah contoh blok kode konfigurasi keamanan yang ditempatkan pada berkas konfigurasi utama Apache atau di dalam blok <Directory>:
# Sembunyikan identitas server
ServerTokens Prod
ServerSignature Off
# Nonaktifkan HTTP TRACE
TraceEnable Off
# Cegah kebocoran ETag
FileETag None
# Batasi akses direktori root
<Directory />
AllowOverride None
Require all denied
</Directory>
# Konfigurasi akses direktori web utama
<Directory /var/www/html>
Options -Indexes -FollowSymLinks +ExecCGI
AllowOverride None
Require all granted
</Directory>
Implementasi Header Keamanan HTTP
Untuk melindungi pengguna dari serangan seperti Cross-Site Scripting (XSS), Clickjacking, dan penyadapan lalu lintas data, pastikan modul mod_headers aktif dan tambahkan baris berikut ke dalam konfigurasi virtual host:
<IfModule mod_headers.c>
# Cegah serangan Clickjacking
Header always set X-Frame-Options "SAMEORIGIN"
# Proteksi terhadap MIME-sniffing
Header always set X-Content-Type-Options "nosniff"
# Proteksi XSS bawaan browser
Header always set X-XSS-Protection "1; mode=block"
# Paksa penggunaan HTTPS
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
# Content Security Policy (Sesuaikan dengan kebutuhan aplikasi)
Header set Content-Security-Policy "default-src 'self';"
</IfModule>
Langkah Verifikasi dan Troubleshooting
Setelah menerapkan perubahan konfigurasi, lakukan validasi sintaks sebelum melakukan restart layanan untuk menghindari kegagalan sistem:
- Jalankan perintah pengujian sintaks:
apachectl configtestatauapache2ctl configtest. - Jika hasil menampilkan
Syntax OK, lakukan reload layanan web:sudo systemctl reload apache2(untuk Ubuntu/Debian) atausudo systemctl reload httpd(untuk RHEL/CentOS). - Gunakan alat pemindai eksternal atau perintah
curl -I https://namadomainanda.comuntuk memastikan header keamanan telah merespons dengan benar.