Mudanças entre as edições de "Configuração de servidor web"
(14 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) == | ||
Linha 47: | Linha 66: | ||
# mkdir /etc/apache2/ssl/ | # 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 700 /etc/apache2/ssl/ | ||
− | # chmod 600 /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 | + | Editar o arquivo padrão /etc/apache2/sites-available/default-ssl.conf |
<IfModule mod_ssl.c> | <IfModule mod_ssl.c> | ||
Linha 68: | 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/ | + | SSLCertificateFile /etc/apache2/ssl/certificado_icpedu.crt |
− | SSLCertificateKeyFile /etc/apache2/ssl/ | + | 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 81: | Linha 107: | ||
# a2enmod ssl | # a2enmod ssl | ||
− | # a2ensite default-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 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 105: | Linha 134: | ||
Ou uma ferramenta online: | Ou uma ferramenta online: | ||
− | https://www. | + | https://www.expeditedssl.com/varonis_poodle/ |
− | + | ||
− | + | ||
== Permissões em pastas e arquivos == | == Permissões em pastas e arquivos == | ||
Linha 121: | 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
Índice
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