Apache e gerenciamento de acesso

A nação apache foi um grupo de diversas tribos indígenas que habitaram onde hoje são os EUA e que lutaram bravamente e com muita estratégia contra seus dominadores em um grande episódio de genocídio causado pelos norte americanos. Isso pode se considerar uma inspiração para o nome do servidor HTTP Apache, todo feito em software livre e que resiste aos ataques de interesses corporativos. O HTTP (Hypertext Transfer Protocol, ou Protocolo de Transferência de Hipertexto) é a base para comunicação da World Wide Web (ou simplesmente WEB, que é um conjunto de documentos de hipermídia que são interligados e executados através da internet).

O pacote apache2 é uma concha vazia, que serve apenas para para garantir que uma das versões do Apache seja realmente instalada – por exemplo, o libapache2-mod-php5, que permite suporte a PHP. O Apache é um servidor modular, e muitos recursos são implementados através de módulos externos que o programa principal carrega durante sua inicialização – por exemplo, habilitar o módulo SSL através do comando “a2enmod ssl”. Por padrão, o Apache lida com as requisições de entrada sob a identidade de usuário www-data, utiliza a porta 80 (como configurado em /etc/apache2/ports.conf) ou a porta 443 (SSL) e serve páginas a partir do diretório /var/www/ (como configurado em /etc/apache2/sites-enabled/000-default).

Cada host virtual (identidade adicional para o servidor web) é descrito por um arquivo armazenado em /etc/apache2/sites-available/. Ele contém o nome do host (“ServerName monolitonimbus.com.br”, por exemplo) e alguns alias (“ServerAlias www.monolitonimbus.com.br comissarionerd.com.br www.comissarionerd.com.br”), além da pasta raiz dos arquivos da página (“DocumentRoot /var/www”). No mesmo nível, o diretório “sites-enabled” contém links para os arquivos de configuração do “sites-available”, criados como “ln -s /etc/apache2/sites-available/www.monolitonimbus.com.br www.monolitonimbus.com.br”, por exemplo.

Tanto o arquivo de configuração principal (dentro de “sites-available”) como os específicos de cada diretório (“.htaccess”, geralmente usado pelo usuário que não tem acesso root) incluem vários blocos Directory. Eles permitem especificar diferentes comportamentos para o servidor dependendo da localização do arquivo que está sendo servido. Um bloco desse tipo comumente inclui as diretivas Options e AllowOverride, que lista todas as opções que podem ser habilitadas ou desabilitadas pelo arquivo .htaccess. As diretivas “Allow from” e “Deny from” controlam as restrições de acesso em um diretório (e seus sub-diretórios, recursivamente). Maiores detalhes podem ser vistos na documentação do Debian sobre o Apache.

Gerenciamento de permissões

Uma das aplicações disponíveis no Apache é o gerenciamento de permissões a acesso de diretórios do servidor (inclusive com utilização de usuário e senha), conforme segue no tutorial abaixo (mais informações na documentação do Apache):

  1. Para criar o arquivo contendo usuários e senhas pela primeira vez, execute o comando a seguir:
  2. Você deverá informar sua senha (duas vezes) e aparecerá na tela “Adding password for user nome_do_usuario”
  3. Para incluir novos usuários, é a mesma coisa, exceto que não precisa mais do parâmetro “-c”
  4. Editar o arquivo de configurações do apache relacionado com o site:
  5. Incluir as seguintes configurações:
  6. Reiniciar o apache:

Se quiser proteger somente um arquivo por senha, substitua a tag do passo 5 por (o resto do conteúdo fica com o mesmo padrão):

Para atualizar a senha do usuário, basta executar o comando “htpasswd /caminho/arquivo_com_senhas.conf nome_do_usuario” como super usuário.

Caso queira utilizar um sistema de login via PHP (Quadodo, por exemplo) para criar uma senha automaticamente para um usuário que está se cadastrando, utilize o seguinte código na sua página de cadastro:

Nesse caso, não esqueça de dar permissão de leitura e escrita para o arquivo através do comando chmod. Para verificar eventuais erros no processamento de PHP no Apache, veja o arquivo “error.log” na pasta “/var/log/apache2”

Caso queira apagar linhas do arquivo com usuário e senha utilizado pelo apache, utilize:

onde ‘n’ é o número da linha a ser apagada, e para apagar uma linha do mysql, utilize:

Personalização de páginas de erro

O HTTP é o protocolo responsável por fazer a comunicação entre o cliente e o servidor. A cada “solicitação” feita, o HTTP responde exibindo um códigos de resposta, que mostram o status do HTTP:

  • 1XX – Informativa
  • 2XX – Sucesso
  • 3XX – Redirecionamento
  • 4XX – Erro do cliente
  • 5XX – Erro do servidor

Uma lista mais completa pode ser vista no link.

O erro 503 indica Serviço indisponível (Service Unavailable), ou seja, o servidor está em manutenção ou não consegue dar conta dos processamentos de recursos devido à sobrecarga do sistema. Para personalizar a página exibida, crie a página “manutencao.html” e insira a primeira linha do código abaixo no arquivo “/etc/apache2/sites-available/www.seusite.com.br”, logo abaixo da tag “Directory”:

A segunda linha é específica para redirecionar todo o conteúdo de “diretorio_bloqueado”, recursivamente, para apresentar o erro 503 – para o usuário, ao acessar qualquer arquivo nesse nível ou abaixo, será exibida a página definida na linha acima.