Secure Apache Configuration Guide: Best Practices

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:

  1. Jalankan perintah pengujian sintaks: apachectl configtest atau apache2ctl configtest.
  2. Jika hasil menampilkan Syntax OK, lakukan reload layanan web: sudo systemctl reload apache2 (untuk Ubuntu/Debian) atau sudo systemctl reload httpd (untuk RHEL/CentOS).
  3. Gunakan alat pemindai eksternal atau perintah curl -I https://namadomainanda.com untuk memastikan header keamanan telah merespons dengan benar.