Apache httpd “Sunucu:” HTTP başlığını değiştir


33

Apache'ninhttpd cevap verilerini geri gönderdiği HTTP başlıklarından biri "Sunucu". Örneğin, web sunucu makinem nispeten güncel Arch Linux'tur. Aşağıdakine benzeyen başlıkları geri gönderir:

HTTP/1.1 404 Not Found
Date: Thu, 10 Apr 2014 17:19:27 GMT
Server: Apache/2.4.9 (Unix)
Content-Length: 1149
Connection: close
Content-Type: text/html

Ben ServerSignature offde /etc/httpd/conf/httpd.conf, ama "Sunucu:" başlığı hala görünür. Mod_headers ile denedim . Etkinleştirdim ve birkaç şey denedim:

<IfModule headers_module>
Header set ProcessingTime "%D"
Header set Server BigJohn
</IfModule>

Durdurup httpdyukarıdaki konfigürasyona başladıktan sonra , HTTP başlıkları gibi bir şey içerir ProcessingTime: 1523, ancak "Sunucu:" başlık satırı değişmeden kalır. Bu yüzden "mod_headers" in kurulduğunu ve etkinleştirildiğini ve çalıştığını biliyorum ama istediğim gibi değil.

"Mod_security" adlı bir şeyin bunu iddia ettiğini iddia ediyorum, ancak mod_security'nin taşıdığı bagajın geri kalanını istemiyorum.

GÜNCELLEŞTİRME:

Kurulduktan sonra mod_security, sadece birkaç yönergeye ihtiyacınız var:

<IfModule security2_module>
SecRuleEngine on
ServerTokens Full
SecServerSignature "Microsoft-IIS/6.0"
</IfModule>

Bu içindir mod_security2.7.7


3
Conf dosyasını değiştirdikten sonra apache'yi yeniden başlattınız mı? Ayrıca 'httpd.com' isimli dosyayı hiç görmedim, genellikle 'httpd.conf' denir.
Michael Ozeryansky

@MichaelOzeryansky - yazım hatası yaptığınız için teşekkürler. Bu "httpd.conf" Ben httpd.conf değiştirdikten sonra durdurmak ve httpd başlatmak.
Bruce Ediger

Yanıtlar:


12

Sunucu kimliği / belirteci üstbilgisi "tarafından sağlanan " ServerTokens "yönergesi tarafından kontrol edilir mod_core. Apache HTTPD kaynak kodunu değiştirmek veya mod_securitymodül kullanmak dışında , sunucu kimliği başlığını tamamen gizlemenin başka bir yolu yoktur .

Bu mod_securityyaklaşımla, modsecurity.confdosyadaki modülün tüm direktiflerini / işlevlerini devre dışı bırakabilir ve herhangi bir ek "bagaj" olmadan sadece sunucu başlık ID direktifinden yararlanabilirsiniz.


Bu işe yarıyor, çok teşekkür ederim. Mod_security'nin Arch Linux'un sıradan paketlerinden biri olmadığını not etmek zorundayım. AUR'da bir PKGBUILD var, ancak 2011'den beri güncellenmedi (12 Nisan 2014 itibariyle) ve mod_security'nin gerçekten eski bir versiyonuna atıfta bulunuyor. Her zaman olduğu gibi, dağıtımınız değişebilir.
Bruce Ediger

25

mod_security harika, ancak amacına ulaşmak için buna gerçekten ihtiyacın yok.

Tüm modlar dahil edildikten sonra httpd.conf, seçtiğiniz başlıkları kolayca ayarlayabilirsiniz.

Header unset Server

ServerSignature Off
ServerTokens Prod

http://httpd.apache.org/docs/2.4/mod/core.html#serversignature


2
mod_sec, özel bir metnin çalışma apache'sini tamamen gizlemesi için gereklidir, aksi halde çözümünüz iyi ve basittir :)
intika 12:15

Bunun benim için Centos 6'da Apache 2.2'yi (yamalı) kullanma etkisi yoktur
16

1
Apache 2.4'te, Sözdizimi hatası olarak rapor edildi: Geçersiz komut 'Başlık', belki yanlış yazılmış veya sunucu konfigürasyonunda
Raptor

3
@Raptor Sen yüklemek zorunda mod_headers ilesudo a2enmod headers
Ortomala Lokni

1
Header unset ServerApache 2.2 ve 2.4'te çalışmıyor. Tepki başlıkları hala içeriyorServer: Apache
Maris B.

13

Sadece hala arayan insanlar için bu güncelleme. HTTP başlığındaki Sunucu satırını değiştirirken sorunla karşılaşıyordum. Bu tavsiye Debian şubelerinin systemd ve Apache 2.4.7 ile dağıtılması için çalışmalıdır. Özellikle, Ubuntu Sunucusu LTS 14.04.03 kullanıyorum. Bulduğum bazı tavsiyeler yapmaktı.

grep -Ri servertokens /etc/apache2

Bu da beni /etc/apache2/conf-available/security.conf adresine götürdü, burada hem ServerTokens hem de ServerSignature belirtildi. Bu nedenle, /etc/apache2/apache2.conf dosyasında yaptığım tüm değişikliklerde, security.conf dosyasında belirtilen yönergelerin üzerine yazılmıştı.

Sadece security.conf'taki direktifleri değiştirdim ve Apache istediğim gibi çalışmaya başladı.

ServerTokens Prod
ServerSignature Off

Başlık unset Sunucusu başlığında, Apache devs'in sorunu çözmeyeceğini söylediği bir hata raporu buldum. Görünüşe göre onlar için bu, felsefi bir meseledir, HTTP / 1.1, RFC 2616 şartnamesinin, Tim Berners-Lee tarafından kısmen yazıldığını ve Sunucu etiketinin isteğe bağlı olduğunu söylediğini belirtti.

Qualys taramalarımızı mutlu etmek için Server etiketini "Unknown" olarak ayarlamak istedim. Bu nedenle, şu DigitalOcean eğitimini izleyerek şimdi libapache2-modsecurity adlı mod_security'i kurdum . Bol şans, umarım gelecekteki tüm okuyucularınız için yardım etmişimdir.


1

Bir dereceye kadar benim için çalışan Oracle HTTP Sunucusu 11.1.1.9'da (Apache 2.2.22'ye dayanan) bir şey test ettim.

"ServerTokens" ı "none" olarak ayarlamak, "Sunucunun" üstbilgi değerini kaldırıyor gibi görünmektedir, ancak başlığın kendisi yanıt olarak gönderilmeye devam eder, ancak şimdi boş bir değere sahiptir.

ServerTokens yok

Yanıt başlığı şöyle görünür:

HTTP / 1.1 200 Tamam

Tarih: Pzt, 28 Ara 2015 07:02:45 GMT

Sunucu:

Son Değiştirme: Güneş, 27 Ara 2015 07:29:13 GMT

.

.


2
Apache 2.2 hissesinde, Centos 6 depolarından "none" değerinin ayarlanması Apache'nin tüm verileri vermesine neden olur. Örneğin: "Sunucu: Apache / 2.2.15 (CentOS) DAV / 2 PHP / 5.3.3 mod_ssl / 2.2.15 OpenSSL / 1.0.1e-fips Phusion_Passenger / 4.0.59 mod_perl / 2.0.4 Perl / v5.10.1"
jph

katılıyorum, noneen son Apache'de kullanamazsınız :ServerTokens takes 1 argument: 'Prod(uctOnly)', 'Major', 'Minor', 'Min(imal)', 'OS', or 'Full'
vladkras
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.