BOMBOLOM.COM

(http) Dicas sobre segurança Apache

O mais importante a termos em conta, quando se trata de segurança de qualquer sistema é mantermos tanto quanto possível actualizados todos os pacotes de software que utilizamos.

Posto isto, temos também de ter em conta que existem alguns processos que nos permitem ter os sistemas configurados de forma mais segura, ou que de outra forma dificultam o trabalho daqueles que querem entrar nos nossos sistemas.

Em relação ao Apache convém consultar as Security Tips.

Além do sugerido nas dicas sobre segurança do Apache também costumo fazer o seguinte em servidores em produção:

Retirar a identificação do servidor

Em várias situações, o Apache devolve uma string com a identificação do servidor, por exemplo quando gera um erro:

Not Found
The requested URL /teste/ was not found on this server.
Apache/2.2.3 (Debian) PHP/4.4.4-8+etch4 mod_ssl/2.2.3 OpenSSL/0.9.8c Server at example.com Port 80

A quantidade de informação presente na assinatura do servidor é definida pela variável de configuração ServerTokens. Normalmente defino esta variável como:

ServerTokens Prod

Neste caso a informação devolvida é:

Not Found
The requested URL /teste/ was not found on this server.
Apache Server at example.com Port 80

Se quisermos desligar completamente esta configuração, podemos usar a variável ServerSignature:

ServerSignature Off

Neste caso a resposta do servidor seria apenas:

Not Found
The requested URL /teste/ was not found on this server.

Nos sistemas Debian basta modificar os valores destas variáveis em /etc/apache2/apache2.conf e re-iniciar o servidor com:

# /etc/init.d/apache2 restart

ATENÇÃO: nos sistemas SuSE estas configurações são feitas no ficheiro /etc/sysconfig/apache2 (que não faz parte da distribuição standard do Apache). Temos que neste ficheiro mudar a variável:

APACHE_SERVERTOKENS="Prod"

e/ou:

APACHE_SERVERSIGNATURE="Off"

Depois basta reiniciar o servidor com:

# rcapache2 restart

Ao reiniciar o apache, vão ser gerados os ficheiros de configuração que residem na directoria /etc/apache2/sysconfig.d. Um desses ficheiros, global.conf, vai conter as variáveis que discutimos antes.

Desligar a listagem de directorias

Outro procedimento que costumo fazer, é desligar a possibilidade que o Apache tem de listar o conteúdo de directorias que não têm um index.html.

Isto pode-se fazer de duas formas. Podemos em cada directoria que temos configurada usar a directiva de configuração "Options -Indexes". isto faz sentido se quisermos ter uma directoria que usa a funcionalidade do Apache para mostrar o respectivo conteúdo.

Por exemplo, na nossa definição de host virtual podemos ter:

<Directory "/arquivo/www/example.com/htdocs">
    Options -Indexes FollowSymLinks Includes
    # Config do htaccess
    AllowOverride All
    # Geral
    Order allow,deny
    Allow from all
</Directory>

E definir uma outra directoria onde temos esta funcionalidade activada:

Alias /downloads /arquivo/www/example.com/downloads
<Directory "/arquivo/www/example.com/downloads">
    Options Indexes
    # Config do htaccess
    AllowOverride All
    # Geral
    Order allow,deny
    Allow from all
</Directory>

A outra forma de desligarmos a listagem de directorias consiste simplesmente em desactivar o módulo responsável por esta funcionalidade. O módulo em causa é o autoindex.

No Debian apenas temos de fazer:

# a2dismod autoindex

E reiniciar o servidor Apache:

# /etc/init.d/apache2 restart

No SuSE temos de editar o ficheiro /etc/sysconfig/apache2 e remover "autoindex" da variável APACHE_MODULES e reiniciar o Apache como se mostrou antes.

Módulos desnecessários

Utilizando o comando apache2ctl podemos consultar vários parâmetros da configuração do Apache. A partir da versão 2.2 do Apache, podemos ver quais os módulos que estão carregados:

# apache2ctl -t -D DUMP_MODULES
Loaded Modules:
 core_module (static)
 log_config_module (static)
[snip ...]
 logio_module (static)
 ssl_module (shared)
 status_module (shared)
Syntax OK

Todos os módulos que não são utilizados devem ser removidos da configuração, quer por motivos de segurança, quer por motivos de performance. A técnica aplicada para os remover é igual à que se mostrou para o módulo "autoindex".

Um dos módulos que costumo sempre remover é o userdir que permite aos utilizadores terem uma página pessoal por baixo da sua home directory, numa directoria pré-definida (normalmente ~/public_html). Não gosto de ter isto ligado porque os utilizadores têm tendência a colocar nessa directoria documentos sensíveis, quando descobre que podem a eles aceder remotamente...

05.10.2007 | Ler mais | Comentários | Tags , ,

Voltar à Página principal | Made with PyBlosxom