• Nenhum resultado encontrado

Uma forma comum de autenticação em redes wireless é o uso de portais

cativos. Um portal cativo usa um navegador web padrão para fornecer ao

usuário uma maneira de apresentar suas credenciais de login. Ele também pode ser usado para apresentar informações ao usuário (como uma Política de Uso) antes de permitir a continuidade do acesso. O uso de um navegador web, ao invés de um programa específico para a autenticação, permite que o portal cativo funcione com praticamente todos os laptops e sistemas operacionais. Portais cativos são tipicamente utilizados em redes abertas que não tenham outros métodos de autenticação (como WEP ou filtros MAC).

Para começar, um usuário wireless seleciona a rede em seu laptop. O computador irá solicitar e receber um endereço DHCP. O usuário, então, abre seu navegador para acessar algum site na Internet.

Figura 6.1: O usuário solicita uma página web e é redirecionado.

Ao invés de receber a página solicitada, o usuário é apresentado a uma tela de login. Esta página solicita que o usuário digite seu nome de acesso e senha,

simplesmente clique em um botão de “login” após ler a política de uso, digite os números de um cartão pré-pago ou forneça qualquer outra credencial requerida pelo administrador de rede. Tais credenciais são verificadas pelo access point ou outro servidor da rede. Qualquer outro tipo de acesso à rede é bloqueado até que as credenciais sejam verificadas.

Figura 6.2: As credenciais do usuário são verificadas antes que o acesso posterior à rede seja permitido. O servidor de autenticação pode ser o próprio access point,

outra máquina da rede local ou um servidor em qualquer lugar, via Internet.

Uma vez autenticado, o usuário tem acesso aos recursos da rede e é, normalmente, direcionado ao site originalmente solicitado.

Figura 6.3: Após a autenticação, o usuário pode acessar o resto da rede.

Os portais cativos não fornecem criptografia ao usuário wireless, apenas confiando no endereço MAC e IP do cliente como identificadores únicos. Uma vez que isto não é, necessariamente, muito seguro, muitas implementações irão requerer novas autenticações periódicas. Freqüentemente, isto é feito, de forma automática, em uma pequena janela de popup que é minimizada assim que o usuário é autenticado pela primeira vez.

Já que não fornecem criptografia forte, os portais cativos não são uma boa escolha para redes que precisam ser travadas de forma a permitir acesso

apenas a usuários confiáveis. Eles prestam-se mais a cafés, hotéis e outros locais de acesso público, onde usuários casuais de rede são esperados.

Na configuração de uma rede pública, ou semi-pública, técnicas de criptografia como WEP e WPA são, efetivamente, inúteis. Simplesmente, não há uma maneira de distribuir chaves públicas ou compartilhadas para um grande número de pessoas sem comprometer a segurança de tais chaves. Nestas configurações, uma simples aplicação, como um portal cativo, fornece um nível de serviço que fica entre algo completamente aberto ou completamente fechado.

Projetos populares de hotspots

• Chillispot (http://www.chillispot.info/). O Chillispot é um portal cativo designado à autenticação de usuários a partir de uma base de dados de credenciais, como o RADIUS. Combinado a uma aplicação como a phpMyPrePaid, a autenticação baseada em cartões pré-pagos pode ser implementada facilmente. Você pode baixar o phpMyPrePaid de http:// sourceforge.net/projects/phpmyprepaid/.

• WiFi Dog (http://www.wifidog.org/). O WiFi Dog fornece um pacote completo de portal cativo e autenticação que ocupa muito pouco espaço (tipicamente, abaixo de 30kb). Da perspectiva do usuário, ele não requer nenhum popup ou suporte a javascript, o que permite que seja usado em uma grande variedade de dispositivos wireless.

• m0n0wall (http://m0n0.ch/wall/). O m0n0wall é um sistema operacional completo, embarcado, baseado no FreeBSD. Ele inclui um portal cativo com suporte a RADIUS, assim como um servidor web PHP.

• NoCatSplash (http://nocat.net/downloas/NoCatSplash/) O NoCatSplash fornece uma página de apresentação (splash page) personalizada para seus usuários, requerendo que eles cliquem em um botão de “login” antes de acessarem a rede. Isto é útil para fornecer a identificação e os contatos das pessoas de suporte à rede e exibir regras para o seu acesso. Ele consiste em uma solução muito simples em situações onde você necessita prover informações e enfatizar a política de uso para usuários de uma rede aberta.

Privacidade

A maioria dos usuários está inocentemente ignorante do fato que seu email privado, conversas em salas de bate-papo e mesmo senhas, com freqüência, circulam abertamente por dezenas de redes desconhecidas antes de chegarem a seu destino final na Internet. Independente do quão enganados possam estar, os usuários ainda têm alguma expectativa de privacidade quando usam computadores em rede.

A privacidade pode ser conseguida mesmo em redes não confiáveis, como em pontos de acesso público à Internet. O único método comprovado para a proteção da privacidade é o uso de criptografia forte fim-a-fim (end-to-end

Técnicas de criptografia como WEP e WPA tentam endereçar questões de privacidade no nível dois, a camada de comunicação de dados. Isto realmente protege contra espiões observando uma conexão sem fio, mas tal proteção acaba no ponto de acesso. Caso o cliente wireless use protocolos inseguros (como o POP ou SMTP para o envio e recebimento de email), então os usuários que estejam na rede do access point podem ainda registrar sessões e ter acesso a dados sensíveis. Como mencionado anteriormente, os usuários WEP também sofrem com o fato de compartilharem uma chave privada. Isto significa que usuários legítimos podem espionar uns aos outros, uma vez que todos conhecem a chave privada.

Com o uso de criptografia até o ponto final da conexão remota, os usuários podem, de forma elegante, contornar inteiramente o problema. Estas técnicas funcionam bem mesmo em redes públicas não confiáveis, onde espiões estão observando e possivelmente manipulando dados vindos do access point.

Para assegurar a privacidade dos dados, uma boa criptografia fim-a-fim deve fornecer as seguintes funcionalidades:

• Verificação de autenticidade da extremidade remota. O usuário deve ser capaz de saber, sem dúvida alguma, que a extremidade remota é aquela que diz ser. Sem esta autenticação, um usuário pode entregar dados sensíveis a qualquer um que se passe por um receptor ou serviço legítimo. • Métodos de criptografia forte. O algoritmo de criptografia deve ser

submetido a escrutínio público e os dados não devem ser facilmente descriptografados por um terceiro. Não há segurança na obscuridade, e a criptografia forte é ainda mais forte quando o algoritmo é amplamente conhecido e está sujeito a revisão. Um bom algoritmo, com uma chave de proteção grande e apropriada, dificilmente será quebrado por qualquer esforço durante nosso tempo de vida, usando a tecnologia atual. • Criptografia de chave pública. Mesmo não sendo um requerimento

absoluto para a criptografia fim-a-fim, o uso de uma chave pública de criptografia, ao invés de uma chave compartilhada, pode garantir que os dados de um indivíduo permaneçam privados, mesmo que a chave de outro usuário do serviço esteja comprometida. Isto também resolve alguns problemas com a distribuição de chaves para usuários em redes não confiáveis.

• Encapsulamento de dados. Um bom mecanismo de criptografia fim-a- fim protege os dados o máximo possível. Isto pode variar da proteção de uma simples transação de email até o encapsulamento de todo o tráfego IP, incluindo buscas ao DNS e outros protocolos de suporte. Algumas ferramentas de criptografia simplesmente fornecem um canal seguro que outras aplicações possam utilizar. Isto permite que os usuários executem qualquer programa que desejem e, ainda assim, fiquem protegidos por uma criptografia forte, mesmo que os próprios programas não ofereçam este suporte.

Esteja ciente de que as leis relativas ao uso de criptografia variam bastante em cada local. Alguns países tratam a criptografia como se fosse munição, e

podem exigir uma permissão formal, a inspeção e guarda de chaves privadas, ou mesmo proibir seu uso. Antes de implementar qualquer solução que envolva criptografia, certifique-se de que o uso desta tecnologia é autorizado em sua localidade.

Nas sessões seguintes, vamos tratar de algumas ferramentas específicas que podem fornecer boa proteção para os dados de seus usuários.

SSL

A tecnologia de criptografia fim-a-fim mais amplamente disponível é a

Secure Sockets Layer (Camada de Conexão Segura), conhecida simplesmente

como SSL. Implementada em praticamente todos os navegadores web, a SSL utiliza criptografia de chave pública e uma infra-estrutura confiável de chaves públicas (public key infrastructure—PKI ) para proteger a comunicação de dados na web. Sempre que você visita um site cujo endereço inicia-se com https (ao invés de http), você está usando SSL.

A implementação SSL em muitos navegadores inclui uma coleção de certificados de fontes confiáveis, chamadas de autoridades certificadoras (AC, ou CA para o termo em inglês, certificate authorities)2. Estes certificados são chaves criptográficas usadas para verificar a autenticidade de websites. Quando você acessa um site que usa SSL, o navegador e o servidor trocam certificados entre si, antes de qualquer coisa. O browser verifica que o certificado fornecido pelo servidor está de acordo com o nome do mesmo no DNS, que o mesmo ainda não expirou e que está assinado por uma autoridade certificadora confiável. O servidor, opcionalmente, verifica a identidade do certificado do navegador. Se os certificados estão aprovados, o navegador e o servidor negociam uma chave principal de sessão (master session key) usando os certificados que foram trocados para protegê-la. Esta chave é, por sua vez, usada para criptografar toda a comunicação até que o navegador desconecte-se do site. Este tipo de encapsulamento de dados é conhecido como um túnel.

O uso de certificados com uma PKI não apenas protege a comunicação do acesso de espiões, mas também previne contra os chamados ataques de “homem do meio” (man-in-the-middle – MITM). Em um ataque deste tipo, um usuário malicioso intercepta a comunicação entre o navegador e o servidor. Ao apresentar certificados falsificados tanto para o navegador quanto para o servidor, o usuário malicioso consegue manter estabelecidas duas conexões criptografadas simultaneamente. Conhecendo o segredo de ambas as conexões, o usuário malicioso pode observar e manipular os dados que passam entre o servidor e o navegador.

O uso de uma boa PKI previne este tipo de ataque. Para ter sucesso, o usuário malicioso teria que apresentar um certificado ao cliente, assinado por uma autoridade certificadora confiável. A não ser que a AC tenha sido comprometida (uma possibilidade muito remota) ou o usuário seja enganado de forma a aceitar um certificado forjado, o ataque não será possível. Por isto, é vital que os usuários entendam que ignorar avisos de certificados impróprios ou

2. N. do T. - Para saber mais sobre Autoridades Certificadoras e a Infra-estrutura de chaves públicas no Brasil, visite o site https://www.icpbrasil.gov.br/

expirados é muito perigoso, especialmente quando usam redes sem fio. Ao clicar o botão “ignorar” quando avisado pelo navegador, os usuários ficam abertos a muitos ataques potenciais.

Figure 6.4: Espiões terão que quebrar a criptografia forte para conseguir monitorar o tráfego em um túnel criptografado. A conversação dentro de

um túnel é idêntica à qualquer outra conversação sem criptografia.

SSL não é apenas usado para a navegação web. Protocolos inseguros de email como IMAP, POP e SMTP podem tornar-se seguros ao passarem por um túnel SSL. A maioria dos clientes modernos de email suportam IMAPS e POPS (IMAP e POP seguros), assim como SMTP protegido por SSL/TLS. Caso seu servidor de email não forneça suporte SSL, você ainda pode usar esta proteção com o uso de um pacote como o Stunnel (http://www.stunnel.org/). O SSL pode ser usado para tornar seguro praticamente qualquer serviço executado sobre o protocolo TCP.

Figura 6.5: O “homem do meio” efetivamente controla tudo o que o usuário vê, podendo gravar e manipular todo o tráfego. Sem uma infra-estrutura de chave pública para verificar a autenticidade das chaves, apenas a criptografia

forte não é proteção suficiente para este tipo de ataque.

SSH

Muitas pessoas pensam no SSH como uma alternativa segura ao telnet,

assim como scp e sftp como os equivalentes seguros do rcp e ftp. Mas o

SSH é muito mais do que um shell remoto criptografado. Como o SSL, ele usa criptografia forte com chave pública para validar o servidor remoto e criptografar

os dados. Ao invés da PKI, ele utiliza uma memória de “impressão digital” (fingerprint) de chaves que é verificada antes que uma conexão seja autorizada. Ele pode usar senhas, chaves públicas ou outros métodos para a autenticação do usuário.

Muitas pessoas também não sabem que o SSH pode atuar também como um túnel de criptografia genérico, ou mesmo como um proxy de criptografia para a web. Através do estabelecimento inicial de uma conexão SSH para uma localização próxima, confiável, de um servidor remoto (ou no próprio servidor), protocolos inseguros podem ser protegidos contra espionagem e ataques.

Mesmo que esta técnica seja um tanto avançada para muitos usuários, arquitetos de rede podem usar SSH para criptografar o tráfego entre links não confiáveis, como links ponto-a-ponto wireless. Como as ferramentas estão livremente disponíveis e podem ser usadas sobre o padrão TCP, qualquer usuário treinado pode implementar conexões SSH por si próprio, conseguindo sua própria criptografia fim-a-fim sem a intervenção do administrador.

O OpenSSH (http://openssh.org/) é provavelmente a implementação mais popular em plataformas do tipo Unix. Implementações livres como Putty (http:// www.putty.nl/) e WinSCP (http://winscp.net/) estão disponíveis para o ambiente Windows. O OpenSSH também roda no Windows sobre o pacote Cygwin (http://www.cygwin.com/). Os exemplos abaixo assumem que você está usando a versão mais recente do OpenSSH.

Figura 6.6: O túnel SSH protege o tráfego web até o servidor SSH.

Para estabelecer um túnel criptografado de uma porta na máquina local para uma porta no site remoto, use a chave -L. Por exemplo, suponha que você

queira encaminhar todo o tráfego do proxy web sob um link criptografado para um servidor squid em squid.example.net. Faça o encaminhamento (forward) da porta 3128 (a porta padrão do proxy) usando o seguinte comando:

ssh -fN -g -L3128:squid.example.net:3128 squid.example.net

A chave -fN instrui o ssh para ficar no modo background (liberando a linha de comando) após a conexão. O -g permite que outros usuários de seu segmento de rede conectem-se à máquina local usando-a para a criptografia sobre o link não confiável. O OpenSSH irá usar uma chave pública para a autenticação, caso você tenha configurado uma, ou irá solicitar uma senha de acesso para o site remoto. Você também pode configurar seu navegador para conectar-se à porta local 3128, como seu serviço de proxy web. Todo o tráfego web será, então, criptografado antes da transmissão para o site remoto.

O SSH pode também atuar como um proxy dinâmico SOCKS4 ou SOCKS5. Isto permite que você crie um web proxy que fique responsável pela criptografia, sem a necessidade de configurar o Squid. Note que este não é um proxy de armazenamento local (caching proxy), ele simplesmente criptografa o tráfego. ssh -fN -D 8080 remote.example.net

Configure seu navegador para usar SOCKS4 ou SOCKS5 na porta local 8080 e siga navegando.

O SSH pode criptografar os dados em qualquer porta TCP, incluindo as que são usadas para email. Ele pode até comprimir os dados enviados, o que pode diminuir a latência em links de baixa capacidade.

ssh -fNCg -L110:localhost:110 -L25:localhost:25 mailhost.example.net A chave -C liga a compressão. Você pode adicionar tantas regras de encaminhamento de portas (port forwarding) quanto desejar, usando a chave -L

múltiplas vezes. Note que, a fim de conectar-se a uma porta menor que a 1024, você deverá ter privilégios de usuário root na máquina local.

Estes são apenas alguns exemplos da flexibilidade do SSH. Com a implementação de chaves públicas e usando o SSH como agente de encaminhamento, você pode automatizar a criação de túneis criptografados por dentro de sua rede wireless, protegendo sua comunicação com criptografia forte e autenticação.

OpenVPN

O OpenVPN é uma implementação livre, de código aberto de VPN (Virtual

Private Network – Rede Virtual Privada), construída com criptografia SSL. Há

implementações de clientes OpenVPN para uma grande variedade de sistemas operacionais, incluindo Linux, Windows 2000/XP e mais recentes, OpenBSD, FreeBSD, NetBSD, Mac OS X e Solaris. Como uma típica VPN, encapsula todo o tráfego (incluindo DNS e outros protocolos) em um túnel criptografado, e não apenas uma porta TCP. A maioria das pessoas consideram-no mais simples de entender e configurar do que o IPSEC.

O OpenVPN também tem algumas desvantagens, como uma latência relativamente alta. Alguma quantidade de latência é inevitável, uma vez que toda a criptografia/descriptografia é feita em espaço de usuário, mas com o uso de computadores relativamente novos em cada uma das pontas do túnel pode minimizar isto. Mesmo podendo usar chaves compartilhadas tradicionais, o OpenVPN realmente destaca-se com o uso de certificados SSL e autoridades

certificadoras. O OpenVPN tem muitas vantagens que o tornam uma boa opção para a segurança fim-a-fim.

Algumas das vantagens incluem:

• É baseado em um sistema de protocolo de criptografia comprovadamente robusto (SSL e RSA);

• É relativamente fácil de configurar;

• Funciona entre várias plataformas diferentes; • É bem documentado;

• É livre e de código aberto.

O OpenVPN necessita conectar-se em uma única porta TCP ou UDP no site remoto. Uma vez estabelecida a conexão, ele pode encapsular todos os dados até a camada de rede, ou mesmo até a camada de link de dados, caso sua solução necessite disto. Você pode usá-lo para criar conexões VPN robustas entre máquinas individuais, ou simplesmente usá-lo para conectar roteadores sobre uma rede sem fio não confiável.

A tecnologia de VPN é complexa e seu detalhamento está um pouco além do escopo desta sessão. É importante entender como VPNs encaixam-se em sua estrutura de rede a fim de garantir a melhor proteção possível, sem causar problemas não intencionais para a sua organização. Há muitos recursos disponíveis online que tratam da instalação do OpenVPN no servidor e no cliente. Nós recomendamos este artigo do Linux Journal: http:// www.linuxjournal.com/article/7949 assim como o HOWTO oficial: http:// openvpn.net/howto.html

No documento Redes sem fio no Mundo em Desenvolvimento (páginas 179-187)