Bagaimana menghapus Server: header dari respons HTTP dengan Apache?

20

Saya ingin menghapus garis:

Server: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch mod_ssl/2.2.8 OpenSSL/0.9.8g

dari respons HTTP server saya, tetapi saya tidak dapat menemukan selain untuk memodifikasi include/ap_release.hdan mengkompilasi Apache sendiri. Saya bertanya-tanya apakah ada cara saya tidak tahu?

Neo
sumber

Jawaban:

16

Anda dapat menghapus atau menutupi identifikasi server dari Http-Header dengan menggunakan firewall aplikasi web open source ModSecurity .

Penyembunyian identitas server

Salah satu teknik yang sering membantu memperlambat dan membingungkan penyerang adalah perubahan identitas server web. Server web biasanya mengirimkan identitas mereka dengan setiap respons HTTP di header Server. Apache sangat membantu di sini, tidak hanya mengirim nama dan versi lengkap secara default, tetapi juga memungkinkan modul server untuk menambahkan versi mereka juga.

Untuk mengubah identitas server web Apache Anda harus masuk ke kode sumber, cari di mana nama "Apache" diberi kode keras, ubah, dan kompilasi ulang server. Efek yang sama dapat dicapai dengan menggunakan

Direktif SecServerSignature:

SecServerSignature "Microsoft-IIS/5.0"

Perlu dicatat bahwa meskipun ini bekerja dengan cukup baik, penyerang yang terampil (dan alat) dapat menggunakan teknik lain untuk "sidik jari" server web. Misalnya, file default, pesan kesalahan, pemesanan header keluar, cara server merespons permintaan tertentu dan sejenisnya - semuanya dapat memberikan identitas yang sebenarnya. Saya akan melihat lebih jauh meningkatkan dukungan untuk penyembunyian identitas dalam rilis mod_security di masa depan.

Jika Anda mengubah tanda tangan Apache tetapi Anda terganggu oleh pesan aneh di log kesalahan (beberapa modul masih terlihat - ini hanya mempengaruhi log kesalahan, dari luar itu masih berfungsi seperti yang diharapkan):

[Fri Jun 11 04:02:28 2004] [notice] Microsoft-IIS/5.0 mod_ssl/2.8.12 OpenSSL/0.9.6b \ configured -- resuming normal operations

Maka Anda harus mengatur ulang urutan pemuatan modul agar mod_security dapat berjalan terakhir, persis seperti yang dijelaskan untuk chroot.

Catatan

Agar arahan ini berfungsi, Anda harus membiarkan / mengatur ServerTokens menjadi Penuh.

Ketika direktif SecServerSignature digunakan untuk mengubah tanda tangan server publik, ModSecurity akan mulai menulis tanda tangan nyata ke log kesalahan, untuk memungkinkan Anda mengidentifikasi server web dan modul yang digunakan.

Sumber: Manual Referensi ModSecurity

Chris_O
sumber
Ini sedang berjalan sekarang tapi saya pikir itu tidak pintar untuk menggunakan servername lain yang ada karena Anda dapat memicu aksi serangan.
Codebeat
27

Jika Anda mengatur ServerTokenske " Prod", Anda dapat mengurangi tajuk menjadi " Server: Apache". Lihat dokumentasi untuk daftar opsi lengkap:

Dokumentasi untuk Apache 2.2

Dokumentasi untuk Apache 2.4

Catatan: Pengaturannya sama di kedua versi namun dokumentasi 2.4 menambahkan catatan ini:

Pengaturan ServerTokens ke kurang dari minimal tidak disarankan karena membuatnya lebih sulit untuk men-debug masalah interoperasional. Perhatikan juga bahwa menonaktifkan Server: header tidak melakukan apa pun untuk membuat server Anda lebih aman. Gagasan "keamanan melalui ketidakjelasan" adalah mitos dan mengarah pada rasa aman yang salah.

Jika Anda ingin menghapus kata "Apache" seluruhnya, Anda harus memodifikasi sumbernya.

grawity
sumber
+1 tnx untuk balasannya, saya lupa menyebutkan pertanyaan saya mengetahui hal ini tetapi saya ingin memilikinya mengatakan Microsoft IIS atau sesuatu. Seharusnya aku menjelaskannya.
Neo