Servidores Web - Apache

Share Embed Donate


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

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF