1. http://olinux.uol.com.br/artigos/250/print_preview.html
Segurança básica do Apache
Por: Elias Barenboim ( 23/12/2000 )
Instalação
Quebraremos um pouco a sequência para amenizarmos o clima e pegar algo um pouco mais específico:
segurança básica do Apache.
Primeiramente, vamos instalar o apache. Todas distribuições vem com ele, só que vale a pena baixar a última
versão, por questões de segurança e performace. Na Debian:
apt-get update; apt-get install apache
Redhat, vá na página da Redhat, procure pelo último rpm, baixe e:
rpm -i apache_versao. 1 .rpm
Para maior entendimento sobre o assunto, como outras opções de instalação ou dúvidas relacionadas a tais,
leia nosso artigo de introdução sobre isso. Também uma referência interessante, como não podia deixar de
ser, é o próprio site do Apache .
Arrumando os detalhes
Os arquivos básicos de configuração são, access.conf, httpd.conf, srm.conf e encontram-se em /etc/apache/,
isso na Debian.
Uma das mais importantes configurações é o usuário/grupo que rodará o servidor. É escolhido em geral o
usuário chamado www-data, e restringe-se bastante o acesso a este. Ou seja, só quem realmente necessita
ter acesso a ele o utiliza, além dele só ter acesso as áreas estritamente relacionadas as suas tarefas web.
Deve-se dar uma checada em User/Group no httpd.conf. Lá deve ser indicado corretamente o usuário/grupo
(isso vem por padrão). Todos arquivos de configurações são comentados, ou seja, vale a pena você dar uma
lida.
Um pouco antes disso, só que importante por questões tanto de velocidade quanto segurança, tem-se
HostnameLookups. É recomendável que se deixe isto desligado, com a opção off . Ele não tentará resolver
todos os nomes que requisitam uma página no site, evitando possíveis ataques massivos relativos a esses
recursos.
Deve-se preencher corretamente o campo ServerAdmin, em geral com o responsável pela manunteção do
site/equipe de suporte. Isso deve ser feito pois quando houver algum problema no site, será reportado para
tal. Ou seja, crie uma alias com essas características ou use um pronto (já falamos sobre a responsabilidade
em cima de uma só pessoa que deve ser evitado, em artigos passados ).
A opção ServerRoot indica qual diretório deve-se conter os arquivos de configurações do servidor. Em geral,
na debian vem como /etc/apache. Detalhe, se estiver usando NFS (ou algum outro tipo de compartilhamento
de arquivos), dê uma olhada na documentação relativa ao assunto, podem acontecer problemas futuros.
Agora no srm.conf, temos DocumentRoot, que diz qual a "raiz" de seu servidor. Todas as requisições
começarão por ele. Links são permitidos, só que deve-se tomar cuidado com eles. Veja as diretivas UserDir,
DirectoryIndex também, para ir se familiarizando com o servidor.
Entedendo um pouco mais os diretórios
Por padrão, o apache vem com indexação automática de diretórios (opção IndexOptions). Isso significa que
se não houver um arquivo de index, como o index.html por padrão, ele listará o conteúdo do diretório.
Tirando algumas excessões específicas, isso é uma falha de segurança (não tem utilidade você deixar alguém
ver conteúdo de um diretório, eu disse com excessões). Tire a permissão de leitura de tal (do diretório): use
o comando chmod 411. Quando uma tentativa for efetivada, quem tentar acessar receberá a mensagem de
1 de 2 06-12-2009 12:40
2. http://olinux.uol.com.br/artigos/250/print_preview.html
"Forbidden".
Uma diretiva para ocultar arquivos, chama-se IndexIgnore (no src.conf). Você pode utilizar coringas a
vontade, por exemplo, poderiamos ter: IndexIgnore *jpg *htaccess*, por exemplo.
A diretiva Alias (access.conf) , permite que se "mapeie" outros diretórios, por exemplo, eu boto Alias /scripts
/var/scripts/sitex2/, quando eu tentar acessar o /scripts, ele cairá diretamente no diretório que eu determinei.
Às vezes, servidores grandes, tende-se a espalhar aliases para todos os lados, o que não é bom, pois
descentraliza-se o local de administração e torna-se cada vez mais inviável o controle de acesso e
funcionalidades de cada localização.
Áreas Reservadas
Uma opção muito utilizada nos servidores são áreas reservadas de usuários. Isso é feito através dos arquivos
.htaccess (você determina o nome dele, caso queira mudar, em AccessFileName no srm.conf).
Exemplificando:
<<html>Directory /var/www/area_administrativa>
require user zeca
AuthType Basic
AuthName "Acesso administrativo"
AuthUserFile /var/www/senhas
<<html>/Directory>
Troque pelos nomes que forem convenientes, zeca é um nome genérico (para por vários nomes separe por
espaço). Depois vem tipo de autenticação básica, aí AuthName é um label qualquer que aparecerá no box
quando você tentar acessar tal área, e AuthUserFile é o arquivo de senhas, onde ele irá procurar por ela na
hora de checar.
Vale ressaltar que você pode omitir as diretivas "Directory" e botar somente o conteúdo no diretório desejado
(arquivo .htaccess). Isso existe para que cada usuário possa controlar acesso ao seu home (lembre-se, os
arquivos de configuração do servidor só o administrador, você, deve ter acesso).
Para criar senhas, você deve utilizar o programa htpasswd (vem com apache), por exemplo, htpasswd -c
/var/www/senhas zeca, e digitar a senha do zeca. A opção -c só é usada a primeira vez que for utilizado
(para criar o arquivo), posteriormente deve ser omitida. Pode-se autenticar via banco de dados, senhas reais
do sistema, pam (foge ao tema explicar como isso funciona agora, mas procure a documentação).
Deve-se setar diretórios específicos para execução de scripts, por exemplo, ScriptAlias /cgi-bin/ /usr/lib
/cgi-bin/, o que já vem por padrão na maioria dos lugares. Vale ressaltar que as permissões dos diretórios de
scripts devem ser bem testadas, e os próprios scripts também, pois são as maiores fontes de problemas de
um servidor bem configurado (cuidado também com scripts de terceiros, pior ainda).
Uma opção que tem se tornado bem popular nos servidores de hoje em dia, com conteúdo dinâmico, é o
chamado Server Side Include (SSI). Você deve associar sua extensão e dizer o que ela é, por exemplo:
AddType text/html .shtml AddHandler server-parsed .shtml
(server-parsed é que o servidor faz o parser). Para limitar essa opção genérica para o servidor, deve-se usar
as diretivas
<<html>Location> e <<html>Directory>.
Bem, é isso, falamos um pouco de configuração do apache e segurança básica, espero que tenham gostado.
Copyright (C) 1999-2000 Linux Solutions
2 de 2 06-12-2009 12:40