Mudanças entre as edições de "Configuração de servidor web"

De IFRS Campus Canoas
Ir para: navegação, pesquisa
 
 
(15 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
 
== Instalar o apache e php5 ==
 
== Instalar o apache e php5 ==
  
  # apt-get install apache2 php5
+
  # apt-get install apache2 php5 -y
  
 
Instalar dependências comuns, irá depender da aplicação hospedada: (Opcional)
 
Instalar dependências comuns, irá depender da aplicação hospedada: (Opcional)
  
 
  # apt-get install php5-ldap php5-gd php5-mysql php5-pgsql
 
  # 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 ==
 
== Dicas de segurança ==
Linha 15: Linha 19:
 
  ServerSignature Off
 
  ServerSignature Off
  
Alterar /etc/apache2/sites-enabled/000-default relacionado ao virtualHost padrão do apache.
+
Alterar /etc/apache2/sites-enabled/000-default.conf relacionado ao virtualHost padrão do apache.
  
 
Arquivo de exemplo:
 
Arquivo de exemplo:
Linha 41: Linha 45:
 
         CustomLog ${APACHE_LOG_DIR}/access.log combined
 
         CustomLog ${APACHE_LOG_DIR}/access.log combined
 
  </VirtualHost>
 
  </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) ==
 
== Acesso via HTTPS (SSL) ==
  
Editar o arquivo padrão /etc/apache2/sites-available/default-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>
 
  <IfModule mod_ssl.c>
Linha 60: Linha 92:
 
         LogLevel warn
 
         LogLevel warn
 
         CustomLog ${APACHE_LOG_DIR}/access.log combined
 
         CustomLog ${APACHE_LOG_DIR}/access.log combined
         SSLEngine on
+
         '''SSLEngine on
         SSLCertificateFile    /etc/apache2/ssl/geral.crt                # Gerar certificados via Cacert.org ou auto-assinado,
+
         SSLCertificateFile    /etc/apache2/ssl/certificado_icpedu.crt                 
         SSLCertificateKeyFile /etc/apache2/ssl/geral.key.insecure      # referência: http://www.vivaolinux.com.br/artigo/Configuracao-do-SSL-no-Apache
+
         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]" \
 
         BrowserMatch "MSIE [2-6]" \
 
                 nokeepalive ssl-unclean-shutdown \
 
                 nokeepalive ssl-unclean-shutdown \
Linha 73: Linha 107:
  
 
  # a2enmod ssl
 
  # a2enmod ssl
  # a2ensite default-ssl
+
  # a2ensite default-ssl.conf
 +
 
 +
=== Prevenindo contra Poodle Ataque ===
 +
 
 +
''(não é necessário no debian jessie)''
  
=== Prevenindo contra Poodle Ataque ===
 
 
A falha está relacionada ao protocolo SSL 3.0.
 
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.
 
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.
Linha 97: Linha 134:
  
 
Ou uma ferramenta online:
 
Ou uma ferramenta online:
  https://www.poodlescan.com/
+
  https://www.expeditedssl.com/varonis_poodle/
 
+
 
+
  
 
== Permissões em pastas e arquivos ==
 
== Permissões em pastas e arquivos ==
Linha 113: Linha 148:
 
  tail -f /var/log/apache2/access.log
 
  tail -f /var/log/apache2/access.log
 
  tail -f /var/log/apache2/error.log
 
  tail -f /var/log/apache2/error.log
 +
=Referências=
 +
https://wiki.rnp.br/pages/viewpage.action?pageId=86102856

Edição atual tal como às 15h27min de 29 de junho de 2017

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