Hardering no Apache- TOP 10

O que e Apache ?

Apache nada mais é do que um servidor Web Open Source produzido pela Apache Software Foundation. É sem dúvida o servidor web mais utilizado na internet e funciona em várias plataformas como Windows, Unix, Linux e também no Mac OS X.



TOP 10 - Hardering



1. Desativar módulos desnecessários

Se você está planejando para instalar o apache de fonte , você deve desabilitar os seguintes módulos. Se você faz. / Configure-ajuda, você verá todos os módulos disponíveis que você pode ativar / desativar.
  • userdir - Mapeamento dos pedidos de usuário diretórios específicos. ou seja ~ username da URL vai se traduzido para um diretório no servidor
  • autoindex - Exibe listagem de diretório quando nenhum arquivo index.html está presente
  • status - Mostra servidor Estatísticas
  • env - Compensação / criação de ENV vars
  • SetEnvIf - Colocação vars ENV nos cabeçalhos
  • cgi - CGI os scripts
  • ações - Ação desencadeantes em pedidos
  • negociação - negociação de conteúdo
  • Alias ​​- Mapeamento dos pedidos de peças de sistemas de arquivos diferentes
  • incluem - Server Side Includes
  • filtro - o filtro inteligente de pedido
  • versão - informações sobre a versão Manipulação em arquivos de configuração usando IfVersion
  • como está - como é filetypes
Desativar todos os módulos acima, como mostrado abaixo quando você faz. / Configure
. / Configure \
 - Enable-ssl \
 - Enable-so \
 - Disable-userdir \
 - Disable-autoindex \
 - Disable-status \
 - Disable-env \
 - Disable-SetEnvIf \
 - Disable-cgi \
 - Disable-ações \
 - Disable-negociação \
 - Desative-alias \
 - Disable-include \
 - Disable-filtrar \
 - Disable-versão \
 - Disable-asis 
Se você ativar o SSL, e desativar mod_setenv, você vai ter o seguinte erro.
  • Erro: erro de sintaxe na linha 223 de / usr/local/apache2/conf/extra/httpd-ssl.conf: 'BrowserMatch' comando inválido, talvez erro ortográfico ou definido por um módulo não incluídos na configuração do servidor
  • Solução: Se você usar o SSL, não desative SetEnvIf. Ou, comente a BrowserMatch na sua httpd ssl.conf, se você desativar mod_setenvif.
Após a instalação, quando você faz httpd-l, você verá todos os módulos instalados.
  # / Usr/local/apache2/bin/httpd l-
 Compilado em módulos:
   core.c
   mod_authn_file.c
   mod_authn_default.c
   mod_authz_host.c
   mod_authz_groupfile.c
   mod_authz_user.c
   mod_authz_default.c
   mod_auth_basic.c
   mod_log_config.c
   mod_ssl.c
   prefork.c
   http_core.c
   mod_mime.c
   mod_dir.c
   mod_so.c 
Neste exemplo, temos os seguintes módulos apache instalado.
  • core.c - Apache módulo central
  • mod_auth * - Por vários módulos de autenticação
  • mod_log_config.c - solicitação do cliente do registro. oferece flexibilidade de log adicionais.
  • mod_ssl.c - Para SSL
  • prefork.c - Para MPM (Multi-Processing Module) módulo
  • httpd_core.c - Apache módulo central
  • mod_mime.c - Para definir documento tipos MIME
  • mod_dir.c - Para barra final redirecionamento em caminhos de diretório. se você especificar / url teste /, ele vai para url / teste / index.html
  • mod_so.c - Para carregar módulos durante iniciar ou reiniciar

2. Executar o Apache como usuário separado e um grupo


Por padrão, o Apache pode ser executado como ninguém ou daemon. É bom para rodar apache em sua conta sem privilégios próprios. Por exemplo: apache.
Criar apache grupo e de usuário.
  groupadd apache
 useradd-D-g / usr/local/apache2/htdocs apache-s / bin / false apache 
Modificar o httpd.conf, e definir de Usuário e Grupo adequadamente.
  # Httpd.conf vi
 Usuário apache
 Grupo apache 
Depois disso, se você reiniciar o apache, e fazer ps-ef, você vai ver que o apache está funcionando como "apache" (Exceto o processo httpd 1, que sempre será executado como root).


  # Ps-ef | grep-i http | awk '{print $ 1}'
 raiz
 apache
 apache
 apache
 apache
 apache 

3. Restringir o acesso ao diretório raiz (Utilize Permitir e Negar)

Fixe o diretório raiz, definindo o seguinte no httpd.conf
  Ordem Nenhum Opções negar, permitir Deny from all </ Directory> 
No exemplo acima:
  • Nenhum Opções - Configure para Nenhuma, o que não permitirá quaisquer recursos opcionais extras.
  • Ordenar negar, permitir - Esta é a ordem em que o "Deny" e "Permitir" directivites deve ser processado. Este processa o "negar" o primeiro e "permitir" ao lado.
  • Negar de todas as - Este nega pedido de todos para o diretório raiz. Não há Permitir directiva para o diretório raiz. Então, ninguém pode acessá-lo.

4. Definir permissões adequadas para conf e bin

bin e conf deve ser visto apenas por usuários autorizados. É uma boa idéia para criar um grupo e adicionar todos os usuários que têm permissão para ver / modificar os arquivos de configuração do Apache para este grupo.
Vamos chamar este grupo: apacheadmin
Criar o grupo.
  groupadd apacheadmin 
Permitir o acesso ao diretório bin para este grupo.
  chown-R root: apacheadmin / usr/local/apache2/bin
 chmod-R 770 / usr/local/apache2/bin 
Permitir o acesso ao diretório conf para este grupo.
  chown-R root: apacheadmin / usr/local/apache2/conf
 chmod-R 770 / usr/local/apache2/conf 
Adicionar membros apropriados a este grupo. Neste exemplo, tanto ramesh e João são parte de apacheadmin
  # Vi / etc / group
 apacheadmin: x: 1121: ramesh, john 

5. Desativar Pesquisa no Diretório

Se você não fizer isso, os usuários serão capazes de ver todos os arquivos (e diretórios) em sua raiz (ou qualquer sub-diretório).
Por exemplo, se eles vão para http:// {o-ip} / images / e se você não tem um index.html em imagens, eles vão ver todos os arquivos de imagem (e os sub-diretórios) listados na o navegador (como uma saída de -1 ls). A partir daqui, eles podem clicar sobre o arquivo de imagem individual para o visualizar, ou clicar em um sub-diretório para ver seu conteúdo.
Para desabilitar a navegação no diretório, você pode definir o valor da diretiva Opções para "Nenhum" ou "-Índices". A - em frente ao nome da opção irá removê-lo da lista atual de opções aplicadas para o diretório.
Índices irá exibir uma lista de arquivos disponíveis e sub-diretórios dentro de um diretório no navegador (apenas quando não index.html está presente dentro dessa pasta). Assim, os índices não devem ser permitidas.
  
   Nenhum opções
   Ordenar permitir, negar
   Permitir que a partir de todos
 </ Directory>

 (Ou)

 
   Opções-índices
   Ordenar permitir, negar
   Permitir que a partir de todos
 </ Directory> 

6. Não permita. Htaccess

Usando. Htaccess dentro de um diretório específico do sub-nos htdocs (ou em qualquer lugar ouside), os usuários podem substituir as diretrizes padrão do Apache. Em certas situações, isto não é bom, e deve ser evitado. Você deve desativar esse recurso.
Você não deve permitir que os usuários utilizem o. Htaccess e substituir directivas apache.Para fazer isso, defina "AllowOverride None" no diretório raiz.
  
   Nenhum opções
   Nenhum AllowOverride
   Ordenar permitir, negar
   Permitir que a partir de todos
 </ Directory> 

7. Desative opções de outros

A seguir, os valores disponíveis para diretiva Opções:
  • Opções de Todos - Todas as opções estão habilitadas (exceto MultiViews). Se você não especificar diretiva Options, este é o valor padrão.
  • Opções ExecCGI - executar scripts CGI (usa mod_cgi)
  • FollowSymLinks Opções - Se você tem links simbólicos neste diretório, ele será seguido.
  • Inclui opções - Permitir lado do servidor inclui (usa módulo mod_include)
  • Opções IncludesNÃOEXEC - Permitir lado do servidor inclui, sem a capacidade de executar um comando ou cgi.
  • Opções de Índices - Desativar listagem de diretório
  • MultiViews Opções - Permitir Multiviews conteúdo negociados (usa mod_negotiation)
  • Opções SymLinksIfOwnerMatch - Semelhante ao FollowSymLinks. Mas, este seguirá apenas quando o proprietário é o mesmo entre o link eo diretório original, ao qual ele está vinculado.
Nunca especificar 'Opções de Todos'. Sempre especifique um (ou mais) das opções acima mencionadas. Você pode combinar várias opções em uma única linha, como mostrado abaixo.
  Inclui opções FollowSymLinks 
O + e - na frente de um valor de opção é útil quando você tem direcotires aninhadas, e gostaria de substituir uma opção da diretiva Directory pai.
Neste exemplo, para o diretório / site, que tem tanto Inclui e Índices:
  
   Opções inclui índices
   Nenhum AllowOverride
   Ordenar permitir, negar
   Permitir que a partir de todos
 </ Directory> 
Para o diretório / site / pt, se você só precisa de índices de / site (e não os inclui), e se você quiser FollowSymLinks apenas para este diretório, faça o seguinte.
  
   Opções-Inclui + FollowSymLink
   Nenhum AllowOverride
   Ordenar permitir, negar
   Permitir que a partir de todos
 </ Directory> 
  • / Site terá Inclui e Índices
  • / Site / pt terá índices e FollowSymLink

8. Remover módulos indesejados DSO

Se tiver colocado qualquer dinâmica módulos objeto compartilhado ao apache, eles estarão presentes dentro do httpd.conf em "LoadModule" directiva.
Por favor, note que os módulos compilados estaticamente apache não será listado como "LoadModule" directiva.
Comente os indesejados "LoadModules" no httpd.conf
  grep LoadModule / usr/local/apache2/conf/httpd.conf 

9. Restringir o acesso a uma rede específica (ou endereço IP)

Se você quiser que seu site seja visto apenas por um determinado endereço IP ou de rede, faça o seguinte:
Para permitir que uma rede específica para acessar seu site, dar o endereço de rede na directiva Permitir.
  
   Nenhum opções
   Nenhum AllowOverride
   Ordenar negar, permitir
   Negar a partir de todos
   Permitir que a partir 10.10.0.0/24
 </ Directory> 
Para permitir que um determinado endereço IP para acessar o seu site, dar o endereço IP na diretiva Permitir.
  
   Nenhum opções
   Nenhum AllowOverride
   Ordenar negar, permitir
   Negar a partir de todos
   Permitir que a partir 10.10.1.21
 </ Directory> 

10. Não apresentar ou enviar Apache versão (ServerTokens Set)

Por padrão, o servidor de cabeçalho de resposta HTTP contém apache e versão php. Algo semelhante ao seguinte. Isto é prejudicial, como nós não queremos um atacante para saber sobre o número de versão específico.
  Servidor: Apache/2.2.17 (Unix) PHP/5.3.5 
Para evitar isso, defina as ServerTokens para Prod no httpd.conf. Isto irá exibir "Servidor: Apache", sem qualquer informação de versão.
  # Httpd.conf vi
 ServerTokens Prod 
A seguir estão os possíveis valores ServerTokens:
  • ServerTokens Prod exibe "Servidor: Apache"
  • ServerTokens Maior exibe "Servidor: Apache / 2"
  • ServerTokens Menor exibe "Servidor: Apache/2.2"
  • Min ServerTokens exibe "Servidor: Apache/2.2.17"
  • ServerTokens OS exibe "Servidor: Apache/2.2.17 (Unix)"
  • ServerTokens completo exibe "Server: Apache/2.2.17 (Unix) PHP/5.3.5" (Se você não especificar qualquer valor ServerTokens, este é o padrão)
Além de todas as dicas acima de 10, certifique-se de proteger o seu UNIX / Linux sistema operacional. Não há nenhum ponto em assegurar o seu apache, se seu sistema operacional não é seguro. Além disso, mantenha sempre a sua versão apache até data. A mais recente versão do apache contém correções para todos os problemas de segurança conhecidos.Certifique-se de rever seus arquivos de log do apache com freqüência.
Fonte : http://www.thegeekstuff.com/2011/03/apache-hardening/

Comentários

Postagens mais visitadas