Configuração de servidor web

De IFRS Campus Canoas
Ir para: navegação, pesquisa

Instalar o apache e php5

# apt-get install apache2 php5 -y

Instalar dependências comuns, irá depender da aplicação hospedada: (Opcional)

# apt-get install php5-ldap php5-gd php5-mysql php5-pgsql

Ajustar o arquivo /etc/php5/apache2/php.ini

date.timezone = America/Sao_Paulo

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>

Módulo Userdir

Executar o comando:

a2enmod rewrite

Para habilitar o PHP nos diretórios do usuário é necessário editar o arquivo /etc/apache2/mods-available/php5.conf e comentar as linhas destacadas:

# Running PHP scripts in user directories is disabled by default
# 
# To re-enable PHP in user directories comment the following lines
# (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
# prevents .htaccess files from disabling it.
#<IfModule mod_userdir.c>
#    <Directory /home/*/public_html>
#        php_admin_flag engine Off
#    </Directory>
#</IfModule>

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/*
# chown 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

(não é necessário no debian jessie)

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

Referências

https://wiki.rnp.br/pages/viewpage.action?pageId=86102856