Insights > Blog

 

 

Protegendo o Apache Server

 

O Apache é um servidor web open source, que está no primeiro lugar no ranking dos servidores web mais utilizados do mundo.
Para nós, especialistas técnicos, é muito provável já termos trabalhado com ele em algum momento de nossa rotina profissional.

O que não é muito comum de sabermos, é que o Apache, assim como toda tecnologia, pode apresentar falhas de segurança, o que nos leva a necessidade de realizar determinadas configurações para melhorar a segurança do nosso servidor. Com base nas vulnerabilidades encontradas constantemente durante os testes realizados pela Cipher, vamos apontar os principais pontos e como podemos corrigi-los.

OBS.: Caso faça qualquer tipo de alteração no Apache, deve-se reiniciar o serviço para que tais alterações sejam aplicadas. Podemos fazer isso através do comando service apache2 restart.

Banner Exposto

O primeiro ponto a ser considerado, é este, pois é através do banner que um atacante consegue definir qual o tipo do servidor web, a sua versão e, com base nessas informações, montar um plano de ataque mais assertivo. Esse banner pode ser visto em páginas default, response headers e páginas de erro.

Para ocultarmos o banner, iremos alterar o arquivo de configuração de segurança que está localizado em /etc/apache2/conf-available/security.conf. Caso seu arquivo não esteja presente nesse mesmo diretório, faça uma rápida pesquisa para localizar o arquivo, através do comando find/-name security.conf -type f | grep -i apache 2>/dev/null ou consulte o manual para saber a sua exata localização.

Com o arquivo aberto, altere a a linha ServerTokens OS para ServerTokens Full, a linha ServerSignature On para ServerSignature Off e adicionar a linha SecServerSignature Server.

ETag

Etag é usado para deixar o cache mais eficiente. É um ID exclusivo gerado para um recurso da página web e não muda até o momento em que esse recurso correspondente for alterado. Isso ajuda a identificar se determinado conteúdo da URL foi alterado e assim utilizar o cache, caso não tenha alguma alteração.

O servidor da web Apache tem uma vulnerabilidade de divulgação de informações relacionada a Etags (na configuração padrão). Etag em um arquivo específico pode conter um valor i-node. Esta informação sozinha é inofensiva, mas pode levar a certos ataques quando combinada com NFS.

Utilize o mesmo arquivo para configurar para configurar o Ubanner (security.conf) e adicione FileETag None no final do arquivo. 

Directory Listing

Dos itens informados até aqui, este é o que apresenta maiores riscos, pois a listagem de diretórios (Directory Listing) é um recurso que, quando habilitado, os servidores da web listam o conteúdo de um diretório quando não há arquivo de índice presente, como index.php ou index.html. Caso tenha arquivos sensíveis como: backup, banco de dados, senhas e/ou chaves de acesso, serão entregues para um atacante.

Aqui trabalhe com o arquivo /etc/apache2/apache2.conf, simplesmente alterando Options Indexes FollowSymLinks para Options FollowSymLinks

Acesso ao git

Muitos sites e/ou aplicações web utilizam o git para realizar o versionamento de códigos. Mesmo depois de bloquear Directory Listing, é possível acessar diretamente arquivos como http://site.com.br/.git/config ou http://site.com.br/.git/HEAD, o que se torna uma vulnerabilidade alta.

Abra o arquivo /etc/apache2/conf-enabled/security.conf e adicione o seguinte conteúdo:

<DirectoryMatch “/\.git”>
Require all denied
</DirectoryMatch>

O git é só um exemplo clássico (e crítico), mas essa regra deve aplicar em todos os diretórios que possuam dados sensíveis e que não podem ser acessados pelo usuário final.

HTTP Methods

Abra o arquivo /etc/apache2/sites-available/000-default.conf e comente a linha DAV On para desabilitar os métodos PUT e DELETE. Essa alteração desativa o WebDAV (Web-based Distributed Authoring and Versioning) fornecido pelo módulo mod_dav, que é a extensão permite criar, mover, copiar e excluir arquivos.

Note que essa alteração não desativou o Método TRACE, que pode levar à divulgação de informações como cabeçalhos de autenticação de proxy. Para resolver essa questão, abra o arquivo /etc/apache2/conf-enabled/security.conf, altere TraceEnable On para TraceEnable Off.

XSS e Clickjacking


Ataques de XSS e Clickjacking são muito comuns e podem apresentar um certo risco a segurança. Isso pode ser corrigido facilmente acessando o arquivo /etc/apache2/conf-enabled/security.conf e adicionando as seguintes linhas:

Header set X-Frame-Options: “sameorigin”
Header set X-XSS-Protection “1; mode=block

Após isso, ative o módulo executando o seguinte comando no terminal: a2enmod headers.

 

Desabilitando HTTP 1.0


HTTP 1.0 é conhecido por ter uma falha de segurança relacionada ao sequestro de sessões. Portanto, deve ser desativado para proteger os usuários.

Abra o arquivo /etc/apache2/apache2.conf e na seção <Directory/var/www/>, adicione as seguintes linhas:

RewriteEngine On
RewriteCond %{THE_REQUEST} !HTTP/1.1$
RewriteRule .* – [F]

Agora basta habilitar o módulo com o comando a2enmod rewrite.

IP Whitelisting
Uma boa prática de segurança é criar uma lista de IP’s válidos para acessar uma aplicação. Sabemos que essa regra não pode ser generalizada, pois determinadas aplicações realmente precisam ser acessíveis por todos, então utilize somente se for necessário.

Abra o arquivo /etc/apache2/sites-available/000-default.conf, adicione o conteúdo abaixo, dentro da seção <VirtualHost *:80>.

<Location /<directory>>
Order deny,allow
Deny from all
Allow from <ip1>
Allow from <ip2>
Allow from <range>/24
</Location>

TLS (Transport Layer Security) v1.3.

Utilizar criptografia nas requisições se tornou algo essencial devido a quantidade de dados sensíveis que são transitados a todo momento. Os atacantes podem por exemplo, interceptar requisições através de um ataque MITM (Man-In-The-Middle) e ter acesso a credenciais de acesso a uma determinada aplicação. Imagine o que pode acontecer se você for vítima desse tipo de ataque ao acessar sua conta bancária pela aplicação web? Os bancos utilizam TLS por medidas de segurança,  mas nem todas as empresas seguem as boas práticas. Fique sempre atento.

Abra o arquivo de acordo /etc/apache2/sites-available/default-ssl.conf (crie, caso não exista) e adicione o seguinte conteúdo:

<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on

SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
# This enables optimized SSL connection renegotiation handling when SSL
# directives are used in per-directory context.
<FilesMatch “\.(cgi|shtml|phtml|php)$”>
SSLOptions +StdEnvVars
</FilesMatch>
</VirtualHost>
</IfModule>

Abra o arquivo /etc/apache2/sites-available/000-default.conf e adicione o conteúdo abaixo na raíz do nó <VirtualHost *.80>.

Redirect “/” “https://{{your_domain}}/”


Feito isso, execute os comandos abaixo para ativar os módulos de suporte ao SSL:

a2enmod ssl
a2enmod headers
a2ensite default-ssl

Com o TLS já instalado, atualize-o para a versão mais recente (atualmente é a versão 1.3). Faça isso no arquivo /etc/apache2/mods-available/ssl.conf, alterando a linha SSLProtocol all -SSLv3 (pode ser que já esteja configurada em outra versão) por SSLProtocol TLSv1.3.

Utilize o comando openssl s_client -connect {{your_domain}}:443 -tls1_3 para confirmar se surtiu efeito.

Conclusões

o Apache pode ser facilmente configurado, porem algumas das configurações sugeridas podem interferir no funcionamento correto de ferramentas de scan e gestão de vulnerabilidades, assim todo o cuidado é pouco para evitar futuros problemas. Uma aplicação web carrega dados importantes e precisamos sempre protegê-los contra qualquer tipo de ameaça. Seguindo essas boas práticas, sua segurança já terá uma melhoria. Não adianta muita coisa proteger o servidor e deixar o código da aplicação vulnerável, certo? Fora, isso, é sempre bom utilizer Ainda, além de todos os detalhes aqui trazidos, é crucial utilizar um WAF (Web Application Firewall) como uma camada extra de segurança. 

Espero que esse post tenha te ajudado com o Apache.
Até a próxima.

 

Fonte: Lucas Davis – Red-Team Consultant – Cipher. 

 

 

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

RECEBA NOSSAS NOTÍCIAS!

Information Security Maturity Self-Assessment Survey

Saiba mais

•  Whitepapers
•  E-books
•  Checklists
•  Self-Assessments
•  Webcasts
•  Infographics