Hardening do Apache2 com PHP5 no Debian
22 de Outubro de 2009, 0:00 - sem comentários aindaComo muitos já sabem, os serviços recém instalados, seja pelo source ou gerenciador de repositórios devem sofrer modificações em seus arquivos de configuração, pois muitos de seus parâmetros visam ser o suficiente para o serviço sejam executado de maneira rápida, porém sem muito cuidado com a segurança das informações.
O Debian disponibiliza os pacotes em seu repositórios com algumas configurações que seguem as boas práticas de segurança, porém ainda existem configurações que precisam ser ajustadas. Como é o caso do Apache2 e PHP5 que falaremos nesse post.
Nesse texto iremos apresentar quais os parâmetros devem ser modificados. Seguindo alguns documentos de boas práticas encontrados em buscas pela internet. Não se preocupem, verifiquei cada informação na documentação oficial do Apache e php.
O debian utilizado foi a versão 5, também conhecido como lenny.
Levaremos em consideração, que tudo que não for utilizado deve ser, na medida do possível, removido ou desabilitado.
Vamos começar pelo arquivo /etc/apache2/conf/security
Os parâmetros abaixo descrevem qual o nível de informação será passado pelo Apache para os clientes.
ServerTokens All
ServerSignature On
Modifique para:
ServerTokens Prod
ServerSignature Off
O parâmetro abaixo é apenas utilizado para teste e diagnósticos:
TraceEnable On
Modifique para:
TraceEnable Off
Agora vamos verificar o arquivo /etc/apache2/sites-enable/000-default
O diretório raiz das páginas devem ter a diretriz padrão de bloquear o acesso para todos, ou seja, apenas será exibido aquilo que for estritamente liberado em uma configuração de sites/domínio virtual específico.
Modifique os parâmetros:
Order allow,deny
allow from all
para
Order deny,allow
deny from all
É necessário verificar se não existe o com a permissão allow from all. Nesse caso é necessário remover essa permissão.
Agora vamos a configuração segura do php, no arquivo /etc/php5/apache2/php.ini
Modifique os parâmetros:
Os parâmetros abaixo são referente a informações que não devem aparecer no navegador e somente nos logs da máquina:
display_errors = On
log_errors = Off
Para:
display_errors = Off
log_errors = On
Os parâmetros abaixo são referentes a segurança no serviço php, pois execução da função fopen é bastante usada no scripts que fornecem shell ou roube de informação e a função exec deve ser configurada para apenas um diretório com permissão de modificação apenas para o root, ou seja, o usuário do apache não conseguirá gravar nada nesse diretório sem o intermédio do administrador:
safe_mode = Off
allow_url_fopen = On
safe_mode_exec_dir =
Para
safe_mode = On
allow_url_fopen = Off
safe_mode_exec_dir = "/var/exec"
Não esqueça de executar os comandos abaixo para criar e configurar a permissão correta da pasta:
# mkdir /var/exec
# chmod 755 /var/exec
Caso as aplicações que estarão em seu servidor apache não precisem efetuar uploads de arquivos, é interessante que essa função seja desabilitada:
Mude o parâmetro:
file_uploads = On
Para
file_uploads = Off
Agora vamos configurar as permissões do apache, seguindo a diretiva do mínimo de privilégio necessário:
# chmod 511 /usr/sbin/apache2
# chmod -R 750 /var/log/apache2/
# chmod -R 750 /etc/apache2
# chmod -R 650 /etc/apache2/conf.d
# chown -R :www-data /etc/apache2
Por fim, porém não menos importante, vamos remover os módulos não utilizados pelo seu apache:
Com o comando abaixo poderemos visualizar todos os módulos do apache:
# ls -la /etc/apache2/mods-enabled
Essa escolha é bem particular e depende muito das aplicações que estão alocadas nesse servidor, no meu caso os módulos abaixo foram escolhidos:
authn_file
authz_default
authz_groupfile
authz_user
deflate
Para desabilitar o módulo apenas remova o arquivo correspondente ao módulo escolhido na pasta citada acima.
Para reativar o módulo, caso descubra que o mesmo é necessário digite o comando abaixo:
# a2enmod
Pronto! Essas são toda as minhas recomendações de segurança para o Apache 2 e PHP 5.
Divulgue o CESOL 2009
17 de Outubro de 2009, 0:00 - sem comentários aindaGalera, o CESoL (Congresso Estadual de Software Livre) se aproxima e
precisa da sua ajuda para a divulgação...
Esse ano a Organização do Congresso adotou o método de Divulgação de
Páginas Amigas, que já é utilizado pelo FISL, ENSL, ENECOMP e muitos
outros congressos de Software Livre pelo país...
Para quem não conhece, esse método é o seguinte: Você coloca um banner
de divulgação do CESoL no seu Blog, Página, Portal, Planeta, enfim...
No seu espaço na Web e isso ajuda na divulgação do evento.
Feito isso você envia o seu banner de 120x50 pixels e fica na página
do páginas amigas...
Enfim, para mais detalhes é interessante visitar o site do páginas
amigas[1]... O material para divulgação pela web (banners[2]) também
estão disponíveis em tamanhos variáveis, escolham o que melhor se
adaptar ao local onde colocarão, caso seja necessário (e vocês gostem
de mexer com isso) vocês podem personalizar as cores para combinar
mais com o designer de vocês... Particularmente eu coloquei o que já
estava lá, até porque gostei muito do banner...
Bem, é isso aí... Esse pequeno gesto ajuda MUITO na divulgação do
congresso. Muitas pessoas as vezes querem ajudar de alguma maneira e
não sabem como, essa é uma das maneiras de ajudar... Propaganda boca a
boca também é muito bem vinda... Encaminhem aos amigos que podem
ajudar também! A galera está como sempre correndo para poder fazer um
ótimo evento...
Qualquer dúvida vocês podem tirar pelo email: cesol@cesol.org