Sirva uma Web mais segura



Documentos relacionados
Entendendo como funciona o NAT

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Guia de instalação para ambiente de Desenvolvimento LINUX

Senha Admin. Nessa tela, você poderá trocar a senha do administrador para obter acesso ao NSControl. Inicialização

UNIVERSIDADE FEDERAL DE PELOTAS

3 SERVIÇOS IP. 3.1 Serviços IP e alguns aspectos de segurança

Configurando um servidor DHCP

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

Sistema Operacional Unidade 13 Servidor Samba. QI ESCOLAS E FACULDADES Curso Técnico em Informática

Instalando o WordPress em localhost

MANUAL C R M ÍNDICE. Sobre o módulo de CRM Definindo a Campanha... 3

Programação Web Prof. Wladimir

ServerAdmin - Se o sistema detectar algo de anômalo, um mail será enviado a bazar@projeointegador.

Lazarus pelo SVN Linux/Windows

CHECK 2000 Instalação e Uso do Check 2000 Cliente Servidor com o ZENworks 2

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA

- Wireless e NTP - 272

Manual Captura S_Line

Arquitetura de Rede de Computadores

SERVIDOR WEB - APACHE SERVIDOR WEB - APACHE SERVIDOR WEB - APACHE 27/02/2012

Desenvolvendo Websites com PHP

A máscara de sub-rede pode ser usada para dividir uma rede existente em "sub-redes". Isso pode ser feito para:

Esse manual é um conjunto de perguntas e respostas para usuários(as) do Joomla! 1.5.

Omega Tecnologia Manual Omega Hosting

TUTORIAL: MANTENDO O BANCO DE DADOS DE SEU SITE DENTRO DO DOMÍNIO DA USP USANDO O SSH!

GUIA BÁSICO DA SALA VIRTUAL

INTRODUÇÃO: 1 - Conectando na sua conta

Passo a Passo da instalação da VPN

Instalação Apache + MySQL + PHPMyAdmin CentOS

Manual Administrador - Mídia System

Criando um script simples

Procedimentos para Reinstalação do Sisloc

Servidor proxy - Squid PROFESSOR : RENATO WILLIAM

Conceitos de relação de confiança

Manual do PolicyKit-kde. Daniel Nicoletti Tradução: Luiz Fernando Ranghetti

Na tela dele, clique no sinal de + ao lado do nome do seu computador, para expandi-lo. A seguir, expanda também o item "Sites da web".

Módulo e-rede OpenCart v1.0. Manual de. Instalação do Módulo. estamos todos ligados

Introdução ao Sistema. Características

Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho

Configurando o IIS no Server 2003

Despachante Express - Software para o despachante documentalista veicular DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1

Manual das funcionalidades Webmail AASP

Na Figura a seguir apresento um exemplo de uma "mini-tabela" de roteamento:

Instalando o Debian em modo texto

IP significa Internet Protocol. A Internet é uma rede, e assim como ocorre em qualquer tipo de rede, os seus nós (computadores, impressoras, etc.

Conexão rápida entre dois computadores em uma plataforma Linux

Módulo e-rede OpenCart v1.0. Manual de. Instalação do Módulo. estamos todos ligados

Tutorial - Monitorando a Temperatura de Servidores Windows

Instalando servidor Apache com MySQL e as linguagens ColdFusion e PHP. XAMPP (xampp-win installer.exe), veja aqui.

Professor: Macêdo Firmino Disciplina: Sistemas Operacionais de Rede

MANUAL DE INSTALAÇÃO E CONFIGURAÇÃO. Motor Periférico Versão 8.0

Conceitos de extensões Joomla!

Registro e Acompanhamento de Chamados

Comandos remotos via agente Zabbix

Sistemas Operacionais de Rede Linux - Gerenciamento de Arquivos

2 echo "PHP e outros.";

FACULDADE DE TECNOLOGIA SENAC GESTÃO DA TECNOLOGIA DA INFORMAÇÃO LABORATORIO DE REDE

Módulo e-rede VirtueMart v1.0. Manual de. Instalação do Módulo. estamos todos ligados

Operador de Computador. Informática Básica

Resolvendo problemas de conexão de rede wireless no pregão 83/2008

Conheça os principais comandos do Prompt do Windows; veja lista

ADMINISTRAÇÃO DE SISTEMAS OPERACIONAIS COTAS DE DISCO. Professor Carlos Muniz

Guia Site Empresarial

Fonte: - Illustration by Gaich Muramatsu

WEBDESIGN. Professor: Paulo Trentin Escola CDI de Videira

DarkStat para BrazilFW

Manual Comunica S_Line

Configurando um Grupo Doméstico e Compartilhando arquivos no Windows 7

ENDEREÇOS DE REDE PRIVADOS até até até Kernel

3. No painel da direita, dê um clique com o botão direito do mouse em qualquer espaço livre (área em branco).

Manual SAGe Versão 1.2 (a partir da versão )

ROTEIRO PARA INSTALAÇÃO DO BITVISE, CONFIGURAÇÃO DE CHAVES SSH, DEFINIÇÃO DAS PORTAS PARA OS TÚNEIS SSH E CONFIGURAÇÃO DO THUNDERBIRD

Como Configurar Catálogos de Correio Eletrônico com o MDaemon 6.0

Suporte ao Desenvolvedor:

Manual do Sistema "Fala Comigo - Sistema de Atendimento On-Line" Editorial Brazil Informatica

Manual do Painel Administrativo

UNIVERSIDADE FEDERAL DE GOIÁS CERCOMP (CENTRO DE RECURSOS COMPUTACIONAIS) TUTORIAL DE USO DO WEBMAIL - UFG

Google Drive. Passos. Configurando o Google Drive

Passo a passo da instalação do certificado da AC Raiz da Sefaz. Certificado AC Raiz Sefaz AL

PTT (Push to Talk - Pressione para Falar) Edição 1

QUALIDATA Soluções em Informática. Módulo CIEE com convênio empresas

FileZilla Server. O FileZilla Server é um ótimo servidor FTP, conta com diversas funções e fácil instalação e configuração.

Docas do Pará - Guia de Instalação

Estação Digital. Instalação do Gerenciador da Estação Digital

Firewall. Tutorial Firewall em Linux Acadêmicos: Felipe Zottis e Cleber Pivetta

Como medir a velocidade da Internet?

Java e JavaScript. Krishna Tateneni Tradução: Lisiane Sztoltz

GUIA MUDANÇA E FORMATAÇÃO DE SERVIDOR - SLIM

Instalação rápida do Expresso

Aloque 1024 MB de RAM para a VM. Crie um novo disco virtual. Figura 03. Figura 04.

Você pode testar se está tudo OK, abrindo um navegador no Debian Linux e acessando qualquer site.

Serviço Seguro de Mensagens Instantâneas

MANUAL DE UTILIZAÇÃO

Virtual Hosts. João Medeiros 1 / 12

1) Ao ser executado o código abaixo, em PHP, qual será o resultado impresso em tela?

Transcrição:

Hiawatha, um servidor web rápido e seguro REDES Sirva uma Web mais segura O Hiawatha é uma alternativa ao Apache simples, veloz e com ótimas funções de segurança. por Tim Schürmann Hugo Leisink estava frustrado. Já havia testado diversos servidores web, mas nenhum o convencera. Na sua opinião, as ferramentas de configuração eram complexas e a segurança era limitada. Sua preocupação com a situação dos servidores web o levou a desenvolver seu próprio servidor em janeiro de 2002. O resultado da história foi o Hiawatha, um servidor leve, com boa performance e algumas funções de segurança inovadoras. Seu tamanho diminuto de apenas 600 KB o torna perfeito para o uso em dispositivos embarcados e máquinas menos potentes. Instalação O Hiawatha é fácil de instalar: baixe o pacote na página do projeto [1] e digite os comandos típicos:./configure make sudo make install Os requisitos mínimos são um compilador C e a biblioteca Libc6 (também conhecida como glibc2) normalmente, fornecida pelos pacotes libc6-dev ou glibc-devel. Se alguma outra dependência estiver faltando, o script de configuração não o avisará ele simplesmente desabilitará o recurso correspondente. Portanto, é uma boa ideia dar uma olhada no log gerado pelo script. Se você não possui a biblioteca OpenS- SL (pacote libssl), precisará ficar sem criptografia nem conexões HTTPS. O suporte a XSLT (Extensible Stylesheet Language Transformations) também é opcional; é preciso o parâmetro --enable-xslt para o comando configure e a biblioteca libxslt para fazer o servidor usar XSLT. Um por todos O Hiawatha usa um único arquivo de configuração chamado httpd. conf, localizado no diretório /usr/ local/etc/hiawatha/. Esse arquivo possui padrões sensatos e várias linhas de comentários que podem ser usadas como base, mas é bom conferir rapidamente para garantir que as configurações estejam corretas antes de iniciar o servidor pela primeira vez. Além disso, você pode simplesmente criar um novo arquivo de configuração dinamicamente recurso que deixaria o Apache boquiaberto. Antes de salvar o novo arquivo, certifique-se de ter renomeado o arquivo httpd.conf original 56 http://www.linuxmagazine.com.br

Hiawatha REDES para o caso de precisar novamente das configurações antigas. Conexão O arquivo httpd.conf informa ao servidor web qual porta da interface de rede deve escutar as solicitações desta maneira: Binding { Port = 80 Interface = 192.169.2.123 } Este comando diz ao Hiawatha para usar o endereço IP 192.168.2.123 na porta padrão (80). Como mostra o exemplo, a estrutura do arquivo é realmente simples: o servidor espera uma configuração por linha, com um nome, o sinal de igual e o valor correspondente. Para determinar Listagem 1: Configuração mínima do Hiawatha 01 # Escutar requisições na porta 80 da interface cujo IP é 192.168.2.123 02 Binding { 03 Port = 80 04 Interface = 192.168.2.123 05 } 06 07 # Servir a seguinte página: 08 WebsiteRoot = /usr/local/var/www/hiawatha 09 Hostname = localhost uma nova interface, basta acrescentar outra seção Binding: Binding { Port = 443 Interface = 192.168.2.124 } Para o servidor escutar as solicitações em todas as interfaces de rede, uma única seção Binding sem a especificação Interface já é suficiente. Serviços A próxima coisa que o Hiawatha precisa saber é qual site deve ser servido. Para definir o site, é preciso primeiro especificar o subdiretório com os arquivos. No Apache, ele Quadro 1: Hosts virtuais Assim como muitos outros servidores web, o Hiawatha pode servir múltiplos sites independentes. Para permitir isso, são designados múltiplos domínios a um servidor físico; isso quer dizer que todas as solicitações feitas pelos navegadores são direcionadas para o mesmo servidor web. O servidor analisa a URL para determinar o site e o cliente vê vários hosts virtuais. Os provedores em particular gostam muito desta técnica, pois ela permite que sirvam vários sites com apenas um endereço IP. Para adicionar hosts virtuais no Hiawatha, é preciso estabelecer uma seção separada para cada host no arquivo httpd.conf: VirtualHost { } WebsiteRoot = /var/www/outrosite/wwwroot Hostname = www.sitevirtual.com... Dentro das chaves, é permitido usar as mesmas configurações disponíveis para a página principal do Hiawatha. Há até algumas funções disponíveis somente a hosts virtuais, incluindo o interessante mecanismo de segurança Prevent. Por exemplo: PreventCMDI = yes impede ataques de injeção de comandos fazendo o Hiawatha converter símbolos como \, e ; na URL e em dados POST para _. Como esta abordagem é muito rigorosa e impede o upload de binários, é desabilitada por padrão. A seguinte linha evita ataques do tipo cross-site request forgery (CSRF): PreventCSRF = yes Com isso, o host virtual impedirá que cookies enviados pelo navegador cheguem ao servidor por um link externo. A linha: PreventSQLi = yes combate ataques de injeção SQL inserindo uma barra na frente de cada plica ( ) na URL, nos dados POST e nos cookies. Este recurso funciona como as Magic Quotes do PHP; além disso, não se deve habilitar o PreventSQLi caso sejam usados scripts PHP. Assim como o PreventCSRF, essa função pode atrapalhar o upload de binários. A última função de segurança: PreventXSS = yes foi feita para evitar ataques do tipo cross-site scripting (XSS) substituindo os sinais <, > e na URL por _. Linux Magazine #62 Janeiro de 2010 57

REDES Hiawatha isso significa que, ou o Hiawatha não tem privilégios suficientes (para portas menores que 1024), ou um outro servidor já está escutando nas mesmas portas. É comum ter um outro servidor web concorrendo pela porta 80, pois muitas distribuições já vêm com o Apache pré-configurado. Neste caso, é possível alterar a porta ou parar o Apache: sudo /etc/init.d/apache2 stop Mesmo assim, pode surgir uma mensagem de erro: Warning: can t write PID file /usr/local/var/run/hiawatha.pid Figura 1 A página de teste do Hiawatha se parece muito com sua homepage. é chamado de DocumentRoot, ao passo que no Hiawatha é chamado de WebsiteRoot: WebsiteRoot = /usr/local/var/www /hiawatha A princípio, é permitido escolher qualquer diretório do disco; há um exemplo de index.html em /usr/local/var/www/hiawatha/. O servidor precisa do nome (ou do endereço IP) de acesso ao site: Hostname = www.meusite.com Este detalhe é particularmente importante se você estiver usando hosts virtuais (veja o quadro 1 para maiores detalhes). Se você usa endereços IPv6, pode até misturá-los aos IPv4. Pronto. Esta configuração mínima contém apenas seis linhas, ao passo que a listagem 1 mostra um arquivo httpd.conf completo. Os comentários iniciam com o símbolo #, como em scripts shell. Início Para verificar se a configuração está funcionando, execute o servidor com o seguinte comando: sudo hiawatha Caso apareça esta mensagem de erro: Error binding IP_address Listagem 2: Criação de certificado SSL X.509 01 openssl genrsa -out serverkey.pem 2048 02 openssl req -new -x509 -days 3650 -key serverkey.pem -out server.crt 03 echo >> serverkey.pem 04 cat server.crt >> serverkey.pem 05 echo >> serverkey.pem 06 rm -f server.crt Esta mensagem diz que o Hiawatha não tem privilégios de acesso ao diretório /usr/local/var/run/. Uma causa comum para isso é a ausência desse diretório, mas é possível criálo manualmente ou conviver com a mensagem de erro. O servidor web armazenará os IDs dos processos no arquivo de PID especificado, apesar de ser possível indicar uma localização diferente: PIDFile=<filename> Abrir o navegador e apontá-lo para localhost informa se o Hiawatha está rodando corretamente. Veja a página de teste na figura 1. O comando: sudo killall hiawatha parará o Hiawatha. Logicamente, este método é um tanto brutal e pouco elegante, caso você planeje iniciar o servidor no processo de inicialização de sua distribuição. O script hiawatha incluído no subdiretório extras/, dentro do diretório do código-fonte, apresenta um método melhor para iniciar e parar o Hiawatha, mas é preciso estar ciente de alguns obstáculos. Primeiramente, o script supõe que o servidor seja capaz de criar um arquivo de PID. Além disso, o script foi feito para o Debian. Para executá-lo em qualquer outra distribuição, é preciso modificar os caminhos nas primeiras quatro linhas a fim de adaptá-lo às condições presentes. 58 http://www.linuxmagazine.com.br

Hiawatha REDES Um passeio Como é de se esperar de um servidor moderno nesses tempos de Web 2.0, o Hiawatha suporta a execução de programas CGI. Logicamente, o administrador precisa, antes de tudo, habilitar esse recurso: ExecuteCGI = yes e depois especificar qual sufixo de arquivo os programas CGI terão: CGIextension = cgi No caso de scripts, como aplicações em PHP ou Python, o Hiawatha também precisa do nome e do caminho do interpretador: Figura 2 Com suporte ao interpretador PHP, grandes portais como o Joomla podem rodar sobre o Hiawatha até com mais velocidade do que no Apache. CGIhandler = /usr/bin/php5 -cgi:php,php5 Quando o servidor encontra um arquivo.php ou.php5, ele roda o interpretador php5-cgi localizado no diretório /usr/bin/ e lhe entrega o script. O mesmo processo é usado para outras linguagens: CGIhandler = /usr/bin/perl:pl CGIhandler = /usr/bin/python:py Para impedir que programas CGI maliciosos ou defeituosos derrubem ou sequestrem o computador, é preciso restringir seu tempo de execução. A princípio, cinco segundos devem bastar: SystemLogfile = /usr/local/var /log/hiawatha/system.log AccessLogfile = /usr/local/var /log/hiawatha/access.log ErrorLogfile = /usr/local/var/log /hiawatha/error.log GarbageLogfile = /usr/local/var /log/hiawatha/garbage.log A variável SystemLogFile registra as mensagens do daemon; o acesso fica no AccessLogfile e os erros em ErrorLogfile. A última linha recolhe o lixo isto é, solicitações HTTP erradas ou incompletas. Geralmente elas significam tentativas de invasão. Até agora, o servidor está escutando apenas na porta 80. Para isso, o Hiawatha precisa de privilégios de root, porém não é uma boa ideia deixar o programa rodando como root. Para evitar isso, o Hiawatha muda o usuário para nobody assim que começa a rodar. A opção de configuração ServerId pede ao servidor para alternar para outro usuário: ServerId = www-data Recursos restritos O próximo passo é diminuir o perigo de ataques DoS (negação de serviço, na sigla em inglês), reduzindo TimeForCGI = 5 Segurança Até agora, as configurações produziram um servidor básico, com poucos recursos extravagantes. Ainda não mostramos um recurso avançado de segurança do Hiawatha. Entretanto, antes do passeio por essas outras opções, faça o servidor conversar com os arquivos de log: Listagem 3: Duas regras com o UrlToolkit 01 UrlToolkit { 02 ToolkitID = varioustests 03 Match ^/php/ Return 04 Match /index.php4(.*) Rewrite /index.php$1 05 } 06 07 UrlToolkit { 08 ToolkitID = secret 09 Call varioustests 10 Match /secret(.*) DenyAccess 11 } Linux Magazine #62 Janeiro de 2010 59

REDES Hiawatha o número de conexões simultâneas suportadas pelo Hiawatha total ou por endereço IP: ConnectionsTotal = 150 ConnectionsPerIP = 10 Também é uma boa ideia limitar o tamanho do cache interno para, digamos, 15 MB: CacheSize = 15 É possível, inclusive, fazer com que o servidor restrinja a variação do tamanho dos arquivos de cache entre CacheMaxFilesize (em KB) e CacheMinFilesize (em bytes): CacheMaxFilesize = 128 CacheMinFilesize = 256 Netiqueta Na opinião de Hugo Leisink, desenvolvedor do Hiawatha, os clientes precisam se comportar bem caso desejem uma resposta do servidor. Para punir clientes que enviam solicitações HTTP malformadas ou muito longas, o Hiawatha recorre ao método medieval de banir. Por exemplo, com o comando: BanOnGarbage = 300 o servidor se recusará a responder, durante 300 segundos, qualquer cliente que enviar uma solicitação fora dos padrões, ao passo que com: BanOnMaxReqSize = 60 o cliente será banido por 60 segundos no caso de uma solicitação de tamanho ilegal. É possível evitar flooding com o seguinte comando: BanOnFlooding = 10/1:35 Este comando banirá por 35 segundos um cliente que enviar mais de 10 solicitações em um segundo. Esta também é útil: BanOnCMDi = 60 Com isso, o cliente será banido por 60 segundos ao tentar um ataque de injeção de comandos. O mesmo pode ser aplicado a ataques de injeção SQL: BanOnSQLi = 70 O Hiawatha também produz listas negras e brancas: BanlistMask = allow 192.168.2.111, deny 192.168.0.0/16 Se um cliente banido for realmente mal intencionado e tentar acessar o Hiawatha nesse período, este comando reiniciará seu exílio: RebanDuringBan = yes As chaves do reino Sempre é recomendável usar uma conexão SSL segura para dados confidenciais. Antes que o Hiawatha possa falar HTTPS, no entanto, será necessário um certificado SSL X.509, que pode ser comprado de terceiros (isto é, Autoridades Certificadoras) ou criado por meio do OpenSSL [2]. Os comandos para isso encontramse na listagem 2. Tabela 1: Ações com o UrlToolkit Ação Match regex ação Call toolkit_id Descrição Executa ação se regex combinar com a URL. Executa o conjunto de regras toolkit_id. DenyAccess Nega o acesso (erro 403). Exit FastCGI fcgi_id Goto toolkit_id Redirect url RequestURI exists isfile isdir Return Exit Return Rewrite subst [max_loop] [Continue Return] Skip número Para a avaliação de todas as regras. Usa o servidor FastCGI fcgi_id e termina a avaliação. Executa a regra toolkit_id e para. Redireciona o cliente para a URL url. Se a URL existir como arquivo ou diretório, para a avaliação. Retorna da regra atual. Substitui a string encontrada max_loop vezes por subst e para a avaliação. Pula número linhas. 60 http://www.linuxmagazine.com.br

Hiawatha REDES O resultado é um arquivo serverkey.pem, que precisa ficar junto com o httpd.conf (geralmente em / usr/local/etc/hiawatha). Conexões HTTPS normalmente são dirigidas à porta 443, e o servidor precisa escutar nessa porta e pegar o certificado ao receber uma solicitação: Binding { Port = 443 Interface = 192.168.2.123 UseSSL = yes ServerKey = /usr/local/etc/ hiawatha/serverkey.pem } Esta entrada diz que a porta 443 é a única que pode ser usada pelos navegadores que pedirem o protocolo HTTPS. Além disso, esse certificado só é válido para a combinação determinada de porta e interface. Para usá-lo em todas as conexões seguras, coloque a última linha (ServerKey) após o fechamento da seção Binding. Prejuízo mútuo Programas CGI são alvos habituais de ataque, talvez por ter defeitos ou porque o desenvolvedor tenha relaxado na segurança. Para evitar que esses programas enlouqueçam ou derrubem o servidor, o Hiawatha pode usar um wrapper CGI para controlá-los. O wrapper dará aos programas CGI um ID de usuário diferente, caso necessário. Para configurar essa jaula, é preciso, em primeiro lugar, selecionar seu diretório raiz de CGI (CGI root). Esse diretório contém todos os programas e scripts CGI. Seguindo a listagem 1, o diretório seria /usr/ local/var/www/hiawatha/cgi/. O wrapper executará os programas e scripts somente a partir deste diretório. Em seguida, é preciso outro arquivo de configuração, chamado cgi-wrapper.conf. Este arquivo reside no mesmo diretório que Listagem 4: Configuração completa (httpd.conf) 01 #Configuração básica 02 Binding { 03 Port = 80 04 Interface = 192.168.2.123 05 } 06 07 Binding { 08 Port = 443 09 Interface = 129.168.2.123 10 UseSSL = yes 11 ServerKey = /usr/local/etc/hiawatha/serverkey.pem 12 } 13 14 WebsiteRoot = /usr/local/var/www/hiawatha 15 Hostname = localhost 16 17 #Arquivos de log 18 SystemLogfile = /usr/local/var/log/hiawatha/system.log 19 AccessLogfile = /usr/local/var/log/hiawatha/access.log 20 ErrorLogfile = /usr/local/var/log/hiawatha/error.log 21 GarbageLogfile = /usr/local/var/log/hiawatha/system.log 22 23 #Cache 24 CacheSize = 15 25 CacheMaxFilesize = 128 26 CacheMinFilesize = 256 27 28 #CGI 29 ExecuteCGI = yes 30 CGIextension = cgi 31 CGIhandler = /usr/bin/php5-cgi:php,php5 32 TimeForCGI = 5 33 #Wrapper usado: 34 WrapCGI = wrap_id 35 36 #Funções de segurança 37 ServerId = www-data 38 ConnectionsTotal = 150 39 ConnectionsPerIP = 10 40 BanOnGarbage = 300 41 BanOnMaxReqSize = 60 42 BanOnFlooding = 10/1:35 43 BanOnCMDi = 60 44 BanOnSQLi = 70 45 BanlistMask = allow 192.168.2.111, deny 192.168.0.0/16 46 RebanDuringBan = yes 47 48 #UrlToolkit 49 UrlToolkit { 50 ToolkitID = varioustests 51 Match ^/php/ Return 52 Match /index.php4(.*) Rewrite /index.php$1 53 } 54 55 UrlToolkit { 56 ToolkitID = secret 57 Call varioustests 58 Match /secret(.*) DenyAccess 59 } 60 61 UseToolkit = secret Linux Magazine #62 Janeiro de 2010 61

REDES Hiawatha httpd.conf em /usr/local/etc/ hiawatha/. O Hiawatha já traz um exemplo de cgi-wrapper.conf com todas as linhas comentadas. O arquivo cgi-wrapper.conf primeiro diz ao wrapper quais programas podem ser executados fora do CGI root. A lista de programas autorizados pode incluir interpretadores das linguagens usadas nos scripts: CGIhandler = /usr/bin/php5-cgi CGIhandler = /usr/bin/perl Note que o nome CGIhandler não é uma boa escolha, pois essa variável guarda muito pouco em comum com a de mesmo nome em httpd.conf. Com o wrapper configurado, seus programas CGI estarão seguros. Wrap = wrap_id; /usr/local/var /www/hiawatha/cgi; tim O nome da jaula está no começo da linha. É preciso memorizá-lo porque ele terá que ser incluído no arquivo httpd.conf. Após o primeiro ; vem o nome do diretório CGI root e, por fim, o nome (ou ID) do usuário com o qual os programas serão executados. Se o nome do diretório contiver o símbolo de pipe, como na linha: É possível definir múltiplos wrappers em cgi-wrapper.conf e então usá-los para diferentes hosts virtuais (veja o quadro 1). Tipografia O último destaque é o UrlToolkit, que funciona como o mod_rewrite do Apache. Cada URL lida pelo servidor é comparada a padrões prédefinidos. No caso de uma combinação, o Hiawatha desempenhará uma ação previamente definida. Qualquer expressão regular pode servir como padrão de teste [2]. A listagem 3 mostra um exemplo. A listagem 3 parece muito mais complexa do que realmente é. Ela define dois conjuntos de regras. O ToolkitID para a primeira regra é varioustests, ao passo que, para a segunda, é secret. A regra varioustests verifica se a URL começa com /php/. Em caso positivo, o Hiawatha para qualquer outro teste com esse conjunto de regras (Return). Em caso negativo, ele verifica se a URL inicia com index.php4. Neste caso, o servidor substitui a string por /index.php isto é, retira o 4 do fim do nome do arquivo. A segunda regra, secret, começa chamando sua colega varioustests (Call) e depois bloqueia o acesso ao subdiretório /secret/. A tabela 1 mostra as ações possíveis. Após especificar regras em httpd.conf, basta dizer ao servidor qual delas usar: UseToolkit = secret A listagem 4 mostra uma configuração completa do Hiawatha. Conclusões Além das funções de segurança descritas neste artigo, o Hiawatha possui vários outros recursos interessantes. Por exemplo, o servidor atua melhor que seus colegas com a compressão Gzip e ainda oferece a opção de um manipulador de erros interno. Se o cliente solicitar um arquivo XML e existir o XSLT equivalente, o Hiawatha automaticamente fará a transformação XSL, se necessário. Caso a velocidade de execução de scripts CGI esteja baixa demais, habilite o mecanismo FastCGI. O Hiawatha também compreende bem os privilégios de acesso aos diretórios. É possível até aumentar a velocidade de upload para tipos específicos de arquivos. Para aprender mais sobre o Hiawatha, verifique seu conciso HowTo [2]. Ele discute até a opção de combinar o servidor com os mecanismos de segurança AppArmor e Grsecurity [3]. n Wrap = wrap_id; /usr/local/var /www/hiawatha cgi; tim o wrapper CGI usará a parte anterior ao pipe como um diretório chroot e colocará todo o restante nesse ambiente. Neste caso, é preciso garantir que os manipuladores de CGI estejam disponíveis no diretório chroot. O wrapper CGI está pronto para o trabalho. Basta ordenar que o Hiawatha o utilize, adicionando o seguinte ao arquivo httpd.conf: WrapCGI = wrap_id Mais informações [1] Servidor web Hiawatha: http://www.hiawatha-webserver.org/ [2] Howto do Hiawatha: http://www.hiawatha-webserver.org/howto/ [3] Grsecurity: http://www.grsecurity.net/ Gostou do artigo? Queremos ouvir sua opinião. Fale conosco em cartas@linuxmagazine.com.br Este artigo no nosso site: http://lnm.com.br/article/3211 62 http://www.linuxmagazine.com.br

Quer falar com os 30.000 profissionais de TI com maior nível de conhecimento técnico do mercado nacional? Então anuncie na Linux Magazine! Segundo dados do Instituto Verificador de Circulação*, a Linux Magazine é atualmente a segunda revista mais vendida para profissionais de TI do mercado editorial brasileiro. Além disso, é a revista que tem o público mais qualificado no quesito técnico. Nossa combinação exclusiva de conteúdo avançado com uma abordagem prática faz da Linux Magazine a publicação preferida de quem toma decisões e faz recomendações para compra de produtos e contratação de serviços. Anuncie conosco e fale com esse público. Para anunciar, entre em contato: anuncios@linuxmagazine.com.br 11 4082.1300 *Comparação de circulação para os últimos três meses de publicações nacionais voltadas ao segmento de TI.