Konfigurasi Secure SSI Apache untuk Keamanan Web Server

Konfigurasi aman untuk Server Side Includes (SSI) pada Apache web server memerlukan pembatasan direktif Options dan pengetatan kontrol akses guna mencegah eksploitasi perintah eksekusi sistem. Default instalasi Apache sering kali mengizinkan penggunaan SSI secara longgar yang berisiko membuka celah Remote Code Execution (RCE) jika pengguna dapat mengunggah file berekstensi .shtml.

Langkah Teknis Pengamanan SSI Apache

Untuk mengamankan SSI, administrator harus menonaktifkan eksekusi perintah shell melalui modul mod_include, membatasi direktori yang diizinkan menggunakan SSI, dan menerapkan validasi ketat pada file yang diproses.

1. Modifikasi File Konfigurasi Apache (httpd.conf atau sites-available)

Edit blok direktori situs Anda untuk mematikan fungsi IncludesNOEXEC atau menghapus total opsi Includes jika SSI tidak diperlukan. Jika SSI wajib digunakan, pastikan hanya menggunakan opsi IncludesNOEXEC agar perintah sistem operasi tidak dapat dieksekusi.

<Directory "/var/www/html">
    # Hanya izinkan SSI tanpa kemampuan eksekusi perintah OS
    Options -Indexes +IncludesNOEXEC
    
    # Pastikan ekstensi file yang memproses SSI dibatasi
    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
</Directory>

2. Matikan SSI Secara Global Jika Tidak Digunakan

Jika aplikasi web Anda tidak menggunakan Server Side Includes, nonaktifkan modul terkait pada tingkat server utama untuk meminimalisir permukaan serangan (attack surface).

# Hapus atau comment baris berikut di konfigurasi utama
# LoadModule include_module modules/mod_include.so

Tabel Perbandingan Opsi Direktif SSI Apache

Opsi Direktif Deskripsi Keamanan Tingkat Risiko
Options +Includes Mengizinkan SSI penuh termasuk eksekusi perintah shell (<!--#exec-->). Sangat Tinggi
Options +IncludesNOEXEC Mengizinkan SSI untuk menyertakan file (include, echo) tetapi melarang eksekusi perintah OS. Sedang
Options -Includes Menonaktifkan seluruh fitur SSI pada direktori tersebut. Aman

Troubleshooting & Validasi Keamanan

Setelah melakukan perubahan konfigurasi, lakukan langkah-langkah verifikasi berikut:

  • Uji sintaks konfigurasi Apache menggunakan perintah sudo apache2ctl configtest atau sudo httpd -t untuk memastikan tidak ada kesalahan penulisan.
  • Restart layanan web server dengan sudo systemctl restart apache2 (Ubuntu/Debian) atau sudo systemctl restart httpd (RHEL/CentOS).
  • Lakukan pengujian dengan menyisipkan tag <!--#exec cmd="ls"--> pada file uji .shtml. Konfigurasi yang aman akan mengembalikan error atau mengabaikan perintah tersebut, bukan menampilkan hasil direktori server.