Configuração de servidor web
Índice
Instalar o apache e php5
# apt-get install apache2 php5
Instalar dependências comuns, irá depender da aplicação hospedada: (Opcional)
# apt-get install php5-ldap php5-gd php5-mysql php5-pgsql
Dicas de segurança
Editar o arquivo /etc/apache2/conf.d/security e alterar as linhas para:
ServerTokens Prod ServerSignature Off
Alterar /etc/apache2/sites-enabled/000-default.conf relacionado ao virtualHost padrão do apache.
Arquivo de exemplo:
<VirtualHost *:80> ServerAdmin email@canoas.ifrs.edu.br ServerName exemplo.canoas.ifrs.edu.br DocumentRoot /var/www <Directory /> Options -Indexes AllowOverride None Order allow,deny allow from all </Directory> # IMPORTANTE! Apagar ou comentar as linhas abaixo caso a aplicação não use cgi. # ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ # <Directory "/usr/lib/cgi-bin"> # AllowOverride None # Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch # Order allow,deny # Allow from all # </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Acesso via HTTPS (SSL)
Criar a pasta para armazenar os certificados:
# mkdir /etc/apache2/ssl/
Realizar o download do certificado raiz e intermediário AC SSL Corporativa da ICPEdu e copiar para a pasta ssl:
http://www.rnp.br/servicos/servicos-avancados/icpedu
Baixar os certificados enviados pela Reitoria e copiar para a pasta ssl;
Proteger a pasta ssl e certificados ICPEdu:
# chmod 700 /etc/apache2/ssl/ # chmod 600 /etc/apache2/ssl/* # chwon root:root -R /etc/apache2/ssl/
Editar o arquivo padrão /etc/apache2/sites-available/default-ssl.conf
<IfModule mod_ssl.c> <VirtualHost _default_:443> ServerAdmin email@canoas.ifrs.edu.br ServerName exemplo.canoas.ifrs.edu.br DocumentRoot /var/www <Directory /> Options -Indexes AllowOverride None Order allow,deny allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined SSLEngine on SSLCertificateFile /etc/apache2/ssl/certificado_icpedu.crt SSLCertificateKeyFile /etc/apache2/ssl/chave_icpedu.key.npw SSLCACertificateFile /etc/apache2/ssl/gs_root.pem SSLCertificateChainFile /etc/apache2/ssl/intermediate.pem BrowserMatch "MSIE [2-6]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 # MSIE 7 and newer should be able to use keepalive BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown </VirtualHost>
Habilitar módulo SSL e o virtualHost padrão com SSL:
# a2enmod ssl # a2ensite default-ssl.conf
Prevenindo contra Poodle Ataque
A falha está relacionada ao protocolo SSL 3.0. A vulnerabilidade permite que um usuário malicioso consiga interceptar conexões seguras entre clientes e servidores e forçá-los a utilizar SSL 3.0 que pode, então, ser decifrada.
Altere o arquivo /etc/apache2/mods-available/ssl.conf com SSLProtocol para:
# SSLProtocol all -SSLv2 -SSLv3
Recarregar as configurações:
# invoke-rc.d apache2 reload
Testar:
# openssl s_client -connect nomeservidor.canoas.ifrs.edu.br:443 -ssl3
Deve retornar algo como:
CONNECTED(00000003) 12721:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:s3_pkt.c:1099:SSL alert number 40 12721:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:s3_pkt.c:536:
Se retorno for um certificado, o protocolo SSLv3 ainda esta ativo.
Ou uma ferramenta online:
https://www.expeditedssl.com/varonis_poodle/
Permissões em pastas e arquivos
# chown -R www-data:www-data /var/www/ # find /var/www/ -type d -exec chmod -R 755 {} \; # find /var/www/ -type f -exec chmod -R 644 {} \;
Se a aplicação possui um arquivo de configuração restringir o acesso:
# chmod 640 config.php
Logs
tail -f /var/log/apache2/access.log tail -f /var/log/apache2/error.log