Możesz zatrzymać wysyłanie wersji Nginx i systemu operacyjnego poprzez dodanie
server_tokens off;
do http
, server
lub location
kontekstu.
Lub jeśli chcesz całkowicie usunąć nagłówek serwera, musisz skompilować Nginx z modułem Headers More wewnątrz, ponieważ nagłówek jest zakodowany na stałe w źródle Nginx, a ten moduł umożliwia zmianę dowolnych nagłówków http.
more_clear_headers Server;
Istnieje jednak wiele ukrytych sposobów działania serwerów przez przypadek poprzez ich implementację, które mogą pomóc w identyfikacji systemu. np. Jak reaguje na złe żądanie SSL. Nie widzę praktycznego sposobu, aby temu zapobiec.
Niektóre rzeczy, które mogę zasugerować:
- zmienić szablony błędów
- zablokuj wszystkie porty z wyjątkiem potrzebnych usług
Jeśli zainstalowałeś nginx za pomocą apt-get w Debianie lub Ubuntu, być może będziesz musiał zainstalować pakiet dodatków nginx, aby ustawić lub wyczyścić nagłówek „Serwer”
Po wykonaniu tej czynności możesz dodać poniższe wiersze w pliku nginx.conf (zwykle /etc/nginx/nginx.conf):
Aby całkowicie wyczyścić nagłówek „Serwer”:
Aby ustawić niestandardowy ciąg jako „Serwer”
źródło
more_clear_headers Server;
działa również w wersji Debian Jessie 8.5 nginx: nginx / 1.6.2http
,server
,location
, ilocation if
konteksty. Źródło: ngx_headers_more dokumentacjasudo apt-get install nginx-extras
a następnie ustaw nagłówkiunknown directive "more_set_headers"
. Rozwiązano to poprzez włączenie modułu bezpośrednio w/etc/nginx/nginx.conf
. Po prostu dodajload_module modules/ngx_http_headers_more_filter_module.so;
na początku pliku konfiguracyjnego.@Martin F. Tak. Będziesz musiał skompilować go ze źródła i zmienić to, co jest potrzebne przed skompilowaniem źródła.
Zakładam, że pobrałeś ostatnią stabilną wersję, którą zdekompresowałeś i wiesz, gdzie są pliki. W takim przypadku wykonaj następujące czynności:
Następnie spójrz na linię 48, jeśli dobrze pamiętam.
Zamień nginx na MyWhthingServerNameIWant np
Następnie
poszukaj linii
zmień „nginx /” na „MyWhthingServerNameIWant /”, aby odczytać
Wreszcie, jeśli chcesz, zmień także numer wersji
poszukaj linii # zdefiniuj NGINX_VERSION „1.0.4”
i zmień „1.0.4” na dowolną wersję. Na przykład będzie czytać
Mam nadzieję, że to pomoże. Niemniej jednak. Zabezpieczenie serwera wykracza poza to, że nie pokazuje, co działa. PHP jest z natury niepewny, podobnie jak Linux. Oczywiście Linux może być całkiem bezpieczny, jeśli zostaną podjęte wszystkie niezbędne środki w celu osiągnięcia przyzwoitego bezpieczeństwa. Jeśli chodzi o PHP, polecam użycie Suoshin, aby wzmocnić bezpieczeństwo twojego kodu.
źródło
Po długim czasie opracowywania niestandardowego smaku nginx na Ubuntu zdałem sobie sprawę, że możesz do tego użyć modułu lua.
W Ubuntu 14.04, jeśli zainstalujesz
nginx-extras
pakiet, możesz usunąć nagłówek serwera, używając:header_filter_by_lua 'ngx.header["server"] = nil';
Rzuć to w bloku http, a do każdego żądania nie będzie
Server
nagłówka.Jeśli to nie zadziała, uruchom,
nginx -V
aby sprawdzić, czy masz moduł Lua wkompilowany w twoją kopię nginx. Jeśli nie, prawdopodobnie istnieje alternatywny pakiet, którego można użyć, aby go zdobyć.źródło
nginx-extra
wykonanamore_set_headers "Server: whatever";
praca, więc +1: DZamiast header_filter_by_lua zaleca się stosowanie nowej dyrektywy header_filter_by_lua_block, która wstawia źródło Lua bezpośrednio między nawiasami klamrowymi (
{}
). Dzięki temu nie ma potrzeby ucieczki od znaków specjalnych.header_filter_by_lua_block { ngx.header["server"] = nil }
https://github.com/openresty/lua-nginx-module#header_filter_by_lua_block
źródło
Przede wszystkim: po co używać dodatkowego modułu jako nagłówków Więcej Nginx? Tylko aby ukryć nagłówek serwera. Jeśli kilka wierszy, prosta łatka może osiągnąć to samo rozwiązanie dla Ciebie.
Korzystanie z dodatkowego modułu może spowodować niestabilność (jak dobrze przetestowano go w środowisku? Z innymi modułami itp.) Lub niepewność (czy ten moduł jest regularnie aktualizowany o poprawki błędów i / lub zabezpieczeń?)
Po drugie. Wątek ten opisuje jako odpowiedź 279389, w jaki sposób można dostosować kod Nginx, aby zmienić nagłówek serwera. Problem polega na tym, że zapomnieli o HTTP / 2. Krótko mówiąc, nic się nie zmieni. Nagłówek serwera będzie nadal widoczny.
Mniej znaczy więcej, tym lepiej. Ok, przyznaję, od dawna też szukałem dobrego rozwiązania. Ale w końcu znalazłem:
Poprawka do usuwania nagłówka serwera Nginx
Wreszcie jestem wykupiony od tego irytującego nagłówka serwera Nginx.
źródło
Uruchom tę funkcję bash w folderze kodu źródłowego nginx. W wersji nginx- $, nie w src /.
Na podstawie tej odpowiedzi .
źródło
Odnoszą się do tego GIST . Na pewno ci pomogę.
źródło