You are on page 1of 27

SUMRIO

1. 2. 3. 4. 5. 6. 7. 8. 9. INTRODUO AOS SERVIOS WEB ..................................................... 2 INSTALANDO O APACHE ....................................................................... 2 ENTENDENDO A ORGANIZAO DOS ARQUIVOS .............................. 3 NO DEBIAN E DERIVADOS .................................................................... 4 INSTALANDO O SUPORTE A PHP .......................................................... 5 INSTALANDO O MYSQL......................................................................... 7 INSTALANDO O PHPMYADMIN ............................................................ 8 ATIVANDO O SSL ................................................................................. 10 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 ESTATSTICAS ................................................................... 19 15. GESTORES DE CONTEDO .................................................................. 20 16. GESTORES DE CONTEDO: PHPBB .................................................... 20 17. SOLUCIONANDO PROBLEMAS COM O CHARSET ............................. 23 18. MDULOS DO APACHE ....................................................................... 24 19. USANDO QUOTAS DE DISCO ............................................................... 25 20. CONFIGURANDO O QUOTA ................................................................. 25 21. BIBLIOGRAFIA ..................................................................................... 27

1. Introduo aos servios web


Os servidores web so a espinha dorsal da Internet, so eles que hospedam todas as pginas, incluindo os mecanismos de busca e servem como base para todo tipo de aplicativo via web, incluindo os webmails. No futuro, esta tendncia deve se acentuar, com pginas web dinmicas e aplicativos via web substituindo cada vez mais os aplicativos desktop. Nos primrdios da internet, eram utilizadas apenas pginas html estticas e scripts CGI. O Apache em si continua oferecendo suporte apenas a esses recursos bsicos, mas ele pode ser expandido atravs de mdulos, passando a suportar scripts em PHP, acessar bancos de dados MySQL, entre inmeros outros recursos. Sempre que solicitada uma pgina em PHP ou outra linguagem, entra em ao o mdulo apropriado, que faz o processamento necessrio e devolve ao Apache a pgina html que ser exibida. Entram em ao, ento, os gestores de contedo e fruns, que combinam os recursos do PHP com um banco de dados como o MySQL, acessado atravs dele. A combinao de tudo isso forma a soluo que popularmente chamada de "LAMP" (Linux + Apache + MySQL + PHP). O Apache e o MySQL, juntamente com o suporte a PHP podem ser tambm instalados sobre o Windows (formando o "WAMP"), uma soluo relativamente popular entre administradores Microsoft que no se sentem vontade em usar o IIS.

2. Instalando o Apache
O Apache pode ser dividido em duas grandes famlias: 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, alm de oferecer novos mdulos e mais opes de segurana, mas sua adoo foi retardada nos primeiros anos por um detalhe muito simples: o fato de ele ser incompatvel com os mdulos compilados para o Apache 1.3. Como os mdulos so a alma do servidor web, muitos administradores ficavam amarrados ao Apache 1.3 devido falta de disponibilidade de alguns mdulos especficos 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 configurao, como veremos a seguir).
2

Instale tambm o pacote apache2-utils, que contm diversos utilitrios de gerenciamento que usaremos a seguir: # apt-get install apache2 apache2-utils

Se desejar ativar o suporte a pginas seguras, voc vai precisar tambm do pacote "sslcert", necessrio para ativar o suporte a SSL e gerar os certificados. Ele no instalado por padro ao fazer uma instalao 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 contm o Apache 2 e os utilitrios: # yum install httpd

Diferente do Debian, o servio no ser configurado para ser ativado no boot por padro e nem mesmo inicializado automaticamente aps a instalao. Para ativ-lo, necessrio ativar o servio e, em seguida, criar os links para incio automtico usando o chkconfig # service httpd start # chkconfig httpd on

Seguindo os nomes dos pacotes, no Debian o servio 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 endereo "http://127.0.0.1", voc ver uma pgina de boas-vindas, que indica que o servidor est funcionando. Se no houver nenhum firewall no caminho, ele j estar acessvel a partir de outros micros da rede local ou da internet.

3. Entendendo a organizao dos arquivos


A principal caracterstica do Apache a modularidade. Ao invs de ser um aplicativo grande e complexo, que tenta desempenhar sozinho todas as funes, o Apache se limita a executar uma nica tarefa: entregar pginas html e outros tipos de arquivos aos clientes. Qualquer outra coisa invariavelmente feita por um mdulo externo.
3

Por exemplo, quando voc acessa uma pgina em PHP em um site que roda sobre um servidor Apache, ele (Apache) l o arquivo no disco e repassa a requisio para o mod_php, o mdulo encarregado de processar arquivos PHP. Ele, por sua vez, aciona o interpretador PHP, que processa a pgina e a entrega, j processada, ao Apache, que, finalmente, a entrega ao cliente. Caso seja necessrio acessar um banco de dados (como no caso de um frum ou de um gestor de contedo), entra em ao outro mdulo, 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 pgina processada em tempo hbil, mas justamente essa diviso de tarefas que permite ao Apache ser to rpido e seguro. O trabalho dividido em vrias partes e cada mdulo mantido separadamente por uma equipe que entende do assunto e zela pelo desempenho e confiabilidade do cdigo. Graas a isso, bastante raro que sejam descobertos problemas graves de segurana no Apache ou no interpretador PHP, por exemplo. Quase sempre, os problemas de segurana no esto no servidor Web em si, mas sim no gestor de contedo (phpNuke, Xoops, phpBB, etc.) usado.

4. No Debian e derivados
Nas distribuies derivadas do Debian, a arquitetura modular do Apache extendida tambm aos arquivos de configurao. Tradicionalmente, a configurao do Apache centralizada em um nico arquivo, o "httpd.conf", que pode opcionalmente incluir referncias a arquivos externos (includes) que permitem segmentar e organizar a configurao. Aproveitando esta possibilidade, a equipe do Debian desenvolveu uma organizao bastante prtica, que usada tambm no Ubuntu e em outras distribuies derivadas dele. primeira vista, a organizao do Apache 2 nas distribuies derivadas do Debian parece muito mais complicada, mas, depois de entender, a coisa se revela bastante simples e lgica: Todos os arquivos de configurao esto organizados dentro do diretrio "/etc/apache2". Dentro dele, temos as pastas "sites-available" e "sites-enabled", que contm a configurao dos sites hospedados; as pastas "mods-available" e "modsenabled", que armazenam a configurao dos mdulos; o arquivo "ports.conf", onde vai a configurao das portas TCP que o servidor vai escutar; o arquivo "apache2.conf",
4

que armazena configuraes diversas relacionadas ao funcionamento do servidor e a pasta "conf.d", que armazena arquivos com configuraes adicionais.

5. Instalando o suporte a PHP


No incio, existiam apenas pginas html estticas, com links atualizados manualmente. Depois, surgiram os scripts CGI (geralmente escritos em Perl), que permitiram criar vrios tipos de formulrios e automatizar funes. Finalmente, surgiu o PHP, adotado rapidamente como a linguagem padro para criao de todo tipo de pgina dinmica, frum ou gerenciador de contedo. Alm da linguagem ser bastante flexvel, um script em PHP chega a ser mais de 100 vezes mais rpido que um script CGI equivalente, alm de mais seguro. Em resumo, um script CGI um executvel, que precisa ser carregado na memria, executado e descarregado cada vez que feita uma requisio. No caso do PHP, o interpretador fica carregado continuamente e simplesmente vai executando de forma contnua os comandos recebidos dos scripts includos nas pginas. Voltando ao assunto principal, no Debian o suporte a PHP instalado atravs do pacote "php5" (ou "php4", de acordo com a verso escolhida). Para instal-lo, basta usar o gerenciador de pacotes da distribuio em uso, como em: # apt-get install php5 No caso do CentOS e do Fedora, usado um pacote unificado, o "php", que inclui a verso mais recente do interpretador, eliminando a confuso: # yum install php

Com o interpretador PHP instalado, falta instalar o mdulo do Apache 2, que no Debian est disponvel atravs do pacote "libapache2-mod-php5" (ou "libapache2-mod-php4", de acordo com a verso desejada): # apt-get install libapache2-mod-php5

mdulo

"libapache2-mod-php5"

instalado

dentro

da

pasta

"/usr/lib/apache2/modules/" e ativado de uma forma diferente que no Apache 1.3. Ao invs de adicionar as linhas que ativam o mdulo e criam as associaes de arquivos no final do arquivo httpd.conf, so criados dois arquivos dentro da pasta
5

"/etc/apache2/mods-available/", com, respectivamente, a ativao do mdulo e as associaes de arquivos. Os links so criados automaticamente ao instalar o pacote, mas voc pode tirar qualquer dvida usando o comando a2enmod: # a2enmod php5

No esquea de reiniciar o servio para que o mdulo seja carregado e a configurao 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, atravs da criao do arquivo "/etc/httpd/conf.d/php.conf". Dentro dele, voc encontra as linhas que carregam o mdulo e criam a associao 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 contedo dos arquivos "/etc/apache2/modsenabled/php5.conf" e "/etc/apache2/mods-enabled/php5.load" em uma distribuio derivada do Debian, vai perceber que as linhas contidas neles so 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 pginas com extenso .htm ou .html, mas passa a entregar as pginas .php ou .phps ao interpretador php, que faz o processamento necessrio e devolve uma pgina html simples ao Apache, que se encarrega de envi-la ao cliente. Quase sempre, os sistemas desenvolvidos em PHP utilizam tambm um banco de dados MySQL ou Postgre SQL. Naturalmente, perfeitamente possvel que os scripts simplesmente salvem as informaes em arquivos de texto dentro do diretrio do site, mas isso resultaria em um desempenho muito ruim, sem falar em eventuais brechas de

segurana. Utilizar um banco de dados permite armazenar um volume muito maior de informaes, acessveis de forma mais segura. Para que o interpretador PHP seja capaz de acessar o banco de dados, necessrio ter instalado (alm do servidor MySQL propriamente dito) o mdulo "php5-mysql" (ou "php4-mysql"), que faz a juno entre os dois componentes: # apt-get install php5-mysql

No caso do PostgreSQL, utilizado o mdulo "php5-pgsql", que tem a mesma funo: # apt-get install php5-pgsql

No se esquea de reiniciar o Apache, para que as alteraes 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 extenso .php) dentro da pasta do servidor web, contendo apenas a linha abaixo: <?php phpinfo( ); ?>

Salve o arquivo e abra a pgina atravs do navegador. A funo "phpinfo", que usamos no arquivo, faz com que o servidor exiba uma pgina com detalhes da configurao do PHP e dos mdulos ativos: Depois de verificar, remova o arquivo, pois no interessante que essas informaes fiquem disponveis ao pblico.

6. Instalando o MySQL
O MySQL um banco de dados extremamente verstil, usado para os mais diversos fins. Voc pode acessar o banco de dados a partir de um script em PHP, atravs de um aplicativo desenvolvido em C ou C++, ou praticamente qualquer outra linguagem (at mesmo atravs de um shell script! :).
7

Existem vrios livros publicados sobre ele, por isso vou me limitar a falar sobre a instalao e a configurao necessria 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 distribuies 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 usurio padro chamado "root", que, assim como o root do sistema, tem acesso completo a todas as bases de dados e usado para fazer a configurao inicial do sistema, assim como tarefas de manuteno. Esta conta inicialmente no tem senha, por isso voc deve definir uma logo depois de iniciar o servio, 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 configurao inicial, voc pode experimentar instalar um gerenciador grfico para facilitar a manuteno do seu servidor MySQL. Uma boa opo 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 configurao escrito em PHP que trabalha em conjunto com o Apache. Ele permite que voc crie bases de dados, ajuste as permisses de acesso dos usurios, faa backup, e diversas outras atividades administrativas de uma forma mais simples que atravs do prompt de comando.
8

Uma

vez

instalado,

ele

pode

ser

acessado

atravs

do

endereo

"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 necessrio ter acesso a todas as bases ou fazer backup de tudo, e uma das contas restritas para acessar uma base especfica: O acesso via HTTPS prefervel para acessos feitos via web, j que evita que as senhas de acesso e outras informaes 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 necessrio tambm ativar o suporte a SSL na configurao do Apache, como veremos no tpico 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 opo "apache2" quando o script perguntar sobre o servidor web usado e responda "sim" quando ele perguntar se voc deseja reiniciar o servio: Caso o servidor MySQL precise ficar acessvel 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 endereos IP dos servidores que forem ter acesso. Como os servidores dedicados sempre utilizam endereos fixos (ao contrrio dos servidores domsticos), esta configurao fica mais simples. Para administrar seu servidor MySQL remotamente, o ideal que se conecte ao servidor via SSH e faa todo o trabalho atravs dele. Se precisar acessar diretamente alguma ferramenta de configurao, como o Webmin ou o phpMyAdmin, voc pode criar um tnel (novamente usando o SSH) ligando a porta correspondente do servidor a uma porta da sua mquina e fazer o acesso atravs dela. Veremos em detalhes como usar o SSH e criar tneis encriptados no captulo dedicado a ele.

8. Ativando o SSL
O SSL (Secure Socket Layer) o protocolo usado para criar pginas seguras, encriptando toda a transmisso entre o cliente e o servidor. Os dois usos mais comuns so em pginas de comrcio eletrnico, onde necessrio oferecer um ambiente seguro para concluir a transao e transmitir dados confidenciais e tambm na criao de ambientes administrativos, como os usados pela maioria dos gestores de contedo, que permitem que voc gerencie o contedo do site. Na grande maioria das distribuies, o pacote com o mod_ssl instalado juntamente com o pacote principal do Apache, ou pelo menos disponibilizado como um pacote separado, instalvel atravs do gerenciador de pacotes. No caso das distribuies derivadas do Debian, voc precisa apenas ativar o mdulo usando o comando "a2enmod". Reinicie o servio para que a alterao entre em vigor: # a2enmod ssl # /etc/init.d/apache2 force-reload

No caso do CentOS, necessrio instalar o pacote "mod_ssl" usando o yum. O script de ps-instalao se encarrega de adicionar o script de carregamento na pasta "/etc/httpd/conf.d" automaticamente, concluindo a instalao. No se esquea de reiniciar o servio para que a alterao entre em vigor: # yum install mod_ssl # service httpd restart

Com o mdulo 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 pgina disponibilizada apenas para um grupo de amigos, por exemplo), voc pode simplesmente gerar seu prprio certificado, o que rpido, grtis e indolor. Se, por outro lado, voc est ativando o SSL para uso em um site de comrcio eletrnico, necessrio obter um certificado reconhecido atravs da Verisign ou outra entidade certificadora. Os certificados caseiros so 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 encriptao usado o mesmo, de forma que um certificado self-signed corretamente gerado oferece a mesma segurana que um certificado reconhecido. O grande problema que os navegadores nos clientes no sero capazes de verificar a autenticidade do certificado, de forma que os visitantes recebero um aviso de "certificado no reconhecido" ao acessarem a pgina: O propsito 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 no o site de um script kiddie qualquer. Certificados assinados por entidades certificadoras so

automaticamente aceitos pelos navegadores (j que sua identidade j foi confirmada pela entidade certificadora), o que evita a exibio da mensagem. Vamos ento comear com a configurao 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 atravs 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 padro 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 opo "-days" especifica a validade do certificado, que no exemplo ser de 3 anos. O script solicitar as informaes sobre a organizao que sero includas no certificado, incluindo o cdigo de pas, estado, cidade e o nome da empresa. Estes so dados pblicos, que sero 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 domnio diferente, o cliente receber um aviso adicional ao se conectar, avisando do problema. Isso afastar visitantes, j que muitos pensaro tratar-se de uma fraude.

10.

Usando um certificado reconhecido

Finalmente, temos a configurao para um certificado reconhecido, que ser assinado por uma entidade certificadora, que voc utilizaria em um site de comrcio eletrnico aberto ao pblico. Uma das entidades certificadoras mais tradicionais a Verisign

(http://www.verisign.com/), que oferece uma srie de garantias sobre os certificados emitidos. O grande problema com relao Verisign o preo: o certificado de validao mais simples custa nada menos de US$ 499 anuais, com opes de at US$ 1499. Com preos to altos, no de se estranhar que existam inmeras outras entidades certificadoras, que oferecem preos mais competitivos. Alguns exemplos so 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 opes a partir de US$ 79 anuais. A Comodo a mesma empresa que desenvolve o Comodo Firewall, distribudo gratuitamente como uma forma de divulgao dos servios de certificao. No site est disponvel tambm a opo de gerar um certificado de teste (vlido 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 domnios), que oferece certificados a partir de US$ 29.90. Em termos de segurana, no existe muita diferena entre um certificado emitido pela Godaddy ou pela Verisign, as principais diferenas so o nvel de validao e as garantias oferecidas por cada uma em caso de fraude ou de quebra da chave

12

criptogrfica. Assim como em outras reas, o principal fator na deciso acaba sendo a questo da confiana. Ao contratar os servios de uma entidade certificadora, sua parte no trabalho a de gerar uma chave de encriptao e uma requisio 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 requisio do certificado que sero gerados. Voc precisar responder as mesmas perguntas sobre o pas, estado, cidade, nome da empresa, etc., que precisam ser respondidas corretamente, j que as informaes sero examinadas no apenas pela entidade certificadora, mas tambm 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 domnio onde o certificado ser usado (incluindo o "www" ou o subdomnio usado), caso contrrio os clientes recebero um aviso ao acessarem o site: Em geral, as entidades certificadoras oferecem a opo de obter um certificado curinga (wildcard), que cobre automaticamente todos os subdomnios usados no site. Entretanto, como eles abrem a possibilidade de usar vrios subdomnios 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 requisio, o prximo 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 contedo pode ser copiado e colado em um formulrio web. Depois de confirmada sua identidade e feito o pagamento, voc receber de volta o certificado assinado, que pode ser ento usado na configurao do Apache.
13

configurao

consiste

em

adicionar

as

linhas

"SSLCertificateFile"

"SSLCertificateKeyFile", indicando a localizao dos arquivos .crt e .key recebidos. Em muitos casos, voc receber tambm um terceiro arquivo, com extenso "ca-bundle" ou similar, que usado em conjunto com uma terceira opo, a "SSLCertificateChainFile". Este terceiro arquivo contm uma combinao 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 tambm chamado de certificado intermedirio (Intermediate Certificate). Temos aqui um exemplo de configurao com as trs opes: <VirtualHost *:443> 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 </VirtualHost>

O processo de emisso do certificado inclui uma verificao de identidade, que justamente um dos principais papis da entidade certificadora, j que se qualquer um pudesse gerar certificados vlidos 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 verificao de titularidade via e-mail, onde voc deve confirmar um cdigo 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 burocrtico, 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 domnios ou subdomnios diferentes usando um nico servidor e um

14

nico endereo IP. Os nicos limitantes com relao ao volume de sites que possvel hospedar so os recursos de hardware do servidor e a banda disponvel. Servios de hospedagem compartilhada (os planos de shared hosting) utilizam este recurso de forma intensiva, de forma a espremer o maior nmero possvel de clientes em cada servidor, sem falar nos servios 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, memria, processamento e link) so divididos entre os sites hospedados, assim como vrios programas abertos simultaneamente disputam os recursos da mquina. Isso faz muito sentido no caso de sites pequenos ou mdios, que no possuem um nmero suficiente de visitas para saturarem, sozinhos, o servidor. Em geral, o servidor configurado de forma que os usurios tenham direito a uma determinada quota de espao 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 instalao de gestores de contedo como o WordPress. Entretanto, eles no podem instalar novos pacotes nem alterar a configurao do servidor. Feitas as apresentaes, vamos configurao.

12.

Instalando um servidor FTP

O servidor de FTP mais usado no Linux o Proftpd, disponvel em quase todas as distribuies. 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 segurana. A principal limitao do protocolo FTP que todas as informaes so transmitidas de forma no encriptada, como texto puro, incluindo os logins e senhas. Ou seja, algum capaz de sniffar a conexo, usando um programa como o Ethereal, veria tudo que est sendo transmitido. Para aplicaes onde necessrio ter segurana na transmisso dos arquivos, recomendvel usar o SFTP, o mdulo do SSH que permite transferir arquivos de forma encriptada. Apesar disso, se voc quiser apenas criar um repositrio com alguns arquivos para download ou manter um servidor pblico como o Ibiblio.org, ento o FTP mais interessante, por ser mais simples de usar.
15

No difcil instalar o Proftpd, basta procurar pelo pacote "proftpd" na distribuio usada, como em: # apt-get install proftpd # yum install proftpd ou: # urpmi proftpd

No Debian, durante a instalao do pacote do Proftpd, geralmente so 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 rpido, enquanto o inetd faz com que ele fique ativo apenas quando acessado, economizando cerca de 400 KB de memria RAM (que fazem pouca diferena hoje em dia). O modo standalone a opo recomendada. Voc ter tambm a opo de ativar o acesso annimo, que permite acessos annimos (somente leitura) na pasta "/home/ftp", onde voc pode disponibilizar alguns arquivos para acesso pblico. Nesse caso, os usurios fazem login no servidor usando a conta "anonymous" e um endereo de e-mail como senha. Caso prefira desativar o acesso annimo, apenas usurios com login vlido na mquina podero acessar o FTP. Depois de concluda a instalao, o servidor fica ativo por default, inicializado automaticamente durante o boot e pode ser controlado manualmente atravs do servio "proftpd", como em "/etc/init.d/proftpd start". Voc pode acessar outras mquinas da rede com servidores FTP ativos usando o GFTP, o Konqueror ou o prprio navegador. O FTP pode ser usado tambm como opo para transferncia 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 alteraes 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 opes do arquivo a opo Port, que permite alterar a porta usada pelo FTP. O padro usar a porta 21, mas muitos servios de banda larga bloqueiam as portas 21 e 80 para que os usurios no 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 padro do servidor, os usurios precisaro indicar manualmente a porta no cliente de ftp ou navegador, como em: ftp://200.234.213.23:2121. Em seguida, vem a opo MaxClients, que limita o nmero de conexes simultneas ao servidor FTP. Esta opo trabalha em conjunto com a limitao de banda (veja a seguir). Voc pode limitar os downloads de cada usurio a um mximo de 10 KB/s e limitar o servidor a 3 usurios simultneos, por exemplo. Assim, o FTP consumir um mximo de 30 KB/s do link do servidor. MaxClients 30

Se voc quiser limitar o acesso dos usurios, prendendo-os em seus respectivos diretrios home, adicione a linha "DefaultRoot ~" no final do arquivo. Lembre-se de que no Linux o "~" um curinga, que automaticamente substitudo pela pasta home do usurio que est logado: DefaultRoot ~

Para ativar a limitao de banda, adicione a linha "TransferRate RETR 8:10", onde o "8" pode ser substitudo pela taxa desejada, em KB/s, por usurio: TransferRate RETR 8:10

13.

FTP + TLS

possvel adicionar uma camada de segurana ao protocolo FTP ativando a encriptao via TLS. Nem todos os clientes de FTP suportam encriptao, de forma que a mudana criar dificuldades aos usurios menos tcnicos, mas, por outro lado, elimina o grande risco do FTP, evitando que as senhas possam ser capturadas durante as conexes.

17

Presumindo que voc j tenha instalado o pacote do Proftpd e feito a configurao bsica, o prximo passo instalar o pacote "openssl". Ele usado por diversos outros servios, por isso provvel que j esteja instalado: # apt-get install openssl

Em seguida, crie um diretrio dentro da pasta "/etc/proftpd" para armazenar os certificados, como em: # mkdir /etc/proftpd/cert

O prximo 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 opo "-days" especifica o tempo de validade do certificado. Nesse caso, estou gerando um certificado vlido 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 segurana, o ideal gerar certificados vlidos por apenas um ano ou dois e substitu-los mais regularmente. Depois de responder s perguntas feitas durante a gerao do certificado (pas, estado, cidade, nome da empresa, etc.), sero gerados os arquivos "proftpd.cert.pem" e "proftpd.key.pem" dentro da pasta "/etc/proftpd/cert", que correspondem ao certificado. O prximo passo alterar a configurao do Proftpd de forma que ele ative o uso da encriptao. Abra o arquivo "/etc/proftpd/proftpd.conf" e procure pelas linhas: <IfModule mod_tls.c> TLSEngine off </IfModule> Para ativar o uso do TLS, voc deve substitu-las por: <IfModule mod_tls.c> 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 </IfModule> Note que as opes "TLSRSACertificateFile" e "TLSRSACertificateKeyFile" indicam a localizao dos dois arquivos com o certificado. Se voc estiver usando uma pasta diferente da "/etc/proftpd/cert" para armazen-los, no esquea de indicar a localizao correta. Outra opo importante a "TLSRequired", que determina se o uso da encriptao ser obrigatrio ou no. Ao usar "TLSRequired on", como no exemplo, apenas os clientes que tiverem ativado o uso do SSL podero se conectar ao servidor, enquanto que ao usar "TLSRequired off" a encriptao passa a ser opcional. Depois de salvar a configurao, reinicie o servio: # /etc/init.d/proftpd restart

Para ativar a encriptao no cliente, necessrio usar o protocolo "FTP over SSL", em vez do protocolo FTP regular. O grande problema que o FTP over SSL no suportado por todos os clientes de FTP, o que dificulta seu uso. Em geral, mais fcil conseguir que os usurios migrem para o SFTP (veja detalhes sobre ele no captulo sobre o SSH), que suportado por um nmero maior de clientes de FTP do que conseguir fazer uma migrao completa para o TLS.

14.

Gerando estatsticas

O Webalizer um gerador de estatsticas de acesso para o servidor web. Ele loga todos os acessos feitos ao servidor, incluindo as pginas acessadas, o trfego gerado, os navegadores e os sistemas operacionais usados pelos clientes, entre outras informaes teis para entender os hbitos e interesses de seus visitantes. simples instalar o Webalizer, procure pelo pacote "webalizer" dentro do gerenciador de pacotes. O Webalizer no um servio que fica residente, mas sim um executvel que precisa ser chamado cada vez que quiser ver a pgina de estatsticas atualizada, basta cham-lo como root. Por padro, a pgina de estatsticas armazenada na pasta "webalizer/", dentro do seu servidor web.
19

O arquivo de configurao do Webalizer o "/etc/webalizer.conf". importante que voc revise o arquivo de configurao, indicando pelo menos a localizao correta do arquivo de log do Apache e alterando a pasta onde as estatsticas ficaro armazenadas, caso no queira que elas fiquem disponveis ao pblico. Voc pode armazen-las em uma pasta isolada no servidor web.

15.

Gestores de contedo

Com o MySQL instalado e o suporte a PHP ativo, voc tem pronta a estrutura necessria para instalar os diversos scripts de frum, chat, gestores de contedo 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 pgina de configurao atravs do navegador) para incluir as informaes sobre o servidor (base de dados a ser usada, login e senha, etc.) e concluir a configurao. Embora o Apache e o MySQL sejam bastante seguros, nada garante que os scripts desenvolvidos por terceiros tambm sero. O ponto fraco na segurana de qualquer site ou frum quase sempre a segurana do script usado. No escolha qual usar pensando apenas na facilidade de uso. Investigue o histrico de segurana e, uma vez escolhido qual usar, fique de olho nas atualizaes de segurana.

16.

Gestores de contedo: phpBB

O phpBB um sistema de frum bastante usado, que conta com um bom conjunto de recursos e um bom histrico de segurana. Ele ideal para fruns de pequeno e mdio porte mas tambm atende bem a fruns com um milho de mensagens ou mais, graas ao bom desempenho em conjunto com o MySQL. Para instalar, salve-o dentro do diretrio raiz do site ("/var/www" ) descompacte o arquivo e renomeie a pasta criada para o diretrio onde o frum deve ficar acessvel. No caso, est sendo instalando na pasta "forum/".

20

Depois de copiar os arquivos, acesse a pgina "/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 pgina usada para concluir a instalao. importante que voc acesse a pgina assim que os arquivos forem copiados, pois ela fica acessvel para qualquer um.

Figura 1: Instalando o phpBB, imagem de configurao 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 mquina separada para o banco de dados; - Porta do Servidor da Base de Dados: tambm fica em branco, a menos que voc tenha configurado o MySQL pra escutar em uma porta diferente da padro. - Nome da Base de Dados: indica a base de dados que ser usada pelo frum. Aqui, no caso, estamos usando "phpbb". Caso voc esteja instalando s para testar, pode usar tambm a base de dados "test", criada por padro. - O login e senha sero utilizados pelo phpBB para acessar o banco de dados. - Prefixo das tabelas na Base de Dados: destinada a situaes onde voc precisa compartilhar a mesma base de dados entre duas ou mais instalaes do phpBB;

21

Figura 2: configurando a URL do servidor As opes referentes ao servidor de e-mails so necessrias apenas para ativar o envio de notificaes de respostas aos posts iniciados pelos usurios. A opo "Cookie seguro" pode ser usada para melhorar a segurana no login dos usurios, mas ela pode ser usada apenas se voc ativou o suporte a HTTPS na configurao do servidor e ele est ativo na configurao do frum. O uso de HTTPS previne o roubo de senhas e outros tipos de vandalismos e melhora a segurana geral do frum, mas em compensao aumenta a carga de processamento do servidor, alm de tornar a configurao um pouco mais complexa, como vimos anteriormente. A opo "Protocolo do Servidor" indica se o frum ser acessvel via HTTP ou HTTPS, a opo "Nome do Domnio" indica o domnio 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 diretrio do site onde o frum est disponvel.

22

Figura 3: Painel administrativo do frum.

Voc tem ento acesso ao painel administrativo do frum, onde pode criar as salas e ajustar as demais opes do frum, alm de moderar mensagens, suspender ou banir usurios e assim por diante.

17.

Solucionando problemas com o charset

Um problema muito comum ao utilizar o Apache 2 sobre uma distribuio Linux recente os caracteres acentuados das pginas hospedadas aparecerem trocados por interrogaes, quadrados ou vrgulas em alguns navegadores. Isso acontece em situaes onde os arquivos das pginas 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 distribuies atuais. Para solucionar os problemas existem 3 opes: A primeira especificar o charset correto no header de cada pgina do site, o que feito adicionando uma tag "meta" dentro da seo "head" da pgina, como em: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

A segunda opo mudar a configurao do Apache para que ele passe a utilizar o ISO8859-1 como charset padro, em vez do UTF-8. edite o arquivo: /etc/apache2/apache2.conf

A Terceira opo possvel tambm converter os arquivos diretamente, usando o comando "recode", que est disponvel nos repositrios de praticamente todas as distribuies 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 tambm converter de uma vez diversos arquivos, como em: $ recode -d ISO-8859-1..UTF-8 *.html
23

18.

Mdulos do Apache

O principal ponto forte do Apache o grande volume de mdulos disponveis para ele. Sempre que voc precisa de algum recurso em especial, o primeiro passo fazer uma pesquisa na web por algum mdulo que desempenhe a funo desejada. Se o recurso que precisa for uma necessidade comum, muito provavelmente voc encontrar um mdulo j pronto que se prope a resolver o problema.

Mod_rewrite Tem a funo de reescrever URLs a partir de um conjunto de parmetros especificado por voc. O uso mais simples para ele quando voc muda o domnio de acesso do site e quer que todos os links sejam redirecionados para o novo endereo. Voc poderia solucionar isso de forma muito simples. O primeiro passo verificar se o mdulo est carregado na configurao do Apache. No caso das distribuies derivadas do Debian, voc pode ativ-lo usando o comando a2enmod: # a2enmod rewrite a configurao, feita atravs do arquivo ".htaccess", criado no diretrio raiz do site antigo . <IfModule mod_rewrite.c> RewriteEngine On RewriteRule (.*) http://www.dominio.com.br/$1 [R=301,L] </IfModule> A linha "RewriteEngine On" a responsvel por encaminhar as requisies 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 domnio. A pgina especificada pelo visitante ao acessar o site vira uma varivel ($1), que ento usada no parmetro seguinte, o "http://www.dominio.com.br/$1" onde indicado o novo domnio do site. Com isso, se o visitante tentar acessar o

"http://dominio.provedor.com.br/produtos/index.php?id=312" do exemplo anterior, a varivel "$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 cdigo de retorno que ser enviado ao cliente. No caso o usado foi o 301, que o cdigo de redirecionamento permanente.

mod_deflate No Debian, a configurao vai no arquivo: /etc/apache2/modsavailable/deflate.conf Uma configurao 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 configurao exige uma nica linha e a configurao padro no Debian: <IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/plain text/xml </IfModule>

19.
cada usurio

Usando quotas de disco

Atravs do Quota possvel limitar a quantidade de espao em disco disponvel para

No Quota existem dois limites que podem ser estabelecidos, o soft limit e o hard limit. O hard limit o limite de espao em si, digamos, 1000 MB para cada usurio. Quando o hard limit atingido, a gravao de novos arquivos bloqueada, se necessrio interrompendo a transferncia. O soft limit um limite de advertncia, 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 usurio 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, necessrio instalar os pacotes "quota" e "quotatool", que contm um conjunto de utilitrios usados para configurar e verificar as quotas de disco.

25

Com o mdulo carregado, o primeiro passo da configurao alterar a entrada no fstab referente partio, de modo que o suporte a quotas de disco seja ativado. Abra o arquivo "/etc/fstab", localize a linha referente partio e adicione os parmetros "usrquota,grpquota" logo aps o "defaults". Se voc est ativando o Quota para a partio "/home", por exemplo, a linha seria parecida com: /dev/hda2 /home ext3 defaults 0 2 Depois da alterao, 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 configuraes do Quota) no diretrio raiz da partio. Se voc est ativando o Quota para a partio montada no /home, ento os dois arquivos sero "/home/aquota.user" e "/home/aquota.group". importante que ambos fiquem com permisso de acesso "600", de modo que apenas o root possa acess-los ou fazer modificaes. Os comandos so executados com a partio montada: # touch /home/aquota.user # chmod 600 /home/aquota.user # touch /home/aquota.group # chmod 600 /home/aquota.group Feche todos os programas e servios que estejam acessando arquivos dentro da partio e remont-la (para que sejam aplicados os parmetros includos no fstab) usando o parmetro "-o remount" do mount, como em: # mount -o remount /home O quotacheck faz a verificao inicial dos arquivos e usurios, gerando uma tabela oculta que lista os arquivos de posse de cada usurio. Essa tabela usada pelo Quota para checar o espao ocupado por cada um e atualizada em tempo real conforme novos arquivos so gravados. Com tudo pronto, ative o uso das quotas usando o comando "quotaon", seguido da pasta onde est montada a partio, como em: # quotaon /home

26

21.

Bibliografia

MORIMOTO Carlos E. Servidores Linux. Guia Prtico. Sul Editores. 2008. http://www.hardware.com.br/livros/servidores-linux/capitulo-configurandoservidores-web.html, - acessado de 12/03/2012 21/05/2012

27

You might also like