Zmień nagłówek HTTP Apache httpd „Server:”

33

Jednym z nagłówków HTTP, które Apachehttpd odsyła z danymi odpowiedzi, jest „Serwer”. Na przykład mój komputer z serwerem WWW jest stosunkowo aktualny Arch Linux. Odsyła nagłówki bardzo podobne do następujących:

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

Mam ServerSignature offw /etc/httpd/conf/httpd.conf, ale „Server:” nadal pojawia się nagłówek. Eksperymentowałem z mod_headers . Mam to włączone i próbowałem kilku rzeczy:

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

Po zatrzymaniu i uruchomieniu httpdpowyższej konfiguracji nagłówki HTTP zawierają coś podobnego ProcessingTime: 1523, ale wiersz nagłówka „Serwer:” pozostaje niezmieniony. Wiem więc, że „mod_headers” jest zainstalowany i włączony, i działa, ale nie tak, jak chcę.

Widzę, że coś o nazwie „mod_security” twierdzi, że to robi, ale nie chcę całej reszty bagażu, który nosi przy sobie mod_security.

AKTUALIZACJA:

Po mod_securityzainstalowaniu potrzebujesz tylko kilku dyrektyw:

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

To dotyczy wersji mod_security2.7.7

Bruce Ediger
źródło
3
Czy zrestartowałeś Apache od czasu zmiany pliku conf? Nigdy też nie widziałem pliku o nazwie „httpd.com”, zwykle nazywa się to „httpd.conf”.
Michael Ozeryansky
@MichaelOzeryansky - dziękuję za wyłapanie literówki. To jest „httpd.conf” Zatrzymuję się i uruchamiam httpd po zmianie httpd.conf.
Bruce Ediger,

Odpowiedzi:

12

Identyfikator serwera / nagłówek tokena jest kontrolowany przez dyrektywę „ ServerTokens ” (dostarczoną przez mod_core). Oprócz modyfikowania kodu źródłowego Apache HTTPD lub korzystania z mod_securitymodułu nie ma innego sposobu, aby całkowicie ukryć nagłówek identyfikatora serwera.

Dzięki mod_securitytakiemu podejściu możesz wyłączyć wszystkie dyrektywy / funkcje modułu w modsecurity.confpliku i wykorzystać tylko dyrektywę ID nagłówka serwera bez dodatkowego „bagażu”.

Chipster
źródło
To działa, dziękuję bardzo. Muszę zauważyć, że mod_security nie jest jednym ze zwykłych pakietów Arch Linux. W AUR znajduje się PKGBUILD, ale nie został zaktualizowany od 2011 r. (Od 12 kwietnia 2014 r.) I odwołuje się do naprawdę starej wersji mod_security. Jak zawsze Twoja dystrybucja może się różnić.
Bruce Ediger,
25

mod_security jest świetny, ale tak naprawdę nie potrzebujesz go, aby osiągnąć swój cel.

po włączeniu wszystkich modów httpd.confmożesz po prostu odznaczyć wybrane nagłówki.

Header unset Server

ServerSignature Off
ServerTokens Prod

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

Matt Ryan
źródło
2
mod_sec jest potrzebny, aby niestandardowy tekst całkowicie ukrył apache pracy, w przeciwnym razie twoje rozwiązanie jest dobre i proste :)
intika
Nie ma to dla mnie żadnego wpływu na używanie Apache 2.2 (
łatane
1
W Apache 2.4 jest zgłaszany jako błąd składniowy: niepoprawna komenda „Header”, być może błędnie napisana lub zdefiniowana przez moduł nieuwzględniony w konfiguracji serwera
Raptor
3
@Raptor Musisz zainstalować mod_headers zsudo a2enmod headers
Ortomala Lokni
1
Header unset Servernie działa w Apache 2.2 i 2.4. Nagłówki odpowiedzi wciąż zawierająServer: Apache
Maris B.,
13

Właśnie aktualizuję to dla osób, które wciąż szukają. Miałem problem ze zmianą wiersza serwera w nagłówku HTTP. Ta rada powinna działać w przypadku dystrybucji oddziałów Debiana w systemach systemd i Apache 2.4.7. W szczególności używam Ubuntu Server LTS 14.04.03. Znalazłem kilka rad

grep -Ri servertokens /etc/apache2

Doprowadziło mnie to do /etc/apache2/conf-available/security.conf, gdzie podano zarówno ServerTokens, jak i ServerSignature. Dlatego wszelkie zmiany, które wprowadzałem w /etc/apache2/apache2.conf, były zastępowane przez dyrektywy już określone w security.conf.

Po prostu zmieniłem dyrektywy w security.conf i Apache zaczął działać tak, jak chciałem.

ServerTokens Prod
ServerSignature Off

Na temat Headset unset Server znalazłem raport o błędzie, w którym twórcy Apache stwierdzili, że nie da się rozwiązać problemu. Najwyraźniej dla nich jest to kwestia filozoficzna, mimo że specyfikacja dla HTTP / 1.1, RFC 2616 została częściowo opracowana przez Tima Bernersa-Lee, mówiąc, że tag Server jest opcjonalny.

Naprawdę chciałem ustawić znacznik Server na „Nieznany”, aby nasze skany Qualys były szczęśliwe. Tak więc zainstalowałem mod_security, teraz nazywany libapache2-modsecurity, po tym samouczku DigitalOcean . Powodzenia, mam nadzieję, że pomogłem wam wszystkim przyszłym czytelnikom.

slmaq
źródło
1

Testowałem coś na Oracle HTTP Server 11.1.1.9 (który jest zbudowany na Apache 2.2.22), który działał dla mnie w pewnym stopniu ..

Ustawienie „ServerTokens” na „none” wydaje się usuwać wartość nagłówka „Server”, chociaż sam nagłówek jest nadal wysyłany w odpowiedzi, ale teraz ma wartość zerową.

ServerTokens brak

Nagłówek odpowiedzi wyglądałby tak:

HTTP / 1.1 200 OK

Data: pon., 28 grudnia 2015 07:02:45 GMT

Serwer:

Ostatnia modyfikacja: niedz., 27 grudnia 2015 07:29:13 GMT

.

.

Mohab Elsayed
źródło
2
Na magazynie Apache 2.2, z repozytoriów Centos 6, ustawienie wartości „none” powoduje, że Apache wyświetla wszystkie dane. Na przykład: „Serwer: 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
zgadzam się, że nie można używać nonena najnowszym Apache:ServerTokens takes 1 argument: 'Prod(uctOnly)', 'Major', 'Minor', 'Min(imal)', 'OS', or 'Full'
vladkras