Não quero que ninguém detecte que estou usando NGINX ou mesmo Ubuntu pela internet. Existem ferramentas por aí (como BuiltWith) que verificam os servidores para detectar quais ferramentas eles estão usando. Além disso, algumas ferramentas de cracking podem ajudar na detecção. Qual é o melhor / mais próximo disso que posso esconder todas essas informações do lado de fora?
Você pode parar a saída da versão do Nginx e do SO adicionando
para um
http
,server
, oulocation
contexto.Ou se você deseja remover completamente o cabeçalho do servidor, você precisa compilar o Nginx com o módulo Headers More, pois o cabeçalho é codificado na fonte do Nginx e este módulo permite alterar qualquer cabeçalho http.
No entanto, existem muitas maneiras ocultas de desempenho acidental dos servidores por meio de sua implementação, o que pode ajudar a identificar o sistema. por exemplo, como ele responde a uma solicitação SSL incorreta. Não vejo uma maneira prática de evitar isso.
Algumas das coisas que posso sugerir:
Se você instalou o nginx usando o apt-get no Debian ou Ubuntu, pode ser necessário instalar o pacote nginx-extras para definir ou limpar o cabeçalho "Servidor"
Feito isso, você pode adicionar as linhas abaixo no nginx.conf (geralmente /etc/nginx/nginx.conf):
Para limpar completamente o cabeçalho "Servidor":
Para definir uma string personalizada como "Servidor"
@Martin F. Sim, ele faz. Você terá que compilá-lo a partir do código-fonte e alterar o que for necessário antes de compilar o código-fonte.
Suponho que você baixou a última versão estável que você descompactou e sabe onde estão os arquivos. Se for esse o caso, faça o seguinte:
Em seguida, procure a linha 48 se bem me lembro.
Substitua nginx por MyWhateverServerNameIWant, por exemplo
Então
procure a linha
altere "nginx/" para "MyWhateverServerNameIWant/" para que ele leia
Finalmente, se você quiser também alterar o número da versão
procure a linha #define NGINX_VERSION "1.0.4"
e altere "1.0.4" para a versão desejada. Por exemplo, ele vai ler
Espero que ajude. No entanto. Proteger um servidor vai muito além de não mostrar o que está sendo executado. O PHP é inseguro por natureza, assim como o Linux. Claro que o linux pode ser bastante seguro se todas as medidas necessárias forem tomadas para alcançar uma segurança decente. No que diz respeito ao PHP, eu recomendaria usar o Suoshin para ajudar a fortalecer a segurança do seu código.
1) Instale o
nginx-extras
pacote ao lado denginx
:2) Abra
nginx.conf
e adicione as seguintes linhas dentrohttp
do bloco:3) Reinicie
nginx
Depois de muito tempo trabalhando como fazer um sabor personalizado do nginx no Ubuntu, percebi que você pode usar o módulo lua para isso.
No Ubuntu 14.04, se você instalar o
nginx-extras
pacote, poderá remover o cabeçalho do servidor usando:header_filter_by_lua 'ngx.header["server"] = nil';
Jogue isso no bloco http e cada solicitação não terá um
Server
cabeçalho.Se não funcionar, execute
nginx -V
para verificar se você tem o módulo lua compilado em sua cópia do nginx. Caso contrário, provavelmente existe um pacote alternativo que você pode usar para obtê-lo.Em vez da header_filter_by_lua é recomendado usar a nova diretiva header_filter_by_lua_block que inline a fonte Lua diretamente entre chaves (
{}
). Com isso não é necessário escapar caracteres especiais.header_filter_by_lua_block { ngx.header["server"] = nil }
https://github.com/openresty/lua-nginx-module#header_filter_by_lua_block
Só quero salientar que mesmo que o cabeçalho do servidor seja removido da resposta, o nome do servidor (nginx ou openresty, por exemplo) ainda é claramente visível na resposta de erro html que o servidor envia em caso de erro.
Qualquer pessoa pode facilmente obter esta resposta enviando, por exemplo, um cabeçalho muito longo. O Nginx retornará um 400 Bad Request, que não contém um cabeçalho de servidor (se corrigido), mas o próprio html o mostrará:
PS Eu não sei como me livrar deste também, realmente o próprio html o entregará, então deve haver uma maneira talvez de não gerar isso?
Em primeiro lugar: Por que usar um módulo extra como Headers More Nginx? Apenas para ocultar o cabeçalho do servidor. Se algumas linhas, um simples patch pode chegar à mesma solução para você.
Como o uso de um módulo extra pode resultar em instabilidade (o quão bem ele foi testado com seu ambiente? Com seus outros módulos etc.) ou insegurança (este módulo é atualizado regularmente com correções relacionadas a bugs e/ou segurança?)
Em segundo lugar. Este tópico descreve como resposta 279389 como você pode ajustar o código Nginx para alterar o cabeçalho do servidor. O problema é que eles esqueceram o HTTP/2. Resumindo, nada vai mudar. O cabeçalho do servidor ainda estará visível.
Menos é mais é melhor. Ok, admito, também estou procurando uma boa solução há muito tempo. Mas finalmente encontrei:
Patch de remoção do cabeçalho do servidor Nginx
Estou finalmente redimido daquele cabeçalho irritante do servidor Nginx.
Execute esta função bash na pasta de código-fonte nginx. Em nginx-$version, não em src/.
Com base nesta resposta .
Use os métodos abaixo na fonte; para eliminar a string nginx das mensagens de erro
então recompile