Você está na página 1de 13

Anlise e Segurana de Servidores Web

Por Zilda Padovan

Monografia desenvolvida sob orientao da Professora Mestre. Luciana Alvim Santos Romani e apresentada ao Centro de Cincias Exatas, Ambientais e de Tecnologias da Pontifcia Universidade Catlica de Campinas, como Requisito para obteno do ttulo de Especialista em Anlise de Sistemas

1.INTRODUO Com a crescente utilizao da Internet para atividades como comrcio eletrnico, ensino distncia, transaes bancrias e tambm muitas empresas esto disponibilizando em seus sites um espao para a interao com os clientes. E com toda essa movimentao eletrnica pouco se discute sobre servidores web. Existem vrios softwares no mercado, mas independente de qual for utilizado necessrio fazer um estudo sobre seu funcionamento para configur-lo da forma mais segura possvel e tambm conhecer os protocolos de segurana que melhor se adaptam ao servidor escolhido. O Apache o servidor web mais utilizado no mundo, seguro, estvel , confivel e com todas estas caractersticas tambm um software livre. Este trabalho mostra como utilizar o Apache de forma segura, mostra tambm os protocolos de segurana mais utilizados com o Apache, que so o SSL, Apache-SSL e mod_ssl. E tambm mostra como utilizar melhor os recursos do Apache utilizando o servidor de aplicaes Tomcat, 2.SERVIDOR APACHE O servidor web mais utilizado mundialmente o Apache, e alm de ser gratuito possui verses para praticamente todos os Sistemas Operacionais utilizados hoje em dia. Neste captulo ser abordado o seu surgimento, os recursos nele existentes e a forma de licena utilizada. 2.1. Como surgiu o Apache No incio da web o NCSA (National Center for Super Computing Applications), da Universidade de Illinois, desenvolveu um servidor Web que no incio de 1995 era o mais popular entre os servidores web. Entretanto no final de 1994, Rob McCool, seu principal desenvolvedor deixou o NCSA. Com isto o projeto do servidor comeou a enfraquecer. Ao mesmo tempo, alguns webmaster que estavam usando o servidor Web do NCSA comearam a efetuar suas prprias correes (ou patches) para o servidor e tambm a distribu-las. Logo perceberam que seria necessrio a criao de um frum para administrar as correes e assim surgiu o Apache Group. O grupo utilizou como base o cdigo do servidor web do NCSA, aplicou as correes e aps vrios testes lanou , em abril de 1995, a primeira distribuio pblica do Apache a verso 0.6.2. E em dezembro de 1995 a verso 1.0 foi lanada. O Apache Group se expandiu e foi transformado em um grupo sem fins lucrativos que opera por meio da Internet.

2.2. O que o Apache O Apache um servidor web altamente configurvel com um projeto modular. Qualquer pessoa com alguma experincia em programao C ou Perl pode escrever um mdulo para executar uma funo especial. Ele possui tecnologia aberta e gratuita. Mas existe uma diferena entre o Apache e outros softwares livres, ele no coberto pela GPL (GNU Public Licence), possui direitos autorais publicados pelo Apache Groupe, no de domnio pblico nem shareware, o que no acontece com o Linux onde a GPL exige que quaisquer mudanas feitas no software sejam tornadas pblicas. As verses mais recentes, os pacotes de correes e as documentaes do Apache podem ser obtidas no site oficial do Apache Group www.apache.org. 2.3. Recursos existentes no Apache O Apache oferece muitos recursos, mas o maior deles e ser multiplataforma. Inicialmente o Apache era um servidor web para o sistema operacional Unix. Hoje existem verses de Apache para todos os sistemas operacionais Unix (Solaris, Linux, FreeBSD, etc..), sistemas operacionais Windows (Windows 2000,Windows XP, Windows NT, Windows 9X ) e outros sistemas operacionais como Amiga OS 3x e o OS/2. Dentre os recursos oferecidos pelo Apache destacam-se a indexao imaginativa de diretrios, a criao de aliases de diretrios, relatrios de erros de HTTP configurveis, execuo de SetUID de programas da CGI, gerenciamento de recursos para processos filhos, mapas de imagens do lado servidor e manuais on-line. Alm dos recursos, o Apache tambm possu caractersticas importantes tais como; Suporte para o protocolo HTTP 1.1, mais recente: O Apache um dos primeiros servidores web a integrar o protocolo HTTP 1.1, e tambm est pronto para todas as opes que o novo protocolo tem a oferecer. Por exemplo, antes um navegador web tinha que esperar por uma resposta do servidor web antes de poder emitir outro pedido, agora com o surgimento deste protocolo, um navegador web pode enviar pedidos em paralelo, o que poupa largura de banda. Configurao baseada em arquivos, simples, mas poderosa: O Apache no oferece uma interface grfica, ele possui um nico arquivo de configurao primrio, chamado httpd.conf, e para edit-lo s usar um editor de texto qualqer. Suporte para CGI (Common Gateway Interface): O Apache tem suporte para a CGI com a utilizao dos mdulos mod_cgi e mod_cgid. compatvel com o padro CGI 1.1 e tem suporte para depurao o que difcil de encontrar em outros servidores web. Suporte para FastCGI: Nem todos escrevem sua CGI em Perl; ento para tornar mais rpidas as aplicaes CGI que no foram escritos em Perl o Apache possui um mdulo chamado mod_fcgi que implementa um ambiente de FastCGI. Suporte para hosts virtuais: O Apache aceita tanto hosts baseados em IP quanto hosts virtuais nomeados. Suporte para autenticao de HTTP: Alm da autenticao bsica baseada na web, o Apache tambm realiza autenticao baseada em resumo de mensagens. Perl integrado: A linguagem Perl se tornou padro para o desenvolvimento de scripts CGI e o Apache possui um mdulo chamado mod_perl que possibilita carregar na memria um script CGI baseado em Perl e utilizado quantas vezes desejar sem ter que realizar as inicializaes associadas a uma linguagem interpretada como o Perl. Suporte para criao de scripts PHP: O Apache oferece suporte para PHP com a utilizao do mdulo mod_php. Suporte para servlets Java: A execuo de servlets Java possvel empregando-se o

ambiente Tomcat com o Apache. Servidor de proxy integrado: possvel transforar o Apache em um servidor proxy de cache (encaminhamento), porm a implementao atual do mdulo proxy opcional no admite proxy reverso ou o protocolo HTTP 1.1 mais recente. Status do servidor e logs personalizveis: O status do servidor pode ser monitorado por meio de um navegador web e os arquivos de log tambm podem ser personalizados de acordo com a preferncia de cada usurio. Suporte para SSI (Server-Side Includes): O Apache oferece um conjunto de incluses do lado servidor queaumenta bastante a flexibilidade do desenvolvedor de web sites. Suporte para SSL (Secured Socker Layer): possvel criar facilmente um web site de SSL usando OpenSSL e o mdulo mod_ssl do Apache. Segundo o site da Netcrat, uma importante empresa de pesquisas em servidores web que publica periodicamente a tabela Top Server, o Apache utilizado por mais de 60% dos servidores web no mundo. A figura 1.1 mostra nvel de utilizao do Apache entre os anos de 1995 e 2002.

figura 1.1 3.SERVIDOR APACHE TOMCAT O servidor Apache Tomcat, que foi desenvolvido pela Fundao Apache um servidor de Aplicaes que tambm utilizado como servidor web. Como servidor de aplicao, o Tomcat deve ser integrado a um servidor web como Apache, IIS, Websphere, etc... Neste captulo ser abordada a integrao com o Apache e tambm como configurar este ambiente para a execuo de uma aplicao web. 3.1. O que o Tomcat O Tomcat um servidor de aplicaes desenvolvido pela Fundao Apache utilizando tecnologia Java. O Tomcat foi desenvolvido para substituir o Servidor Jserv, que estava apoiado em tecnologias ultrapassadas. Sua principal caracterstica tcnica estar centrado na linguagem de programao Java, mais especificamente nas tecnologias de Servlets e de JSP (Java Server Pages). Como o Tomcat foi escrito em Java ele necessita que a verso J2SE (Java 2 Standard Edition) esteja instada no mesmo computador onde ele est executando para que possa compilar programas escritos em Java. Para se desenvolver uma tpica aplicao web que ser executada pelo Tomcat necessrio o

domnio das seguintes linguagens: Java os algoritimos da aplicao devem estar escritos em Java; HTML para criar pginas que sero visualizadas pelo browser do usurio; XML para gerar os dados de configurao que podem ser usados tanto pelo Tomcat como pela aplicao. Outra caracterstica importante do Tomcat que ele tem a habilidade de converter automaticamente qualquer programa JSP em um servlet equivalente, isto , ele capaz de criar cdigo fonte Java a partir de um documento HTML. Do ponto de vista prtico, o Tomcat pode ser usado isoladamente como um servidor web ou juntamente com outro servidor (como Apache). Na Segunda opo o Apache atende a requisies de pginas estticas enquanto que o Tomcat atende a requisies de pginas dinmicas, como ilustra a figura 3.1.

f igura 3.1

Uma outra utilizao do Tomcat como parte da verso J2EE (Java 2 Enterprise Edition) para criao de servidor de aplicao. Um exemplo desta utilizao o servidor de aplicao JBoss. O servidor JBoss um open source destinado a servir aplicaes Java, o terceiro mais utilizado, Linux e Apache so os dois primeiros. Em uma arquitetura web de trs camadas, o servidor JBoss ocupa a segunda camada, onde controla a inteligncia da aplicao organizando o trfego de dados entre o servidor web e o banco de dados. 3.2. Integrando Tomcat com Apache Para integrar o servidor de aplicao Tomcat com o servidor web Apache necessrio instalar um mdulo que implemente a interface entre o Tomcat e o Apache, este mdulo o mod_jk. O servidor de aplicao Tomcat est escrito em Java e o servidor web Apache, incluindo seus mdulos, est escrito em C. Como o mod_jk realiza a integrao destes servidores que foram desenvolvidos em linguagens diferentes? Quando o Tomcat executa, assim como cria um servio HTTP listener, ele tambm cria um nmero de processos worker que so responsveis pela execuo das servlets JSP. O mdulo mod_jk, por estar escrito em C, incapaz de interpretar classes Java diretamente, ento ele se comunica com os vrios processos worker criados pelo Tomcat atravs de uma conexo de rede. Estes processos possuem propriedades que os diferenciam um do outro, como mostra a tabela a seguir. Diferenas entre tipos de workers

Tipo de worker ajp12

Descrio Esse worker usa o protocolo ajpv12 para encaminhar solicitaes a workers do Tomcat fora de processos que esto usando o protocolo ajpv12. Esse worker usa o protocolo ajpv13 para encaminhar solicitaes a workers do Tomcat fora de processos que esto usando o protocolo ajpv12. Tendo em vista que o ajpv13 um protocolo mais novo que o ajpv12, o tipo de worker ajp13 pode alcanar melhor desempenho do que um worker do tipo ajp12. Alm disso, o ajp13 oferece suporte SSL. Usando a JNI (Java Network Interface), esse tipo de worker pode encaminhar solicitaes a workers do Tomcat em processos. Um worker no processo funciona dentro de uma JVM aberta no espao de memria prprio do Apache. Usando um esquema simples de balanceamento de carga por roundrobin, esse worker pode encaminhar solicitaes.

ajp13

jni

lb

Os protocolos ajpv12 e ajpv13 (Apache JServ Protocol version 1.2 e 1.3) so protocolos tratadores de conexo. O protocolo ajpv13 o mais recente e fornece melhor desempenho e tambm tem suporte para conectividade SSL (Secure Socket Layer). A figura 3.2 ilustra a funcionamento dos protocolos Ajp12/13.

Figura 3.2

Com a utilizao deste mtodo possvel executar o Apache (e o mod_jk) em um servidor e o Tomcat juntamente com os servlets e as JSPs em outro servidor. A execuo destes servidores em mquinas diferentes prov um nvel adicional de segurana, como o servidor Tomcat atrs de outro Firewall somente acessvel pelo servidor Apache. 3.3. Como executar uma aplicao web pelo Tomcat Antes de executar uma aplicao web no ambiente de servidor Tomcat devem ser instalados os componentes necessrios. O primeiro a ser instalado o JDK (Java Development Kit), neste kit esto inclusos os JRE (Java Runtime Environment) e os pacotes de desenvolvimento para escrever e compilar servlets Java. Os prximos a serem instalados e configurados so o Tomcat e o mdulo mod_jk. Por padro, o Tomcat atende solicitaes HTTP (servios web) na porta 8080, mas como o Apache e o Tomcat esto integrados usando o mdulo mod_jk ser necessrio desativar a porta 8080.

No Tomcat possvel controlar o que cada aplicao pode ou no fazer, para isto necessrio instalar o JSM (Java Security Manager) que impe restries de segurana em todo Java, incluindo applets, servlets, JSP e o prprio Tomcat. A tabela abaixo mostra os tipos de permisses que podem ser definidas.

4.PROTEGENDO OS SERVIDORES APACHE E APACHE TOMCAT Quando um servidor web instalado uma janela aberta para que outras pessoas acessem as informaes disponveis no web site. Esta abertura expe o servidor a acessos de pessoas bem intencionadas e tambm ao acesso de pessoas mau intencionadas. Os ataques podem ser feitos atravs de falhas na configurao do servidor, atravs de vulnerabilidades existentes na rede onde est o servidor. Tambm podem ocorrer atravs de vrus, trojans ou cavalos de troia. Neste captulo sero abordados a segurana do servidor web e os protocolos de segurana SSL, Apache-SSL e mod-ssl. E que para utilizar qualquer um destes protocolos necessrio que o protocolo OpenSSL seja instalado antes do protocolo escolhido. 4.1. Como proteger os servidores web Para proteger um servidor web contra ataques preciso entender e identificar os riscos existentes. No incio os web sites possuiam pginas HTML estticas e os riscos de segurana eram poucos porque para invadir estes web sites era preciso invadir o servidor web e isto era feito atravs do uso de uma senha fraca. Atualmente os web sites possuem pginas HTML dinmicas que dependem de aplicaes para realizar o atendimento ao cliente ou executar atividades de comrcio eletrnico. nesse momento que comeam os riscos com segurana. Existem vrios pontos de verificao da segurana que precisam ser verificados para melhorar a segurana de um servidor web. A figura 4.1 mostra um diagrama global de pontos de verificao de segurana.

Figura 4.1

Os trs pontos principais so: 1 A rede Deve-se verificar como a rede local est conectada Intenet, observando onde o servidor web est colocado. Uma alternativa de proteo a instalao de um firewall no roteador da internet ou a utilizao de um servidor proxy. Um servidor proxy leva uma solicitao de uma rede para outra rede sem conect-las e tambm gera registros de log que podem ser analizados posteriormente. 2 O sistema operacional utilizado O Apache funciona praticamente em todas as plataformas Unix e Windows. Aps a realizao da escolha do sistema operacional a ser instalado o recursos extras deveram ser desativados, por exemplo, se os servios de correio SMTP/POP ou servio FTP no forem utilizados eles devem ser desativados ou removidos por completo. Devem ser deixados apenas os servios necessrios. O sistema operacional deve ser mantido atualizado com as correes liberadas pelos desenvolvedores. 3 O software do servidor web Deve-se manter sempre as veso mais recente do Apache e do Tomcat. No se deve utilizar arquivos binrios de distribuidores, cada usurio deve compilar seus prprios arquivos binrios. Os arquivos binrios e o cdigo fonte do Apache e do Tomcat devem ser obtidos no site oficial do Apache (http://www.apache.org) . Quando o Apache configurado os itens que no forem ser utilizados devem ser desativados. Existem outras consideraes importantes como configurar o Apache para registrar os acessos e os erros, manter uma cpia autorizada do web site em outro equipamento para que possa ser restaurada em caso de problemas. 4.2. SSL O protocolo SSL (Secure Sockets Layer) foi desenvolvido pela Netscape Communications Corporation junto com a RSA Data Security, Inc., seu principal pbjetivo prover um canal seguro de comunicao entre aplicaes que garanta a privacidade e a integridade dos dados bem como a autenticao dos participantes.

O SSL amplamente implementado em conexes HTTP, muito embora a Netscape tenha tido a inteno de empreg-lo em outras aplicaes como o NNTP e o Telnet. Atualmente ele tambm est sendo empregado em protocolos como o SMTP, POP3 e IMAP. O protocolo SSL composto de dois nveis: - No nvel inferior existe um protocolo para transferncia de dados que utiliza uma variedade pr definida de combinaes de cifras e autenticaes, chamado de SSL Record Protocol. A figura 4.2.1 ilustra e o compara com a conexo HTTP padro. - No nvel superior existe um protocolo que inicia a autenticao e transfere as chaves de criptografia chamado de SSL Handshake Protocol.

HTTP com SSL

Figura 4.2.1

Uma sesso SSL iniciada da seguinte maneira: - No cliente (browser) o usurio requer um documento usando uma URL especial que inicia com https; - O cdigo do cliente reconhece o SSL e estabelece uma conexo atravs da porta TCP 443 no cdigo SSL do servidor; - O cliente ento inicia a fase de SSL handshake, usando o SSL Record Protocol como transporte. Neste ponto no h criptografia ou checagem da integridade nesta conexo. O SSL Handshake Protocol permite que cliente e servidor determinem os parmetros requeridos para uma conexo SSL, isto inclui a verso do protocolo, algoritmos de criptografia, autenticao opcional do servidor ou do cliente, e os mtodos de criptografia por chave pblica

para gerao dos segredos a serem compartilhados. Durante este processo todas as mensagens de handshake so encaminhadas para o SSL Record Layer para serem encapsuladas dentro de mensagens especiais SSL. A figura 4.2.2 ilustra o processo do SSL Handshake.

Figura 4.2.2 Aps a chave mestre ter sido determinada, o cliente e o servidor podem usa-la para criptografar os dados da aplicao. O SSL Record Protocol especifica o formato para estas mensagens. Geralmente elas incluem uma message digest que garante que elas no sero alteradas e toda a mensagem criptografada usando ciframento simtrico. Geralmente isto usa os algoritmos RC2 e RC4, embora os algoritmos DES, triple-DES e o IDEA tambm so suportados pela especificao. Existem duas opes de fonte aberta para se usar SSL com o Apache, uma opo utilizar o mdulo mod_ssl a outra opo utilizar a distribuio Apache-SSL. As duas solues exigem a OpenSSL, que uma implementao aberta da biblioteca SSL. 4.3. O mdulo mod_ssl Este mdulo fornece criptografia para o servidor Apache atravs dos protocolos SSL e TLS com a ajuda da implementao da biblioteca OpenSSL desenvolvida por Eric A Young e Tim Hudson. O pacote mod_ssl foi criado em 1998 por Ralf S. Engelschall e originalmente era derivado do pacote Apache-SSL, que foi desenvolvido por Ben Laurie. O pacote do mod_ssl consiste no mdulo do SSL (parte 1 da figura 4.3.1) e em um conjunto de mdulos para o Apache que adicionado o Extended API (EAPI) (parte 2 da figura 4.3.1) que

um pr requisito essencial para usar o mod_ssl, ou seja, o mod_ssl s pode ser utilizado quando o Apache conter a EAPI. Junto com a distribuio do mod_ssl fornecido um arquivo, chamado INSTALE , que traz informaes de como aplicar o mod_ssl no Apache

Quando o mod_ssl instalado ele fica localizado no subdiretrio src/modules/ssl, este subdiretrio faz parte da rvore e diretrios do Apache. Algumas caractersticas do mod_ssl: um software Open Source que utiliza licena padro BSD; Possui utilizao comercial e no comercial; Est disponvel para as plataformas Unix e Win32; Possui criptografia de 128 bits; Suporte para protocolos SSLv2, SSLv3 e TLSv1; Suporte completo para Dynamic Shared Object (DSO); baseado no certificado X.509 para autenticao de cliente e servidor 4.4. Apache-SSL O Apache-SSL um servidor Web seguro, baseado em Apache e em SSLeavy/OpenSSL, e sua licena do tipo BSD o que significa que pode ser usado livremente para propsitos comerciais e no comerciais. Suas principais caractersticas so; Encriptografia de 128 bits Autenticao Cliente Cdigo de origem completo Mdulo de extenso API 5.CONCLUSO O servidor web Apache, que foi estudado neste trabalho, o servidor web mais utilizado no mundo, cerca de 60% dos servidores utilizam o Apache. Por ser um software de fonte aberta e grtis, possui estabilidade e confiabilidade e de fcil compreenso.

Tambm foi estudado o servidor de aplicaes Tomcat, que pode ser utilizado como servidor web ou como servidor de aplicaes juntamente com outro servidor web. Com base neste estudo pode-se observar que um bom aproveitamento dos recursos do Apache com o Tomcat se d utilizando o Apache para atender as pginas estticas e o Tomcat para atender as pginas dinmicas. No quesito segurana foram citados os principais protocolos de segurana (SSL, Apache-SSL e mod_ssl), mas independente de qual protocolo for ser utilizado, o protocolo OpenSSL deve ser instalado primeiramente, pois ele a base dos protocolos citados acima. Com base neste estudo pode-se verificar que possvel ter um servidor web seguro, estvel, confivel utilizando software livre.

6.REFERNCIAS BIBLIOGRFICAS Kabir, M. J. Apache Server 2 A Bblia. Rio de Janeiro: Editora Campus, 2002. Captulo 1: p. 5-8, Captulo 17: p.506-517, Captulo 18: p.533-557 e Captulo 19: p. 585-608. Consulta as documentaes disponveis no site do Tomcat. Disponvel em: <http://jakarta.apache.org/tomcat/index.html>. Acesso em: 17 set. 2003. Consulta as documentaes disponveis no site do Apache. Disponvel em: <http://httpd.apache.org>. Acesso em: 25 set. 2003. Consulta ao resumo dos livros da editora OReilly. Disponvel em <http://safari.informit.com.>. Acesso em: 30 set. 2003. Consulta as documentaes disponveis no site do SSL. Disponvel em: <http://www.ssl.org>. Acesso em: 25 set. 2003. Consulta as documentaes disponveis no site do Apache-SSL. Disponvel em: <http://www.apache-ssl.org>. Acesso em: 10 out. 2003. Consulta as documentaes disponveis no site do mod_ssl. Disponvel em: <http://www.modssl.org>. Acesso em: 12 out. 2003. Consulta as documentaes disponveis no site OpenSouce. Disponvel em: <http://www.opensource.org>. Acesso em: 30 out. 2003.