Servidores Web - Apache
Short Description
Download Servidores Web - Apache...
Description
SUMÁRIO 1. INTRODUÇÃO AOS SERVIÇOS WEB ..................................................... 2 2. INSTALANDO O APACHE ....................................................................... 2 3. ENTENDENDO A ORGANIZAÇÃO DOS ARQUIVOS .............................. 3 4. NO DEBIAN E DERIVADOS .................................................................... 4 5. INSTALANDO O SUPORTE A PHP .......................................................... 5 6. INSTALANDO O MYSQL ......................................................................... 7 7. INSTALANDO O PHPMYADMIN ............................................................ 8 8. ATIVANDO O SSL ................................................................................. 10 9. USANDO UM CERTIFICADO SELF-SIGNED ........................................ 11 10. USANDO UM CERTIFICADO RECONHECIDO ..................................... 12 11. VIRTUAL HOSTS .................................................................................. 14 12. INSTALANDO UM SERVIDOR FTP ....................................................... 15 13. FTP + TLS .............................................................................................. 17 14. GERANDO ESTATÍSTICAS ................................................................... 19 15. GESTORES DE CONTEÚDO .................................................................. 20 16. GESTORES DE CONTEÚDO: PHPBB .................................................... 20 17. SOLUCIONANDO PROBLEMAS COM O CHARSET ............................. 23 18. MÓDULOS DO APACHE ....................................................................... 24 19. USANDO QUOTAS DE DISCO ............................................................... 25 20. CONFIGURANDO O QUOTA ................................................................. 25 21. BIBLIOGRAFIA ..................................................................................... 27
1. Introdução aos serviços web Os servidores web são a espinha dorsal da Internet, são eles que hospedam todas as páginas, incluindo os mecanismos de busca e servem como base para todo tipo de aplicativo via web, incluindo os webmails. No futuro, esta tendência deve se acentuar, com páginas web dinâmicas e aplicativos via web substituindo cada vez mais os aplicativos desktop. Nos primórdios da internet, eram utilizadas apenas páginas html estáticas e scripts CGI. O Apache em si continua oferecendo suporte apenas a esses recursos básicos, mas ele pode ser expandido através de módulos, passando a suportar scripts em PHP, acessar bancos de dados MySQL, entre inúmeros outros recursos. Sempre que é solicitada uma página em PHP ou outra linguagem, entra em ação o módulo apropriado, que faz o processamento processamento necessário e devolve ao Apache a página html que será exibida. Entram em ação, então, os gestores de conteúdo e fóruns, que combinam os recursos do PHP com um banco de dados como o MySQL, acessado através dele. A combinação de tudo isso forma a solução que é popularmente chamada de "LAMP" (Linux + Apache + MySQL + PHP). O Apache e o MySQL, juntamente com o suporte a PHP podem ser também instalados sobre o Windows (formando o "WAMP"), uma solução relativamente popular entre administradores Microsoft que não se sentem à vontade em usar o IIS.
2. Instalando o Apache O Apache pode ser dividido em duas grandes famílias: o Apache 2.x e o Apache 1.3 que, apesar de muito antigo, ainda é usado em muitos servidores. O Apache 2 trouxe muitas vantagens, sobretudo do ponto de vista do desempenho, além de oferecer novos módulos e mais opções de segurança, mas sua adoção foi retardada nos primeiros anos por um detalhe muito simples: o fato de ele ser incompatível com os módulos compilados para o Apache 1.3. Como os módulos são a alma do servidor web, muitos administradores ficavam amarrados ao Apache 1.3 devido à falta de disponibilidade de alguns módulos específicos para o Apache 2. Ao instalar o Apache 2, o suporte a SSL é instalado automaticamente junto com o pacote principal (mas ainda é preciso ativá-lo na configuração, como veremos a seguir). 2
Instale também o pacote apache2-utils, que contém diversos utilitários de gerenciamento que usaremos a seguir:
# apt-get install apache2 apache2-utils Se desejar ativar o suporte a páginas seguras, você vai precisar também do pacote "sslcert", necessário para ativar o suporte a SSL e gerar os certificados. Ele não é instalado por padrão ao fazer uma instalação enxuta do Debian ou do Ubuntu:
# apt-get install ssl-cert Se você estiver utilizando o CentOS ou o Fedora, instale o pacote "httpd", que contém o Apache 2 e os utilitários:
# yum install httpd Diferente do Debian, o serviço não será configurado para ser ativado no boot por padrão e nem mesmo inicializado automaticamente após a instalação. Para ativá-lo, é necessário ativar o serviço e, em seguida, criar os links para início automático usando o
chkconfig # service httpd start # chkconfig httpd on Seguindo os nomes dos pacotes, no Debian o serviço se chama "apache2", enquanto no Fedora e no CentOS ele se chama "httpd". Para reiniciar o servidor você usa, respectivamente, os comandos "/etc/init.d/apache2 restart" e "service httpd restart". Acessando o endereço "http://127.0.0.1", você verá uma página de boas-vindas, que indica que o servidor está funcionando. Se não houver nenhum firewall no caminho, ele já estará acessível a partir de outros micros da rede local ou da internet.
3. Entendendo a organização dos arquivos A principal característica do Apache é a modularidade. Ao invés de ser um aplicativo grande e complexo, que tenta desempenhar sozinho todas as funções, o Apache se limita a executar uma única tarefa: entregar páginas html e outros tipos de arquivos aos clientes. Qualquer outra coisa é invariavelmente feita por um módulo externo. 3
Por exemplo, quando você acessa uma página em PHP em um site que roda sobre um servidor Apache, ele (Apache) lê o arquivo no disco e repassa a requisição para o mod_php, o módulo encarregado de processar arquivos PHP. Ele, por sua vez, aciona o interpretador PHP, que processa a página e a entrega, já processada, ao Apache, que, finalmente, a entrega ao cliente. Caso seja necessário acessar um banco de dados (como no caso de um fórum ou de um gestor de conteúdo), entra em ação outro módulo, como o php5-mysql, que permite ao interpretador PHP acessar o banco de dados: Pode parecer estranho que depois de toda essa volta o Apache ainda consiga entregar a página processada em tempo hábil, mas é justamente essa divisão de tarefas que permite ao Apache ser tão rápido e seguro. O trabalho é dividido em várias partes e cada módulo é mantido separadamente por uma equipe que entende do assunto e zela pelo desempenho e confiabilidade do código. Graças a isso, é bastante raro que sejam descobertos problemas graves de segurança no Apache ou no interpretador PHP, por exemplo. Quase sempre, os problemas de segurança não estão no servidor Web em si, mas sim no gestor de conteúdo (phpNuke, Xoops, phpBB, etc.) usado.
4. No Debian e derivados Nas distribuições derivadas do Debian, a arquitetura modular do Apache é extendida também aos arquivos de configuração. Tradicionalmente, a configuração do Apache é centralizada em um único arquivo, o "httpd.conf", que pode opcionalmente incluir referências a arquivos externos (includes) que permitem segmentar e organizar a configuração. Aproveitando esta possibilidade, a equipe do Debian desenvolveu uma organização bastante prática, que é usada também no Ubuntu e em outras distribuições derivadas dele. À primeira vista, a organização do Apache 2 nas distribuições derivadas do Debian parece muito mais complicada, mas, depois de entender, a coisa se revela bastante simples e lógica: Todos os arquivos de configuração estão organizados dentro do diretório "/etc/apache2". Dentro dele, temos as pastas "sites-available" e "sites-enabled", que contêm a configuração dos sites hospedados; as pastas "mods-available" e "modsenabled", que armazenam a configuração dos módulos; o arquivo "ports.conf", onde vai a configuração das portas TCP que o servidor vai escutar; o arquivo "apache2.conf", 4
que armazena configurações diversas relacionadas ao funcionamento do servidor e a pasta "conf.d", que armazena arquivos com configurações adicionais.
5. Instalando o suporte a PHP No início, existiam apenas páginas html estáticas, com links atualizados manualmente. Depois, surgiram os scripts CGI (geralmente escritos em Perl), que permitiram criar vários tipos de formulários e automatizar funções. Finalmente, surgiu o PHP, adotado rapidamente como a linguagem padrão para criação de todo tipo de página dinâmica, fórum ou gerenciador de conteúdo. Além da linguagem ser bastante flexível, um script em PHP chega a ser mais de 100 vezes mais rápido que um script CGI equivalente, além de mais seguro. Em resumo, um script CGI é um executável, que precisa ser carregado na memória, executado e descarregado cada vez que é feita uma requisição. No caso do PHP, o interpretador fica carregado continuamente e simplesmente vai executando de forma contínua os comandos recebidos dos scripts incluídos nas páginas. Voltando ao assunto principal, no Debian o suporte a PHP é instalado através do pacote "php5" (ou "php4", de acordo com a versão escolhida). Para instalá-lo, basta usar o gerenciador de pacotes da distribuição em uso, como em:
# apt-get install php5 No caso do CentOS e do Fedora, é usado um pacote unificado, o "php", que inclui a versão mais recente do interpretador, eliminando a confusão:
# yum install php Com o interpretador PHP instalado, falta instalar o módulo do Apache 2, que no Debian está disponível através do pacote "libapache2-mod-php5" (ou "libapache2-mod-php4", de acordo com a versão desejada):
# apt-get install libapache2-mod-php5 O
módulo
"libapache2-mod-php5"
é
instalado
dentro
da
pasta
"/usr/lib/apache2/modules/" e é ativado de uma forma diferente que no Apache 1.3. Ao invés de adicionar as linhas que ativam o módulo e criam as associações de arquivos no final do arquivo httpd.conf, são criados dois arquivos dentro da pasta 5
"/etc/apache2/mods-available/", com, respectivamente, a ativação do módulo e as associações de arquivos. Os links são criados automaticamente ao instalar o pacote, mas você pode tirar qualquer dúvida usando o comando a2enmod:
# a2enmod php5 Não esqueça de reiniciar o serviço para que o módulo seja carregado e a configuração entre em vigor:
# /etc/init.d/apache2 force-reload ou:
# service httpd restart No caso do CentOS/Fedora o mod_php é instalado junto com o pacote "php" e ativado automaticamente, através da criação do arquivo "/etc/httpd/conf.d/php.conf". Dentro dele, você encontra as linhas que carregam o módulo e criam a associação com os arquivos .php, como em:
LoadModule php5_module modules/libphp5.so AddHandler php5-script .php AddType text/html .php DirectoryIndex index.php Se você tiver a curiosidade de olhar o conteúdo dos arquivos "/etc/apache2/modsenabled/php5.conf" e "/etc/apache2/mods-enabled/php5.load" em uma distribuição derivada do Debian, vai perceber que as linhas contidas neles são muito similares. Na verdade, o Apache usado no Debian e o usado no CentOS é o mesmo software, apenas configurado de forma ligeiramente diferente. Com o suporte a PHP ativado, o Apache continua exibindo diretamente páginas com extensão .htm ou .html, mas passa a entregar as páginas .php ou .phps ao interpretador php, que faz o processamento necessário e devolve uma página html simples ao Apache, que se encarrega de enviá-la ao cliente. Quase sempre, os sistemas desenvolvidos em PHP utilizam também um banco de dados MySQL ou Postgre SQL. Naturalmente, é perfeitamente possível que os scripts simplesmente salvem as informações em arquivos de texto dentro do diretório do site, mas isso resultaria em um desempenho muito ruim, sem falar em eventuais brechas de
6
segurança. Utilizar um banco de dados permite armazenar um volume muito maior de informações, acessíveis de forma mais segura. Para que o interpretador PHP seja capaz de acessar o banco de dados, é necessário ter instalado (além do servidor MySQL propriamente dito) o módulo "php5-mysql" (ou "php4-mysql"), que faz a junção entre os dois componentes:
# apt-get install php5-mysql No caso do PostgreSQL, é utilizado o módulo "php5-pgsql", que tem a mesma função:
# apt-get install php5-pgsql Não se esqueça de reiniciar o Apache, para que as alterações entrem em vigor:
# /etc/init.d/apache force-reload No caso do Fedora e do CentOS, muda apenas o nome do pacote, que passa a se chamar simplesmente "php-mysql":
# yum install php-mysql Para verificar se o suporte a PHP está realmente ativo, crie um arquivo de texto chamado "info.php" (ou outro nome qualquer, seguido da extensão .php) dentro da pasta do servidor web, contendo apenas a linha abaixo:
Salve o arquivo e abra a página através do navegador. A função "phpinfo", que usamos no arquivo, faz com que o servidor exiba uma página com detalhes da configuração do PHP e dos módulos ativos: Depois de verificar, remova o arquivo, pois não é interessante que essas informações fiquem disponíveis ao público.
6. Instalando o MySQL O MySQL é um banco de dados extremamente versátil, usado para os mais diversos fins. Você pode acessar o banco de dados a partir de um script em PHP, através de um aplicativo desenvolvido em C ou C++, ou praticamente qualquer outra linguagem (até mesmo através de um shell script! :). 7
Existem vários livros publicados sobre ele, por isso vou me limitar a falar sobre a instalação e a configuração necessária para utilizá-lo em um servidor LAMP, em conjunto com o Apache e o PHP. O primeiro passo é instalar o servidor MySQL propriamente dito. Nas distribuições derivadas do Debian precisamos instalar apenas o pacote "mysql-server" usando o aptget:
# apt-get install mysql-server No CentOS ou Fedora, instalamos os pacotes "mysql" e "mysql-server", usando o yum:
# yum install mysql mysql-server O MySQL possui um usuário padrão chamado "root", que, assim como o root do sistema, tem acesso completo a todas as bases de dados e é usado para fazer a configuração inicial do sistema, assim como tarefas de manutenção. Esta conta inicialmente não tem senha, por isso você deve definir uma logo depois de iniciar o serviço, usando o comando "mysqladmin -u root password senha", incluindo a senha desejada diretamente no comando, como em:
# mysqladmin -u root password psUT7wq01
7. Instalando o phpMyAdmin Depois dessa configuração inicial, você pode experimentar instalar um gerenciador gráfico para facilitar a manutenção do seu servidor MySQL. Uma boa opção neste caso é o phpMyAdmin. Para instalá-lo, basta instalar o pacote "phpmyadmin", como em:
# apt-get install phpmyadmin ou:
# yum install phpmyadmin O phpMyAdmin é um gestor de configuração escrito em PHP que trabalha em conjunto com o Apache. Ele permite que você crie bases de dados, ajuste as permissões de acesso dos usuários, faça backup, e diversas outras atividades administrativas de uma forma mais simples que através do prompt de comando. 8
Uma
vez
instalado,
ele
pode
ser
acessado
através
do
endereço
"http://servidor/phpmyadmin/" ou "https://servidor/phpmyadmin/". Na tela inicial, você pode se logar usando qualquer uma das contas registradas no MySQL. Use o root para tarefas administrativas, quando for necessário ter acesso a todas as bases ou fazer backup de tudo, e uma das contas restritas para acessar uma base específica: O acesso via HTTPS é preferível para acessos feitos via web, já que evita que as senhas de acesso e outras informações fiquem circulando em texto puro por aí. O pacote do Debian se encarrega de ativar o suporte a SSL no phpMyAdmin automaticamente, mas para usá-lo é necessário também ativar o suporte a SSL na configuração do Apache, como veremos no tópico seguinte. Caso, mesmo depois de gerar o certificado e ativar o SSL no Apache, você continue recebendo um erro ao tentar acessar a interface do phpMyAdmin via SSL, experimente reconfigurar o pacote usando o dpkg-reconfigure, como em:
# dpkg-reconfigure phpmyadmin Selecione a opção "apache2" quando o script perguntar sobre o servidor web usado e responda "sim" quando ele perguntar se você deseja reiniciar o serviço: Caso o servidor MySQL precise ficar acessível para outros servidores (você pode configurar o phpBB e outros scripts para utilizarem um servidor MySQL externo), configure o firewall para deixar a porta aberta apenas para os endereços IP dos servidores que forem ter acesso. Como os servidores dedicados sempre utilizam endereços fixos (ao contrário dos servidores domésticos), esta configuração fica mais simples. Para administrar seu servidor MySQL remotamente, o ideal é que se conecte ao servidor via SSH e faça todo o trabalho através dele. Se precisar acessar diretamente alguma ferramenta de configuração, como o Webmin ou o phpMyAdmin, você pode criar um túnel (novamente usando o SSH) ligando a porta correspondente do servidor a uma porta da sua máquina e fazer o acesso através dela. Veremos em detalhes como usar o SSH e criar túneis encriptados no capítulo dedicado a ele.
9
8. Ativando o SSL O SSL (Secure Socket Layer) é o protocolo usado para criar páginas seguras, encriptando toda a transmissão entre o cliente e o servidor. Os dois usos mais comuns são em páginas de comércio eletrônico, onde é necessário oferecer um ambiente seguro para concluir a transação e transmitir dados confidenciais e também na criação de ambientes administrativos, como os usados pela maioria dos gestores de conteúdo, que permitem que você gerencie o conteúdo do site. Na grande maioria das distribuições, o pacote com o mod_ssl é instalado juntamente com o pacote principal do Apache, ou é pelo menos disponibilizado como um pacote separado, instalável através do gerenciador de pacotes. No caso das distribuições derivadas do Debian, você precisa apenas ativar o módulo usando o comando "a2enmod". Reinicie o serviço para que a alteração entre em vigor:
# a2enmod ssl # /etc/init.d/apache2 force-reload No caso do CentOS, é necessário instalar o pacote "mod_ssl" usando o yum. O script de pós-instalação se encarrega de adicionar o script de carregamento na pasta "/etc/httpd/conf.d" automaticamente, concluindo a instalação. Não se esqueça de reiniciar o serviço para que a alteração entre em vigor:
# yum install mod_ssl # service httpd restart Com o módulo carregado, fica faltando apenas o componente mais importante, que é o certificado SSL propriamente dito. Se você quer ativar o SSL para testes ou para uso interno (para acessar alguma ferramenta administrativa instalada no servidor, ou para uso em uma página disponibilizada apenas para um grupo de amigos, por exemplo), você pode simplesmente gerar seu próprio certificado, o que é rápido, grátis e indolor. Se, por outro lado, você está ativando o SSL para uso em um site de comércio eletrônico, é necessário obter um certificado reconhecido através da Verisign ou outra entidade certificadora. Os certificados caseiros são chamados de certificados self-signed (auto-assinados), já que você mesmo faz o papel de entidade certificadora, gerando e assinando o 10
certificado. O algoritmo de encriptação usado é o mesmo, de forma que um certificado self-signed corretamente gerado oferece a mesma segurança que um certificado reconhecido. O grande problema é que os navegadores nos clientes não serão capazes de verificar a autenticidade do certificado, de forma que os visitantes receberão um aviso de "certificado não reconhecido" ao acessarem a página: O propósito de entidades certificadoras, como a Verisign, é confirmar a titularidade dos certificados, confirmando que o certificado recebido ao acessar determinado site pertence realmente à entidade que o está fornecendo. É isso que garante que você está mesmo acessando o home banking do banco em que tem conta e não o site de um script kiddie
qualquer.
Certificados
assinados
por
entidades
certificadoras
são
automaticamente aceitos pelos navegadores (já que sua identidade já foi confirmada pela entidade certificadora), o que evita a exibição da mensagem. Vamos então começar com a configuração de um certificado self-signed, e em seguida entender o que muda ao utilizar um certificado reconhecido.
9. Usando um certificado self-signed No Debian e derivados você pode gerar um certificado caseiro utilizando o script "make-ssl-cert", instalado através do pacote "ssl-cert":
# apt-get install ssl-cert Ao usar o script, você deve especificar o arquivo com o template (/usr/share/sslcert/ssleay.cnf) e o arquivo onde o certificado será salvo (/etc/apache2/ssl/apache.pem, para gerar um certificado padrão para o servidor), como em:
# mkdir /etc/apache2/ssl/ # cd /etc/apache2/ssl/ # make-ssl-cert /usr/share/ssl-cert/ssleay.cnf apache.pem -days 1095 A opção "-days" especifica a validade do certificado, que no exemplo será de 3 anos. O script solicitará as informações sobre a organização que serão incluídas no certificado, incluindo o código de país, estado, cidade e o nome da empresa. Estes são dados públicos, que serão exibidos aos clientes como parte das propriedades do certificado. O mais importante vem no final, quando o script pergunta: 11
Common Name (eg, your name or your server's hostname) []: Nesse ponto, você deve sempre fornecer a URL completa do servidor onde o certificado será usado, como em "www.gdhpress.com.br" ou "ssl.gdhn.com.br". Se você especificar um domínio diferente, o cliente receberá um aviso adicional ao se conectar, avisando do problema. Isso afastará visitantes, já que muitos pensarão tratar-se de uma fraude.
10.
Usando um certificado reconhecido
Finalmente, temos a configuração para um certificado reconhecido, que será assinado por uma entidade certificadora, que você utilizaria em um site de comércio eletrônico aberto ao público. Uma
das
entidades
certificadoras
mais
tradicionais
é
a
Verisign
(http://www.verisign.com/), que oferece uma série de garantias sobre os certificados emitidos. O grande problema com relação à Verisign é o preço: o certificado de validação mais simples custa nada menos de US$ 499 anuais, com opções de até US$ 1499. Com preços tão altos, não é de se estranhar que existam inúmeras outras entidades certificadoras, que oferecem preços mais competitivos. Alguns
exemplos
são
a
Thawte
(http://www.thawte.com)
a
GeoTrust
(http://www.geotrust.com), a NetworkSolutions (http://www.networksolutions.com), a Digicert (http://www.digicert.com/) e a Comodo (http://www.instantssl.com), que possui opções a partir de US$ 79 anuais. A Comodo é a mesma empresa que desenvolve o Comodo Firewall, distribuído gratuitamente como uma forma de divulgação dos serviços de certificação. No site está disponível também a opção de gerar um certificado de teste (válido por 90 dias) gratuitamente, que você pode usar para fins de teste, ou quando quiser colocar uma loja virtual no ar rapidamente, deixando para aderir a um dos planos pagos mais tarde: Existem ainda casos de empresas que oferecem certificados de baixo custo, como a Godaddy (http://www.godaddy.com, a mesma que faz registro de domínios), que oferece certificados a partir de US$ 29.90. Em termos de segurança, não existe muita diferença entre um certificado emitido pela Godaddy ou pela Verisign, as principais diferenças são o nível de validação e as garantias oferecidas por cada uma em caso de fraude ou de quebra da chave
12
criptográfica. Assim como em outras áreas, o principal fator na decisão acaba sendo a questão da confiança. Ao contratar os serviços de uma entidade certificadora, sua parte no trabalho é a de gerar uma chave de encriptação e uma requisição de certificado, o que é novamente feito usando o openssl:
# openssl req -new -nodes -keyout gdhn.key -out gdhn.csr O "gdhn.key" e o "gdhn.csr" indicam os arquivos com a chave e com a requisição do certificado que serão gerados. Você precisará responder as mesmas perguntas sobre o país, estado, cidade, nome da empresa, etc., que precisam ser respondidas corretamente, já que as informações serão examinadas não apenas pela entidade certificadora, mas também pelos clientes: Country Name (2 letter code) [AU]: BR State or Province Name (full name) [Some-State]: Estado Locality Name (eg, city) []: Cidade Organization Name (eg, company) []: Minha Empresa LTDA Organizational Unit Name (eg, section) []: Vendas Common Name (eg, YOUR name) []: ssl.minhaempresa.com.br Como comentei anteriormente, o campo "Common Name" deve ser preenchido com o domínio onde o certificado será usado (incluindo o "www" ou o subdomínio usado), caso contrário os clientes receberão um aviso ao acessarem o site: Em geral, as entidades certificadoras oferecem a opção de obter um certificado curinga (wildcard), que cobre automaticamente todos os subdomínios usados no site. Entretanto, como eles abrem a possibilidade de usar vários subdomínios usando um único certificado, as certificadoras cobram bem mais caro por eles. A Comodo, por exemplo, cobra nada menos do que US$ 449.95 anuais, mais de 5 vezes o valor do certificado regular: Depois de gerar a requisição, o próximo passo é enviar o arquivo .csr para a entidade certificadora, que o usará para gerar o certificado. O arquivo .csr é na verdade um arquivo de texto plano, cujo conteúdo pode ser copiado e colado em um formulário web. Depois de confirmada sua identidade e feito o pagamento, você receberá de volta o certificado assinado, que pode ser então usado na configuração do Apache. 13
A
configuração
consiste
em
adicionar
as
linhas
"SSLCertificateFile"
e
"SSLCertificateKeyFile", indicando a localização dos arquivos .crt e .key recebidos. Em muitos casos, você receberá também um terceiro arquivo, com extensão "ca-bundle" ou similar, que é usado em conjunto com uma terceira opção, a "SSLCertificateChainFile". Este terceiro arquivo contém uma combinação de certificados, que permitem aos clientes chegarem até o certificado raiz da entidade certificadora, de forma a comprovarem a autenticidade do seu certificado. Devido a isso, ele é também chamado de certificado intermediário (Intermediate Certificate). Temos aqui um exemplo de configuração com as três opções:
DocumentRoot /var/www/gdhn SSLEngine on SSLCertificateFile /etc/apache2/ssl/ssl_gdhn_com_br.crt SSLCertificateKeyFile /etc/apache2/ssl/gdhn_com_br.key SSLCertificateChainFile /etc/apache2/ssl/ssl_gdhn_com_br.ca-bundle O processo de emissão do certificado inclui uma verificação de identidade, que é justamente um dos principais papéis da entidade certificadora, já que se qualquer um pudesse gerar certificados válidos no nome de qualquer outro, o sistema perderia completamente o sentido. Nos planos mais simples, como no certificado gratuito oferecido pela Comodo, é feita uma simples verificação de titularidade via e-mail, onde você deve confirmar um código enviado para uma conta administrativa, como "admin@meudominio" ou "hostmaster@meudominio". Nos planos mais caros (onde a entidade certificadora realmente oferece garantias, inclusive financeiras sobre o certificado emitido), o processo é mais burocrático, incluindo o envio de documentos.
11.
Virtual Hosts
O suporte a virtual hosts é um daqueles recursos fundamentais, que possibilitaram o surgimento da Internet da forma como a conhecemos hoje. Ele permite hospedar diversos sites, com domínios ou subdomínios diferentes usando um único servidor e um
14
único endereço IP. Os únicos limitantes com relação ao volume de sites que é possível hospedar são os recursos de hardware do servidor e a banda disponível. Serviços de hospedagem compartilhada (os planos de shared hosting) utilizam este recurso de forma intensiva, de forma a espremer o maior número possível de clientes em cada servidor, sem falar nos serviços de hospedagem gratuita onde, em muitos casos, um único servidor pode hospedar dezenas de milhares de sites diferentes. Ao usar virtual hosts, os arquivos de cada site ficam guardados em uma pasta diferente e o servidor se encarrega de direcionar cada visitante à pasta correta. Os recursos do servidor (HD, memória, processamento e link) são divididos entre os sites hospedados, assim como vários programas abertos simultaneamente disputam os recursos da máquina. Isso faz muito sentido no caso de sites pequenos ou médios, que não possuem um número suficiente de visitas para saturarem, sozinhos, o servidor. Em geral, o servidor é configurado de forma que os usuários tenham direito a uma determinada quota de espaço em disco, possam acessar os arquivos do site via FTP ou SFTP e tenham acesso a uma ou mais bases de dados do servidor MySQL, o que permite a instalação de gestores de conteúdo como o WordPress. Entretanto, eles não podem instalar novos pacotes nem alterar a configuração do servidor. Feitas as apresentações, vamos à configuração.
12.
Instalando um servidor FTP
O servidor de FTP mais usado no Linux é o Proftpd, disponível em quase todas as distribuições. O funcionamento do FTP é bem mais simples que o do Samba ou SSH, por isso ele é usado como uma forma simples de disponibilizar arquivos na internet ou mesmo dentro da rede local, sem muita segurança. A principal limitação do protocolo FTP é que todas as informações são transmitidas de forma não encriptada, como texto puro, incluindo os logins e senhas. Ou seja, alguém capaz de sniffar a conexão, usando um programa como o Ethereal, veria tudo que está sendo transmitido. Para aplicações onde é necessário ter segurança na transmissão dos arquivos, é recomendável usar o SFTP, o módulo do SSH que permite transferir arquivos de forma encriptada. Apesar disso, se você quiser apenas criar um repositório com alguns arquivos para download ou manter um servidor público como o Ibiblio.org, então o FTP é mais interessante, por ser mais simples de usar. 15
Não é difícil instalar o Proftpd, basta procurar pelo pacote "proftpd" na distribuição usada, como em:
# apt-get install proftpd # yum install proftpd ou:
# urpmi proftpd No Debian, durante a instalação do pacote do Proftpd, geralmente são feitas algumas perguntas. A primeira é se você deseja deixar o servidor FTP ativo em modo standalone ou em modo inetd. O standalone é mais seguro e mais rápido, enquanto o inetd faz com que ele fique ativo apenas quando acessado, economizando cerca de 400 KB de memória RAM (que fazem pouca diferença hoje em dia). O modo standalone é a opção recomendada. Você terá também a opção de ativar o acesso anônimo, que permite acessos anônimos (somente leitura) na pasta "/home/ftp", onde você pode disponibilizar alguns arquivos para acesso público. Nesse caso, os usuários fazem login no servidor usando a conta "anonymous" e um endereço de e-mail como senha. Caso prefira desativar o acesso anônimo, apenas usuários com login válido na máquina poderão acessar o FTP. Depois de concluída a instalação, o servidor fica ativo por default, é inicializado automaticamente durante o boot e pode ser controlado manualmente através do serviço "proftpd", como em "/etc/init.d/proftpd start". Você pode acessar outras máquinas da rede com servidores FTP ativos usando o GFTP, o Konqueror ou o próprio navegador. O FTP pode ser usado também como opção para transferência de arquivos na rede local. Uma das vantagens do FTP é que existem clientes para todas as plataformas, você pode baixar o Filezilla, um servidor e cliente de FTP for Windows, no http://filezilla.sourceforge.net/. Sempre que fizer alterações no arquivo, reinicie o servidor para que elas entrem em vigor. Para isso, use o comando "/etc/init.d/proftpd restart". Para solucionar o problema, abra o arquivo "/etc/proftpd.conf" e substitua a linha:
UseIPv6 on por:
UseIPv6 off
16
Uma das primeiras opções do arquivo é a opção Port, que permite alterar a porta usada pelo FTP. O padrão é usar a porta 21, mas muitos serviços de banda larga bloqueiam as portas 21 e 80 para que os usuários não rodem servidores. Nesse caso, você pode mudar para a porta 2121, por exemplo:
# Port 21 is the standard FTP port. Port 2121 Ao mudar a porta padrão do servidor, os usuários precisarão indicar manualmente a porta no cliente de ftp ou navegador, como em: ftp://200.234.213.23:2121. Em seguida, vem a opção MaxClients, que limita o número de conexões simultâneas ao servidor FTP. Esta opção trabalha em conjunto com a limitação de banda (veja a seguir). Você pode limitar os downloads de cada usuário a um máximo de 10 KB/s e limitar o servidor a 3 usuários simultâneos, por exemplo. Assim, o FTP consumirá um máximo de 30 KB/s do link do servidor.
MaxClients 30 Se você quiser limitar o acesso dos usuários, prendendo-os em seus respectivos diretórios home, adicione a linha "DefaultRoot ~" no final do arquivo. Lembre-se de que no Linux o "~" é um curinga, que é automaticamente substituído pela pasta home do usuário que está logado:
DefaultRoot ~ Para ativar a limitação de banda, adicione a linha "TransferRate RETR 8:10", onde o "8" pode ser substituído pela taxa desejada, em KB/s, por usuário:
TransferRate RETR 8:10
13.
FTP + TLS
É possível adicionar uma camada de segurança ao protocolo FTP ativando a encriptação via TLS. Nem todos os clientes de FTP suportam encriptação, de forma que a mudança criará dificuldades aos usuários menos técnicos, mas, por outro lado, elimina o grande risco do FTP, evitando que as senhas possam ser capturadas durante as conexões.
17
Presumindo que você já tenha instalado o pacote do Proftpd e feito a configuração básica, o próximo passo é instalar o pacote "openssl". Ele é usado por diversos outros serviços, por isso é provável que já esteja instalado:
# apt-get install openssl Em seguida, crie um diretório dentro da pasta "/etc/proftpd" para armazenar os certificados, como em:
# mkdir /etc/proftpd/cert O próximo passo é gerar os certificados usando o comando "openssl", como em:
# openssl req -new -x509 -days 3650 -nodes -out \ /etc/proftpd/cert/proftpd.cert.pem -keyout /etc/proftpd/cert/proftpd.key.pem A opção "-days" especifica o tempo de validade do certificado. Nesse caso, estou gerando um certificado válido por 10 anos para evitar que os clientes passem a receber erros relacionados ao certificado caso ele expire antes que tenha tempo de atualizá-lo. Entretanto, do ponto de vista da segurança, o ideal é gerar certificados válidos por apenas um ano ou dois e substituí-los mais regularmente. Depois de responder às perguntas feitas durante a geração do certificado (país, estado, cidade, nome da empresa, etc.), serão gerados os arquivos "proftpd.cert.pem" e "proftpd.key.pem" dentro da pasta "/etc/proftpd/cert", que correspondem ao certificado. O próximo passo é alterar a configuração do Proftpd de forma que ele ative o uso da encriptação. Abra o arquivo "/etc/proftpd/proftpd.conf" e procure pelas linhas:
TLSEngine off Para ativar o uso do TLS, você deve substituí-las por:
TLSEngine on TLSLog /var/log/proftpd/tls.log TLSProtocol SSLv23 TLSOptions NoCertRequest TLSRSACertificateFile /etc/proftpd/cert/proftpd.cert.pem TLSRSACertificateKeyFile /etc/proftpd/cert/proftpd.key.pem TLSVerifyClient off 18
TLSRequired on Note que as opções "TLSRSACertificateFile" e "TLSRSACertificateKeyFile" indicam a localização dos dois arquivos com o certificado. Se você estiver usando uma pasta diferente da "/etc/proftpd/cert" para armazená-los, não esqueça de indicar a localização correta. Outra opção importante é a "TLSRequired", que determina se o uso da encriptação será obrigatório ou não. Ao usar "TLSRequired on", como no exemplo, apenas os clientes que tiverem ativado o uso do SSL poderão se conectar ao servidor, enquanto que ao usar "TLSRequired off" a encriptação passa a ser opcional. Depois de salvar a configuração, reinicie o serviço:
# /etc/init.d/proftpd restart Para ativar a encriptação no cliente, é necessário usar o protocolo "FTP over SSL", em vez do protocolo FTP regular. O grande problema é que o FTP over SSL não é suportado por todos os clientes de FTP, o que dificulta seu uso. Em geral, é mais fácil conseguir que os usuários migrem para o SFTP (veja detalhes sobre ele no capítulo sobre o SSH), que é suportado por um número maior de clientes de FTP do que conseguir fazer uma migração completa para o TLS.
14.
Gerando estatísticas
O Webalizer é um gerador de estatísticas de acesso para o servidor web. Ele loga todos os acessos feitos ao servidor, incluindo as páginas acessadas, o tráfego gerado, os navegadores e os sistemas operacionais usados pelos clientes, entre outras informações úteis para entender os hábitos e interesses de seus visitantes. É simples instalar o Webalizer, procure pelo pacote "webalizer" dentro do gerenciador de pacotes. O Webalizer não é um serviço que fica residente, mas sim um executável que precisa ser chamado cada vez que quiser ver a página de estatísticas atualizada, basta chamá-lo como root. Por padrão, a página de estatísticas é armazenada na pasta "webalizer/", dentro do seu servidor web. 19
O arquivo de configuração do Webalizer é o " /etc/webalizer.conf ". É importante que você revise o arquivo de configuração, indicando pelo menos a localização correta do arquivo de log do Apache e alterando a pasta onde as estatísticas ficarão armazenadas, caso não queira que elas fiquem disponíveis ao público. Você pode armazená-las em uma pasta isolada no servidor web.
15.
Gestores de conteúdo
Com o MySQL instalado e o suporte a PHP ativo, você tem pronta a estrutura necessária para instalar os diversos scripts de fórum, chat, gestores de conteúdo e outros. A maioria destes scripts é simples de instalar, você precisa apenas criar uma base de dados no MySQL ou Postgre, copiar os arquivos para uma pasta dentro do servidor web e editar um arquivo (ou acessar uma página de configuração através do navegador) para incluir as informações sobre o servidor (base de dados a ser usada, login e senha, etc.) e concluir a configuração. Embora o Apache e o MySQL sejam bastante seguros, nada garante que os scripts desenvolvidos por terceiros também serão. O ponto fraco na segurança de qualquer site ou fórum é quase sempre a segurança do script usado. Não escolha qual usar pensando apenas na facilidade de uso. Investigue o histórico de segurança e, uma vez escolhido qual usar, fique de olho nas atualizações de segurança.
16.
Gestores de conteúdo: phpBB
O phpBB é um sistema de fórum bastante usado, que conta com um bom conjunto de recursos e um bom histórico de segurança. Ele é ideal para fóruns de pequeno e médio porte mas também atende bem a fóruns com um milhão de mensagens ou mais, graças ao bom desempenho em conjunto com o MySQL. Para instalar, salve-o dentro do diretório raiz do site ("/var/www" ) descompacte o arquivo e renomeie a pasta criada para o diretório onde o fórum deve ficar acessível. No caso, está sendo instalando na pasta "forum/".
20
Depois de copiar os arquivos, acesse a página " /forum/install/index.php" dentro da árvore do seu site. O acesso pode ser feito tanto localmente (http://127.0.0.1/forum/install/index.php) quanto via web. Esta é a página usada para concluir a instalação. É importante que você acesse a página assim que os arquivos forem copiados, pois ela fica acessível para qualquer um.
Figura 1: Instalando o phpBB, imagem de configuração da base de dados.
- Tipo de Base de Dados: é preenchido automaticamente pelo instalador, que se encarrega de detectar o banco de dados usado; - Nome do servidor da Base de Dados: é usado apenas se você está usando uma máquina separada para o banco de dados; - Porta do Servidor da Base de Dados : também fica em branco, a menos que você tenha configurado o MySQL pra escutar em uma porta diferente da padrão. - Nome da Base de Dados : indica a base de dados que será usada pelo fórum. Aqui, no caso, estamos usando " phpbb". Caso você esteja instalando só para testar, pode usar também a base de dados "test", criada por padrão. - O login e senha serão utilizados pelo phpBB para acessar o banco de dados. - Prefixo das tabelas na Base de Dados : é destinada a situações onde você precisa compartilhar a mesma base de dados entre duas ou mais instalações do phpBB;
21
Figura 2: configurando a URL do servidor As opções referentes ao servidor de e-mails são necessárias apenas para ativar o envio de notificações de respostas aos posts iniciados pelos usuários. A opção "Cookie seguro" pode ser usada para melhorar a segurança no login dos usuários, mas ela pode ser usada apenas se você ativou o suporte a HTTPS na configuração do servidor e ele está ativo na configuração do fórum. O uso de HTTPS previne o roubo de senhas e outros tipos de vandalismos e melhora a segurança geral do fórum, mas em compensação aumenta a carga de processamento do servidor, além de tornar a configuração um pouco mais complexa, como vimos anteriormente. A opção "Protocolo do Servidor" indica se o fórum será acessível via HTTP ou HTTPS, a opção "Nome do Domínio" indica o domínio onde o site está hospedado, o "Porta do Servidor" indica a porta em que o servidor web está escutando (80 para HTTP ou 443 para HTTPS) e a "Pasta dos Ficheiros" indica o diretório do site onde o fórum está disponível.
22
Figura 3: Painel administrativo do fórum. Você tem então acesso ao painel administrativo do fórum, onde pode criar as salas e ajustar as demais opções do fórum, além de moderar mensagens, suspender ou banir usuários e assim por diante.
17.
Solucionando problemas com o charset
Um problema muito comum ao utilizar o Apache 2 sobre uma distribuição Linux recente é os caracteres acentuados das páginas hospedadas aparecerem trocados por interrogações, quadrados ou vírgulas em alguns navegadores. Isso acontece em situações onde os arquivos das páginas hospedadas no servidor foram salvos usando o charset ISO-8859-1 e o servidor Apache está configurado para usar UTF-8, que é o default na maioria das distribuições atuais. Para solucionar os problemas existem 3 opções: A primeira é especificar o charset correto no header de cada página do site, o que é feito adicionando uma tag "meta" dentro da seção "head" da página, como em:
A segunda opção é mudar a configuração do Apache para que ele passe a utilizar o ISO8859-1 como charset padrão, em vez do UTF-8. edite o arquivo: /etc/apache2/apache2.conf
A Terceira opção é possível também converter os arquivos diretamente, usando o comando "recode ", que está disponível nos repositórios de praticamente todas as distribuições que adotaram o uso do UTF8. Comece instalando o pacote, como em:
# apt-get install recode Para converter um arquivo, use o comando "recode -d ISO-8859-1..UTF-8" seguido pelo arquivo a ser convertido.
$ recode -d ISO-8859-1..UTF-8 arquivo.txt OU você pode também converter de uma vez diversos arquivos, como em:
$ recode -d ISO-8859-1..UTF-8 *.html 23
18.
Módulos do Apache
O principal ponto forte do Apache é o grande volume de módulos disponíveis para ele. Sempre que você precisa de algum recurso em especial, o primeiro passo é fazer uma pesquisa na web por algum módulo que desempenhe a função desejada. Se o recurso que precisa for uma necessidade comum, muito provavelmente você encontrará um módulo já pronto que se propõe a resolver o problema.
Mod_rewrite Tem a função de reescrever URLs a partir de um conjunto de parâmetros especificado por você. O uso mais simples para ele é quando você muda o domínio de acesso do site e quer que todos os links sejam redirecionados para o novo endereço. Você poderia solucionar isso de forma muito simples. O primeiro passo é verificar se o módulo está carregado na configuração do Apache. No caso das distribuições derivadas do Debian, você pode ativá-lo usando o comando a2enmod:
# a2enmod rewrite a configuração, é feita através do arquivo " .htaccess", criado no diretório raiz do site antigo .
RewriteEngine On RewriteRule (.*) http://www.dominio.com.br/$1 [R=301,L] A linha "RewriteEngine On" é a responsável por encaminhar as requisições ao mod_rewrite, a linha "RewriteRule (.*) http://www.dominio.com.br/$1 [R=301,L]" explica o que deve ser feito. "(.*)" cria uma regra de encaminhamento, que será aplicada a qualquer URL dentro do domínio. A página especificada pelo visitante ao acessar o site vira uma variável ($1), que é então usada no parâmetro seguinte, o "http://www.dominio.com.br/$1" onde é indicado o novo domínio do site. Com
isso,
se
o
visitante
tentar
acessar
o
"http://dominio.provedor.com.br/produtos/index.php?id=312" do exemplo anterior, a variável "$1" será carregada com o valor "produtos/index.php?id=312" e ele será
24
encaminhado ao "http://www.dominio.com.br/produtos/index.php?id=312". O mesmo se aplica a qualquer outra URL que ele vier a tentar acessar. O "[R=301,L]" é o código de retorno que será enviado ao cliente. No caso o usado foi o 301, que é o código de redirecionamento permanente.
mod_deflate No Debian, a configuração vai no arquivo: /etc/apache2/modsavailable/deflate.conf Uma configuração simples, e bastante usada, é fazer com que o deflate comprima apenas arquivos em html, texto ou xml, sem tentar comprimir outros tipos de arquivos Esta configuração exige uma única linha e é a configuração padrão no Debian:
AddOutputFilterByType DEFLATE text/html text/plain text/xml
19.
Usando quotas de disco
Através do Quota é possível limitar a quantidade de espaço em disco disponível para cada usuário No Quota existem dois limites que podem ser estabelecidos, o soft limit e o hard limit. O hard limit é o limite de espaço em si, digamos, 1000 MB para cada usuário. Quando o hard limit é atingido, a gravação de novos arquivos é bloqueada, se necessário interrompendo a transferência. O soft limit é um limite de advertência, um pouco inferior ao valor do hard limit. Se o hard limit é de 1000 MB, o soft limit poderia ser 500 ou 800 MB, por exemplo. Sempre que superar o soft limit, o usuário receberá uma mensagem de alerta, mas ainda poderá gravar mais dados até que atinja o hard limit.
20.
Configurando o Quota
Para que o Quota funcione, é necessário instalar os pacotes " quota" e "quotatool", que contêm um conjunto de utilitários usados para configurar e verificar as quotas de disco.
25
Com o módulo carregado, o primeiro passo da configuração é alterar a entrada no fstab referente à partição, de modo que o suporte a quotas de disco seja ativado. Abra o arquivo "/etc/fstab", localize a linha referente à partição e adicione os parâmetros "usrquota,grpquota" logo após o "defaults". Se você está ativando o Quota para a partição "/home", por exemplo, a linha seria parecida com:
/dev/hda2 /home ext3 defaults 0 2 Depois da alteração, a linha ficaria:
/dev/hda2 /home ext3 defaults,usrquota,grpquota 0 2 Em seguida, você deve criar os arquivos " aquota.user" e "aquota.group" (onde ficam armazenadas as configurações do Quota) no diretório raiz da partição. Se você está ativando o Quota para a partição montada no /home, então os dois arquivos serão "/home/aquota.user" e "/home/aquota.group". É importante que ambos fiquem com permissão de acesso "600", de modo que apenas o root possa acessá-los ou fazer modificações. Os comandos são executados com a partição montada:
# touch /home/aquota.user # chmod 600 /home/aquota.user # touch /home/aquota.group # chmod 600 /home/aquota.group Feche todos os programas e serviços que estejam acessando arquivos dentro da partição e remontá-la (para que sejam aplicados os parâmetros incluídos no fstab) usando o parâmetro "-o remount" do mount, como em:
# mount -o remount /home O quotacheck faz a verificação inicial dos arquivos e usuários, gerando uma tabela oculta que lista os arquivos de posse de cada usuário. Essa tabela é usada pelo Quota para checar o espaço ocupado por cada um e é atualizada em tempo real conforme novos arquivos são gravados. Com tudo pronto, ative o uso das quotas usando o comando "quotaon", seguido da pasta onde está montada a partição, como em:
# quotaon /home
26
21.
Bibliografia
MORIMOTO Carlos E. Servidores Linux. Guia Prático. Sul Editores. 2008.
http://www.hardware.com.br/livros/servidores-linux/capitulo-configurandoservidores-web.html, - acessado de 12/03/2012 à 21/05/2012
27
View more...
Comments