Hardering no Apache- TOP 10
O que e Apache ?
O 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.
O 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