Vraag Kan ik alle server / os-info verbergen?


Ik wil niet dat iemand kan ontdekken dat ik NGINX of zelfs Ubuntu via internet gebruik. Er zijn tools (zoals BuiltWith) die servers scannen om te detecteren welke tools ze gebruiken. Ook kunnen sommige kraakgereedschappen helpen met detonen. Wat is de beste / meest nabije die ik kan krijgen om al deze informatie van buitenaf te verbergen?


59
2017-12-19 21:00


oorsprong




antwoorden:


Je kunt voorkomen dat het de versie van Nginx en OS uitvoert door het toe te voegen

server_tokens off;

naar een http, serverof location context.

Of als u de Server-header volledig wilt verwijderen, moet u Nginx compileren met de module Headers More, omdat de header hard gecodeerd is in de Nginx-bron en deze module het mogelijk maakt om eventuele http-headers te wijzigen.

 more_clear_headers Server;

Er zijn echter veel verborgen manieren waarop servers per ongeluk optreden via hun implementatie, wat kan helpen bij het identificeren van het systeem. bijv. Hoe het reageert op een slecht SSL-verzoek. Ik zie geen praktische manier om dit te voorkomen.

Enkele dingen die ik zou kunnen voorstellen:

  • verander foutsjablonen
  • blokkeer alle poorten behalve de benodigde services

87
2017-12-19 21:18



Akkoord. Kijk bijvoorbeeld naar de OS-detectie van nmap - dit kijkt naar de antwoorden van de doelhosts op IP / TCP-aanvragen en kan het besturingssysteem op die manier bepalen. Het is echt niet de moeite waard hier iets aan te doen. - EEAA
+1 op advies van ErikA. Het is beter om uw server zo goed mogelijk te beveiligen in plaats van te vertrouwen op beveiliging door middel van obscuriteit. - Andy Smith
@ErikA, @Andy, @Andy Smith - bedankt jongens. - orokusaki
Server tokens schakelen alleen het versienummer uit. Nginx staat niet toe om de header volledig te verwijderen. - Martin Fjordvald
het negeren van belangrijke beveiligingsfactoren zoals "geen versienummers" en waarschijnlijk zelfs "helemaal geen serverleveranciersnaam" is slechts ... een beginnersfout. Natuurlijk beveiliging door middel van obscurity doet niets voor uw veiligheid zelf maar het zal in ieder geval zeker beschermen tegen de meest alledaagse, simplistische aanvalsvectoren - beveiliging door middel van obscuriteit is een noodzakelijk stap, het kan de eerste zijn en zou moeten nooit de laatste beveiligingsmaatregel zijn - het volledig verwijderen is een heel slechte fout, zelfs de meest veilige webservers kunnen worden gekraakt als een versiespecifieke aanvalsvector bekend is. - specializt


Als u nginx hebt geïnstalleerd met apt-get in Debian of Ubuntu, moet u mogelijk het pakket nginx-extra's installeren om de kop "Server" in te stellen of te wissen

Zodra dit is gebeurd, kun je de onderstaande regels toevoegen in nginx.conf (meestal /etc/nginx/nginx.conf):

Om de "Server" -kop helemaal te wissen:

more_clear_headers Server; 

Een aangepaste reeks instellen als "Server"

more_set_headers 'Server: some-string-here';

20
2018-03-29 04:19



bevestigd more_clear_headers Server; werkt ook op Debian Jessie 8.5 nginx-versie: nginx / 1.6.2 - Brandon
Dit antwoord heeft meer upvotes nodig. Hoewel misschien moet worden opgemerkt dat de richtlijn in het http-blok van het conf-bestand moet worden geplaatst (denk ik) - Andy
Dit werkt in http, server, location, en location if contexten. Bron: ngx_headers_more documentatie - Kelvin


@Martin F. Ja, dat is zo. Je zult het van de bron moeten compileren en veranderen wat nodig is voordat je de bron compileert.

Ik neem aan dat je de laatste stabiele versie hebt gedownload die je hebt gedecomprimeerd en je weet waar de bestanden zich bevinden. Als dat het geval is, doet u het volgende:

nano src/http/ngx_http_header_filter_module.c

Zoek dan naar regel 48 als ik me goed herinner.

static char ngx_http_server_string[] = "Server: nginx" CRLF;

Vervang nginx door MyWhateverServerNameIWant, bijvoorbeeld

static char ngx_http_server_string[] = "Server: MyWhateverServerNameIWant" CRLF; 

Dan

nano src/core/nginx.h 

zoek naar de regel

#define NGINX_VER          "nginx/" NGINX_VERSION

verander "nginx /" in "MyWevereverServerNameIWant /" zodat het zal lezen

#define NGINX_VER          "MyWhateverServerNameIWant" NGINX_VERSION

Als u tenslotte ook het versienummer wilt wijzigen

zoek naar de regel     #define NGINX_VERSION "1.0.4"

en verander "1.0.4" voor welke versie je maar wilt. Het zal bijvoorbeeld lezen

#define NGINX_VERSION      "5.5.5"

Hoop dat het helpt. Niettemin. Het beveiligen van een server gaat veel verder dan niet laten zien wat er draait. PHP is van nature onveilig, net als linux. Natuurlijk kan Linux behoorlijk veilig zijn als alle nodige maatregelen worden genomen om een ​​behoorlijke beveiliging te bereiken. Wat betreft PHP zou ik aanraden om te gebruiken Suoshin om de beveiliging van uw code te verbeteren.


17
2018-06-11 04:36



+1, bedankt. Ik verlaat @ Andy als de officiële, alleen vanwege de gemakkelijkere aanpak, maar dit is uitstekende informatie. - orokusaki
Ik denk dat je Suhosin bedoelt. - Beetle


Na veel tijd te hebben uitgeprobeerd om een ​​aangepaste smaak van nginx op ubuntu uit te werken, besefte ik dat je hiervoor de lua-module kunt gebruiken.

Op ubuntu 14.04 als u de nginx-extras pakket kunt u de serverheader verwijderen met behulp van:

header_filter_by_lua 'ngx.header["server"] = nil';

Gooi dit in het http-blok en elk verzoek zal ontbreken Server header.

Als het niet werkt, ren dan nginx -V om te controleren of u de lua-module hebt gecompileerd in uw exemplaar van nginx. Zo niet, dan is er waarschijnlijk een alternatief pakket dat u kunt gebruiken om het te krijgen.


7
2017-12-18 05:45



Bevestigd dat dit werkt op Debian Jessie 8.5 nginx-versie: nginx / 1.6.2 - Brandon
Bij debian testen lijkt dit niet te werken, MAAR installeren nginx-extra gemaakt more_set_headers "Server: whatever"; werk, dus +1: D - Shautieh
U hoeft alleen LUA ingeschakeld te hebben om dit te laten werken. tnx - glavić


In plaats van de header_filter_by_lua het wordt aanbevolen om de nieuwe richtlijn te gebruiken header_filter_by_lua_block waardoor de Lua-bron direct wordt gekruist tussen accolades ({}). Hiermee is het niet nodig om aan speciale karakters te ontsnappen.

header_filter_by_lua_block { ngx.header["server"] = nil }

https://github.com/openresty/lua-nginx-module#header_filter_by_lua_block


6
2017-10-02 07:08





Voer deze bash-functie uit in de nginx-broncodemap. In nginx- $ version, niet in src /.

Op basis op dit antwoord.

hidengxver () {
read -r -p "Your own http_server_string for safety: " http_server_string
first_string="static char ngx_http_server_string\[\] = \"Server: nginx\" CRLF;"
second_string="static char ngx_http_server_string\[\] = \"$http_server_string\" CRLF;"
sed -ire "s/$first_string/$second_string/g" src/http/ngx_http_header_filter_module.c

read -r -p "Your own NGINX_VER const: " nginx_ver
third_string="\#define NGINX\_VER          \"nginx\/\" NGINX\_VERSION"
forth_string="\#define NGINX\_VER          \"$nginx_ver\" NGINX\_VERSION"
sed -ire "s/$third_string/$forth_string/g" src/core/nginx.h

real_nginx_version=$( grep '#define NGINX_VERSION' src/core/nginx.h | gawk -F'"' '{print $2}' )
read -r -p "Your own NGINX_VERSION const: " new_nginx_version
fifth_string="\#define NGINX\_VERSION      \"$real_nginx_version\""
sixth_string="\#define NGINX\_VERSION      \"$new_nginx_version\""
sed -ire "s/$fifth_string/$sixth_string/g" src/core/nginx.h
}

0
2017-10-27 20:07





Eerst en vooral: Waarom een ​​extra module gebruiken als Headers More Nginx? Alleen om de serverkop te verbergen. Als er enkele regels zijn, kan een eenvoudige patch voor u dezelfde oplossing bereiken.

Omdat het gebruik van een extra module kan leiden tot instabiliteit (hoe goed is het getest met uw omgeving? Met uw andere modules enz.) Of onzekerheid (wordt deze module regelmatig bijgewerkt met bug- en / of beveiligingsgerelateerde oplossingen?)

Ten tweede. Deze thread beschrijft als antwoord 279389 hoe u de Nginx-code kunt aanpassen om de serverkop te wijzigen. Het probleem is dat ze HTTP / 2 zijn vergeten. Kortom, niets zal veranderen. De serverkop blijft zichtbaar.

Minder is meer is beter. Ok, ik geef toe, ik ben ook al heel lang op zoek naar een goede oplossing. Maar eindelijk gevonden:

Nginx serverheaderverwijderingspatch

Ik ben eindelijk verlost van die irritante Nginx server header.


0
2018-06-18 23:25





Raadpleeg dit kern. Zeker zal je helpen.


-1
2018-06-02 09:30



Welkom bij Server Fault! Hoewel dit theoretisch de vraag kan beantwoorden, het zou de voorkeur hebben om de essentiële delen van het antwoord hier op te nemen, en geef de link voor referentie. - Gerald Schneider