Onde encontro a declaração configtest do Apache?

Onde encontro a declaração configtest do Apache?

Quero melhorar a segurança do meu servidor Apache.

  1. Abrir:

    /etc/apache2/conf.d/security
  2. Editar:

    Produção de ServerTokens
    Assinatura do servidor desativada
  3. Recarregar/Reiniciar:

    /etc/init.d/apache2 recarregar
    /etc/init.d/apache2 reiniciar

Os valores Prod e Off devem estar corretos, mas recebo estes erros:

ServerTokens leva um argumento, Determine os tokens exibidos no servidor: cabeçalho - Min(imal), OS ou Full
A ação 'configtest' falhou.
ServerSignature recebe um argumento, Ativar/desativar assinatura do servidor (on|off|email)
A ação 'configtest' falhou.

Onde encontro a declaração configtest do Apache, para que eu possa dizer para aceitar Prod e Off?

Solução do problema:

Eu tinha comentários embutidos em meu arquivo de configuração, que não são permitidos.

Então NÃO faça isso:

ServerTokens Prod # Adicionado em 20/10/2012

Em vez disso, faça desta forma:

# Adicionado em 20/10/2012:
Produção de ServerTokens

Porém, as mensagens de erro me confundiram, pois tinham apenas três opções (Min, OS e Full) e estavam todas em letras minúsculas (on|off|email) enquanto no arquivo de configuração havia mais opções e ucfirst.

Responder1

Parece que você está usando um sistema Debian/Ubuntu ou similar. Você pode executar um configtest com

apache2ctl configtest

Você não pode alterar sua declaração para aceitar Prod (já o faz) e não deveria ser necessário.

A mensagem de erro é bastante clara. ServerTokens takes one argument ... Só posso receber esta mensagem de erro se fornecer à diretiva ServerTokens mais de um parâmetro, então

 ServerTokens Prod 1

falha da mesma maneira que você observa. Você precisa descobrir por que suas diretivas ServerTokens e ServerSignature têm mais de um parâmetro. A primeira coisa que eu tentaria é carregar os arquivos no vim e usá- :set invlistlos para mostrar quaisquer caracteres ocultos em seu arquivo.

Responder2

Não tenho certeza do que você quer dizer. apache2 configtest(em uma caixa redhat) executa o apachectl. Se você olhar para o apachectl, que é um script fornecido pelo apache, ele está basicamente executando o httpd -t.

Então o próprio httpd é o que está testando a configuração quando você executa um configtest.

Uma maneira de contornar isso seria colocar alguns negated ifdefines em torno das estrofes de configuração ofensivas

por exemplo: No seu arquivo de configuração:

<ifdefine ! DONTRUNMYBADCONFIG >
ServerTokens Prod
ServerSignature Off
</ifdefine>

Então corra

httpd -t -DDONTRUNMYBADCONFIG

Para testar sua configuração. Acredito que todo o resto será testado normalmente, mas essas duas diretivas serão ignoradas enquanto -DDONTRUNMYBADCONFIGestiverem na linha de comando do Apache.

Você pode adicionar -DDONTRUNMYBADCONFIGo /etc/init.d/apache2script na seção "confgitest" se desejar, para que ainda possa executar service httpd configtestnormalmente.

informação relacionada