Faz sentido a partir de uma perspectiva de segurança para remover o cabeçalho HTTP do servidor?

6

Estou usando o Varnish e não tenho certeza se também devo remover o Server: nginx HTTP header. Por que alguém precisa saber que estou usando o NGINX? Há algum problema em remover este cabeçalho HTTP da resposta ou é necessário em algum lugar? De uma perspectiva de segurança, é provavelmente melhor fazê-lo?

    
por chevallier 10.08.2018 / 21:44

3 respostas

12

O RFC 7231 diz sobre o cabeçalho do Servidor :

An origin server MAY generate a Server field in its responses.

O MAY é interpretado como RFC 2119 :

  1. MAY This word, or the adjective "OPTIONAL", mean that an item is truly optional. One vendor may choose to include the item because a particular marketplace requires it or because the vendor feels that it enhances the product while another vendor may omit the same item. An implementation which does not include a particular option MUST be prepared to interoperate with another implementation which does include the option, though perhaps with reduced functionality. In the same vein an implementation which does include a particular option MUST be prepared to interoperate with another implementation which does not include the option (except, of course, for the feature the option provides.)

Portanto, é perfeitamente correto restringir ou remover o cabeçalho de resposta do Servidor. É claro que é uma boa ideia estar ciente do que você pode estar desistindo ao fazer isso. Para isso, volte para o RFC 7231:

The "Server" header field contains information about the software used by the origin server to handle the request, which is often used by clients to help identify the scope of reported interoperability problems, to work around or tailor requests to avoid particular server limitations, and for analytics regarding server or operating system use. An origin server MAY generate a Server field in its responses.

Server = product *( RWS ( product / comment ) )

The Server field-value consists of one or more product identifiers, each followed by zero or more comments (Section 3.2 of [RFC7230]), which together identify the origin server software and its significant subproducts. By convention, the product identifiers are listed in decreasing order of their significance for identifying the origin server software. Each product identifier consists of a name and optional version, as defined in Section 5.5.3.

Example:

Server: CERN/3.0 libwww/2.17

An origin server SHOULD NOT generate a Server field containing needlessly fine-grained detail and SHOULD limit the addition of subproducts by third parties. Overly long and detailed Server field values increase response latency and potentially reveal internal implementation details that might make it (slightly) easier for attackers to find and exploit known security holes.

Embora, na prática, os invasores realmente não verifiquem o cabeçalho Server: Eles apenas tentam todas as explorações de segurança que eles conhecem, quer seu servidor dê alguma indicação de estar vulnerável ou não. Remover o Server: header é uma ação segurança por obscuridade e quase totalmente ineficaz. Mas, se isso faz você se sentir melhor, ou lhe dizem para fazer isso com seu chefe ou auditor, vá em frente. Só não espere que isso resulte em melhorias significativas na sua postura de segurança.

Por exemplo, nmap pode identificar um servidor da Web com boa precisão, mesmo quando está configurado para não enviar um cabeçalho Server , ou quando o conteúdo do cabeçalho é completamente falso. Experimente você mesmo com nmap -sV -P0 -p 80,443 <IP address> .

    
por 10.08.2018 / 22:13
2

O cabeçalho Server HTTP serve apenas uma finalidade - identificação. Não é necessário em qualquer lugar para executar o seu site corretamente, e removendo-o, nada vai quebrar.

Ele revela a infraestrutura do servidor interno e, portanto, vaza informações de segurança que podem ser úteis para possível invasão.

Depois de obter conhecimento do seu software de servidor da Web, via Server cabeçalho HTTP, o invasor em potencial poderá pesquisar as vulnerabilidades conhecidas do seu servidor da Web. Em seguida, eles podem usar essas informações em conjunto com qualquer outra informação que possam obter (por exemplo, através de verificação) - para criar um vetor de ataque adequado.

Assim, você pode querer remover o altogther do cabeçalho Server , por exemplo remova-o no nginx .

    
por 11.08.2018 / 11:34
1

Se você tem " server_tokens off " na sua configuração (e parece que você faz, pois há apenas 'nginx' e não diz 'nginx / 1.13.11'), então não há problema em deixar as coisas como eles são agora. O problema pode aparecer se você tiver uma versão vulnerável, e uma pessoa ruim pode usar essa informação para explorar a vulnerabilidade, mas para isso seu nginx deve estar publicamente acessível. Então, em poucas palavras, use "server_tokens off"; e não abra nenhuma porta nginx para todos os IPs, mas apenas para verniz, e você deve estar seguro.

    
por 10.08.2018 / 21:54