| PC GUIA # 53 - Destaques (Segurança @ Internet) |
No início de Fevereiro, alguns dos websites mais visitados em toda a Internet, estiveram incapazes de servir clientes, durante largas horas.
Esta notícia simples, encerra muita informação sobre Internet e vulnerabilidade em serviços distribuídos.
Toda a Internet funciona sobre um paradigma, dito de Cliente / Servidor [C/S]. A classificação C/S diz respeito ao software e não ao hardware, embora seja vulgar encontrar literatura que fala de «computadores servidores». Diz-se servidor o programa que presta um serviço; diz-se cliente o programa que recorre a um serviço prestado. Um só programa servidor, tem normalmente a capacidade de satisfazer muitos clientes, em simultâneo. Um só computador pode executar vários [programas] servidores e clientes, em simultâneo.
Entre outros factores, a capacidade de resposta de um [programa] servidor aos seus clientes, depende directamente dos recursos que o sistema operativo põe à sua disposição e do número de clientes a exigirem atenção, no momento. Quando é suposto um programa servir, eficazmente, muitos clientes, é natural instalá-lo num computador com recursos de hardware à altura do desafio. É por isso que muitas vezes se confunde a designação «computador servidor», com o software que presta o serviço.
Na Internet, todos os serviços (web, news, e-mail, ftp, gopher, icq, irc, etc...) funcionam de acordo com o paradigma C/S. Por exemplo, quando alguém visita uma página web qualquer, o browser que se estiver a utilizar, funciona como o software cliente, de um outro programa «especial», que está «do outro lado», e que se diz o servidor de web.
Conforme se deduz, há a possibilidade do servidor de web ter de atender mais pedidos, durante a satisfação do pedido original. Aliás, uma só pessoa faz, a cada visita, muitos pedidos de serviço, nem que seja, por exemplo, um por cada imagem.
Agora imagine-se um site como o da CNN ou o da Yahoo, sujeitos a milhares de visitantes por hora! Se cada um destes visitantes provocar 10 pedidos de serviço, são dezenas de milhares de ordens que se submetem ao servidor, a cada hora. Se cada um destes pedidos implicar o transporte de 1000 bytes, então estamos a falar de volumes de informação na ordem da dezena de milhões de bytes, por hora... que até é um tráfego modesto. Basta constatar que uma imagem, na web, é, em média, uma trintena de vezes maior do que o transporte referido... e que uma página pode ter várias imagens...
Enfim, suponho que o exemplo seja suficientemente ilustrativo para se perceber que um servidor de web está potencialmente obrigado a tráfegos muito intensos.
Ora, tudo tem um limite – o conceito de infinito é uma abstracção matemática, muito útil para lidar com realidades que estão muito para lá da nossa escala. Por outras palavras, é relativamente fácil causar problemas a um servidor de web: basta bombardeá-lo com pedidos incessantes, a um ritmo tal, que exceda a capacidade de resposta do software.
A um nível mais técnico, muitos servidores de web, são escritos recorrendo a uma API, dita de Sockets. A programação em Sockets implica especificar o tamanho de uma «fila de espera» para armazenar pedidos... Por enorme que seja a dimensão especificada (com os custos de memória daí resultantes), todos os pedidos que não possam ser contemplados na «fila de espera», são ignorados. Quando isso acontece, o cliente recebe o que se chama «uma negação de serviço». Foi isso que aconteceu com a CNN e com o Yahoo, para todos os clientes, a partir de certa altura.
O ataque aos websites referidos, fez-se utilizando um batalhão de computadores a correrem diversos clientes, dirigidos ao mesmo servidor, provocando exigências de tráfego, na ordem do 1 GB / segundo, que é algo de totalmente insuportável com a tecnologia C/S corrente. Correr servidores tem destes problemas.
Mas será que um utilizador que só execute software cliente corre algum risco? Por inesperada que seja, a resposta é sim.
Quanto alguém está ligado à Internet, o respectivo computador tem direito a um endereço de 32 bits, único em toda a Internet, capaz de identificar a máquina, de entre todas as outras, ligadas no momento. Isto significa que a Internet é [muito] finita, claro. Mas isso não é assunto para agora; o que é relevante é que, através desse endereço, envia-se e recebe-se correspondência. Tecnicamente, o endereço atribuido diz-se o IP.
Se alguém souber o seu IP, se o seu computador estiver a partilhar recursos sobre o protocolo TCP/IP, então esses recursos passam a estar acessíveis a esse alguém, não interessa quem. Assim, o primeiro passo para se proteger contra intrusos, na Internet, é certificar-se que não tem activa essa partilha.
Mas, mesmo sem partilhar nada, é altamente provável que o software que esteja a utilizar tenha certas vulnerabilidades, que permitem o acesso muito indirecto aos seus dados pessoais. Claro que neste outro cenário, a probabilidade de intrusão é quase desprezável e, a verificar-se, podemos estar certos que, do outro lado, está alguém com muita sapiência, ou então a explorar uma falha de domínio público, que você ainda não corrigiu, através de alguma patch.
Para se proteger de intrusos, o CD-GUIA oferece três aplicativos, muito semelhantes, dos quais o mais interessante, na minha perspectiva, é o Lockdown 2000.
Com o Lockdown 2000, você fica protegido contra uma colecção enorme de técnicas de invasão conhecidas, sendo ainda possível vigiar o acesso aos recursos partilhados, e limitá-los por IP, se for caso disso.
O NetBus Detective é um tanto menos acessível, mas permite enviar uma mensagem configurável ao invasor.
Por fim, o NukeNabber vigia até 50 portos de comunicação e permite identificar ataques sofisticados, que utilizam algumas mensagens do protocolo ICMP.
Qualquer um deles vai permitir uma protecção que, provavelmente, você não tinha. Isto é de particular interesse para quem tem ligação permanente à Internet.
Artur