Dicas de Segurança em Servidores

Neste post de hoje vamos abordar tópicos de segurança em  servidores (algumas se aplicam também em desktops).

Em um servidor, uma boa política de segurança inclui reduzir o número de serviços ativos, mantendo apenas os serviços realmente necessários à operação do servidor, fechar todas as portas não utilizadas no firewall, restringir as permissões de acesso dos usuários que tem acesso ao servidor ao mínimo necessário para que executem suas tarefas e manter as atualizações de segurança em dia, sobretudo nos serviços diretamente expostos a conexões externas.

Um servidor web, por exemplo, poderia ter abertas apenas as portas 22 TCP (SSH, para acesso remoto), 53 UDP (DNS), 80 TCP (HTTP) e 443 TCP (HTTPS), o que deixaria apenas três pontos de ataque: o servidor web propriamente dito, o servidor DNS e o servidor SSH. Não é possível fechar todas as portas (já que, por definição, o servidor precisa receber conexões dos clientes e desempenhar suas funções), de forma que é importante manter os serviços disponíveis religiosamente atualizados com relação a brechas de segurança.

Em um desktop doméstico é possível manter todas as portas de entrada fechadas no firewall (ou no gateway da rede), permitindo apenas tráfego de saída e tráfego de respostas a conexões iniciadas por você, o que praticamente eliminaria o problema dos ataques diretos. Entretanto, é comum que você precise manter algumas portas abertas (como as usadas por jogos e por programas P2P), o que cria pontos de ataque, tornando necessário manter os aplicativos atualizados, assim como no caso dos servidores.

Outro problema são as formas indiretas de ataque, como vírus e trojans enviados por e-mail, arquivos temperados com malwares, distribuídos através de redes P2P e sites de download, páginas web que exploram vulnerabilidades do Internet Explorer para executar controles ActiveX, ou mesmo links para trojans enviados por e-mail ou postados em redes sociais.

Mesmo que seu PC ou notebook esteja seguro, existe a possibilidade de que os seus dados sejam capturados ao utilizar o micro de alguém ou, principalmente, ao utilizar um Cybercafé. Evite digitar qualquer tipo de senha ou dados confidenciais em qualquer computador que não seja seu. Em situações onde isso é realmente necessário, uma opção é dar boot usando uma distribuição linux live-CD.

A questão das senhas é outro tema importante, já que elas são o ponto fraco de qualquer sistema. Utilize sempre boas senhas, misturando letras e números e com pelo menos 8 (de preferência 12) caracteres, jamais utilize palavras como senha e troque-as frequentemente.

O ideal é que ninguém além de você tenha acesso físico ao seu PC. Mesmo que você deixe o micro desligado, ou protegido por uma proteção de tela, é possível instalar programas dando boot através de um DVD ou pendrive.

Se você administra um servidor ou permite que outros usuários acessem a máquina remotamente, exija que todos utilizem boas senhas. Muitas brechas de segurança permitem obter acesso de root partindo de um simples login de usuário. Por isso, além de exigir o uso de boas senhas, você deve dar logins de usuário apenas à pessoas de confiança.

Outra boa ideia é "esconder" seus servidores, alterando suas portas default. Por exemplo, um servidor de FTP escutando na porta 21 (a default) seria facilmente descoberto pelo atacante, que, a partir daí, poderia tentar explorar algum tipo de vulnerabilidade no programa para obter acesso. Mas, se você configurá-lo para operar na porta 44756, por exemplo, já seria muito mais complicado que alguém o descobrisse. Seria preciso fazer uma varredura de portas completa, que demora várias horas para perceber que a porta 44756 está aberta, desestimulando o ataque.

Caso você esteja usando um programa de detecção de intrusões, como o Snort, a varredura de portas iria disparar o alarme, fazendo com que você tivesse conhecimento do ataque antes mesmo do atacante descobrir quais portas estão abertas para tentar fazer qualquer coisa.

Mais um erro comum é deixar servidores de FTP, web, SSH, etc. disponíveis para toda a Internet enquanto você só precisa deles dentro da sua rede interna. Se você tem duas placas de rede, ou mesmo uma placa de rede e um modem, é fácil filtrar o tráfego permitindo que apenas os acessos vindos dos clientes locais sejam aceitos. Isso pode tanto ser feito na configuração do servidor (como no caso do Samba e do Apache) quanto na configuração do firewall.

O ideal em termos de segurança é não acessar a web diretamente nos desktops. Sempre que possível, acesse por trás de uma conexão compartilhada, através de um servidor Linux com o firewall ativo, ou através de um modem ADSL configurado como roteador. Direcione apenas as portas realmente necessárias para os clientes.

Todas essas medidas representam a chamada segurança passiva. As brechas de segurança são como balas perdidas, ninguém pode dizer onde surgirá a próxima. Mesmo um sistema com um excelente histórico de segurança pode revelar um bug monstruoso a qualquer momento. A ideia é impedir ou pelo menos dificultar a exploração de qualquer eventual brecha.

Imagine que amanhã alguém descubra uma brecha grave no SSH, por exemplo. Se você deixa o serviço ativo no seu servidor e ainda por cima aberto ao mundo, você estaria com sérios problemas. Mas, se você mantém o serviço desativado, ou disponível apenas para a sua rede interna, a brecha não afetaria diretamente o seu sistema, pois seria preciso passar primeiro pelo firewall para ter acesso a ele.

OS ATAQUES MAIS COMUNS

Exploits
Este é um termo genérico para descrever pequenos utilitários ou exemplos de código que podem ser usados para explorar vulnerabilidades específicas. Eles podem ser tanto usados de forma "stand alone", ou seja, serem usados diretamente, quanto serem incorporados em vírus, cavalos de tróia, ferramentas de detecção de vulnerabilidades e outros tipos de programas.

Utilitários de detecção de vulnerabilidades como o Nessus, por exemplo, incorporam um grande número de exploits para brechas conhecidas. Durante o teste, ele verifica se o serviço ou programa vulnerável está ativo e, caso esteja, simula um ataque contra ele, usando o exploit correspondente. Com isso, é possível verificar se a versão utilizada é vulnerável a ele.

Trojans
Os trojans (cavalos de tróia) são uma forma de invadir "de dentro pra fora", fazendo com que o próprio usuário execute um programa, ou acesse uma página web que se aproveite de vulnerabilidades do navegador. Eles são a forma mais usada para obter o controle de PCs domésticos, já que não dependem da existência de portas abertas ou do uso de serviços vulneráveis. O trojan pode instalar uma backdoor (que permite que o micro seja acessado remotamente), instalar um keytrap (para capturar senhas e outras informações digitadas no teclado) ou mesmo instalar um vírus que passe a se replicar dentro da rede local.

Muitos backdoors são capazes de abrir conexões reversas, onde o PC dentro da rede local é que estabelece a conexão com um servidor remoto. Como a maioria dos firewalls são configurados para bloquear apenas tráfego de entrada, e não tráfego de saída, a conexão reversa permite que o PC dentro da rede local seja acessado remotamente. Uma vez dentro do perímetro da rede, o atacante terá muito mais facilidade para atacar outras máquinas, já que dentro da rede local a segurança será muito mais fraca. O próprio VNC suporta o uso de conexões reversas, como veremos em detalhes no capítulo 6.

Embora os trojans sejam mais comuns no Windows, existem também trojans para Linux e outros sistemas. No caso do Linux, o tipo mais perigoso são os rootkits, softwares que exploram um conjunto de vulnerabilidades conhecidas para tentar obter privilégios de root na máquina afetada. Caso alguma delas esteja presente, o software pode assumir o controle da máquina mesmo se executado usando uma conta normal de usuário.

Uma vez instalado, o rootkit vai alterar binários do sistema, instalar novos módulos no Kernel e alterar o comportamento do sistema de várias formas para que não seja facilmente detectável. O processo do rootkit não aparecerá ao rodar o "ps -aux" (que lista os processos ativos), o módulo que ele inseriu no Kernel para alterar o comportamento do sistema não vai aparecer ao rodar o "lsmod", e assim por diante.

Eavesdropping
Em conexões não encriptadas, ou encriptadas usando algoritmos fracos, é possível que um atacante consiga capturar os dados transmitidos através da rede caso tenha acesso à mídia de transmissão (possa plugar um cabo no hub da rede, ou esteja dentro da área de alcance da rede wireless, por exemplo). Com isso, é possível obter senhas, conteúdo de mensagens enviadas e outras informações confidenciais, que podem ser usadas mais tarde para propósitos diversos.

Redes locais baseadas em hubs burros ou redes wireless sem encriptação ou que ainda utilizam o WEP são alvos fáceis, já que bastaria plugar um notebook no hub, ou colocá-lo dentro da área de alcance do ponto de acesso para capturar todas as transmissões. Ao usar um switch o risco é menor, já que eles transmitem os frames apenas para os destinatários corretos (e não em todas as portas como os hubs). Entretanto, os switchs mais baratos são vulneráveis a ataques de MAC Flooding e de ARP Spoofing, que consistem em, respectivamente, "inundar" o switch com um grande volume de frames com endereços MAC falseados, de forma a esgotar a memória disponível e fazer com que ele passe a enviar o tráfego para todas as portas e a induzir o switch a enviar o tráfego para a máquina do atacante, em vez de enviá-los à máquina correta.

Redes wireless que utilizam o WAP e o WPA2 também são muito mais seguras que redes abertas, já que embora seja possível capturar o tráfego encriptado da rede, quebrar o algoritmo de encriptação para obter acesso aos dados é bastante demorado. Existe também a possibilidade de capturar os dados em qualquer outro ponto da rede, como, por exemplo, quando eles passam pelo roteador da operadora responsável pelo link de acesso, mas isso é muito mais raro, pois exigiria que o atacante tivesse acesso à rede interna da empresa.

De qualquer forma, a melhor solução para evitar a captura dos dados é utilizar protocolos encriptados de transmissão, como o SSH e o HTTPS. O SSH utiliza por default o algoritmo 3DES, que consiste no uso de três chaves independentes com 64 bits cada uma (que é combinado com um sistema mais forte de encriptação, com até 4096 bits, usado durante o login), enquanto o SSL (usado no HTTPS) utiliza um algoritmo de encriptação de 128 bits.

Phishing
Diferente dos ataques baseados na exploração de brechas de segurança, os ataques de phishing utilizam engenharia social para tentar levar o usuário a revelar informações confidenciais, tais como senhas de banco, números de cartão de crédito, ou mesmo transferir fundos diretamente. Para isso, são usados e-mails e páginas web forjadas, que se fazem passar por páginas de bancos e lojas, entre outras artimanhas. Por serem fáceis de aplicar e resultarem em um ganho financeiro direto, os ataques de phishing tem se tornado assustadoramente comuns.

Um dos truques mais antigos é enviar e-mails simulando um contato do banco ou de alguma loja da qual o usuário seja cliente, simulando algum tipo de recadastramento. O e-mail pode pedir que seja enviada senha atual, juntamente com a nova, por exemplo. Muitas vezes, informações coletadas em redes sociais ou em pesquisas podem ser usadas para tornar os e-mails mais realísticos, aumentando o índice de sucesso.

Outros tipos de ataques consistem em alterar links em sites e redes sociais, de forma a encaminhar os visitantes a sites forjados. Uma cópia da página de um banco pode solicitar o login e senha e depois exibir uma mensagem dizendo que o sistema está em manutenção e pedindo para o usuário tentar novamente depois de alguns minutos, por exemplo (tempo que o falsário pode usar para acessar a conta real e transferir fundos, utilizando as senhas fornecidas pelo usuário).

Normalmente, as transferências são feitas usando uma mula, ou seja, um laranja que recebe o dinheiro ilegalmente transferido, ou recebe produtos comprados usando números de cartão de crédito roubados e os repassa ao fraudador, ficando com uma comissão. Isso permite que uma única pessoa aplique golpes em diversos países diferentes, ficando impune na maioria das vezes.

Denial of Service (DoS)
Os ataques DoS, ou ataques de negação de serviço são feitos não com o objetivo de invadir o sistema, mas sim com o propósito de torná-lo indisponível. O que os torna preocupantes é que eles podem ser lançados contra qualquer host conectado à Internet. Não é necessário que serviços com vulnerabilidades de segurança estejam ativos.

Por exemplo, é possível tornar um servidor web indisponível enviando um grande volume de requisições, aparentemente válidas, para acesso às páginas hospedadas. Se o servidor não possuir nenhum tipo de filtro ou regra de firewall que limite o volume de páginas servidas a um único endereço, ele passará a simplesmente tentar responder a todas as requisições, o que saturará o link ou consumirá todos os recursos do servidor, fazendo com que ele deixe de responder a requisições de usuários válidos.

Se o servidor possuir uma quota de tráfego (na maioria dos planos de dedicated hosting existe uma quota de tráfego de 1 ou 2 TB mensais), o atacante pode simplesmente simular um volume constante de requisições (sobretudo download de arquivos hospedados no servidor) de forma a esgotar a quota de trafego e assim fazer com que o servidor fique indisponível.

Mesmo mecanismos destinados a aumentar a segurança do servidor podem ser usados. Por exemplo, se o servidor é configurado para bloquear logins no SSH depois de um certo volume de tentativas de acesso usando senhas incorretas, o atacante pode bloquear o acesso de usuários válidos tentando repetidamente acessar o servidor usando logins variados. Por não saber as senhas, ela não conseguirá acesso ao servidor, mas em compensação pode conseguir disparar o sistema de bloqueio, tornando o servidor temporariamente indisponível para os usuários legítimos.

O tipo mais famoso de ataque DoS é o DDoS, ou "Distributed denial of service" (ataque distribuído de negação de serviço), onde o ataque é lançado usando centenas ou milhares de hosts (situados em locais diferentes) simultaneamente. Nesse caso, o ataque é especialmente difícil de conter, pois é necessário bloquear as requisições provenientes de cada um dos endereços usados antes que cheguem ao servidor. Ou seja, o bloqueio precisa ser feito pela empresa que administra os links de acesso e não no servidor propriamente dito.

Para lançar um ataque DDoS, é necessário ter à disposição um número muito grande de máquinas, que precisam ser invadidas previamente usando vulnerabilidades diversas, formando uma botnet. Os hosts controlados são chamados de zumbis (zombie computers) e continuam desempenhando suas tarefas de forma aparente normal, mesmo enquanto estão sendo usadas em ataques.

Servidores hospedados em grandes datacenters, universidades ou em órgãos governamentais são especialmente efetivos, já que são normalmente ligados a links muito rápidos, mas o arroz de festa são máquinas domésticas, rodando versões vulneráveis do Windows, que podem ser infectadas em massa usando trojans e vírus.

Um pequeno aplicativo de controle é instalado em cada uma das máquinas, de forma que elas possam ser controladas através de algum ponto central, como um canal de IRC ou uma página web secreta. Tipicamente, os servidores (que utilizam links dedicados, com IP fixo e melhor conectividade) são usados como controladores da botnet, coordenando a operação dos PCs domésticos.

Depois de obter o controle de um número suficiente de máquinas, o atacante precisa de apenas alguns comandos para fazer com que o ataque seja lançado. Com um número suficiente de máquinas à disposição, é possível derrubar qualquer servidor conectado à grande rede.

Além de ser usada em ataques DDoS, a botnet pode ser usada para diversos propósitos, incluindo o envio de spam (estima-se que mais de 50% dos spams sejam enviados a partir de zumbis), distribuição de arquivos, hospedagem de páginas ilegais, fraudes contra sistemas de venda de anúncios (as máquinas são usadas para simular cliques nos anúncios) e qualquer outra atividade lucrativa. A época romântica, das pixações de páginas e ataques massivos contra sites conhecidos deu lugar a quadrilhas organizadas, que usam as máquinas invadidas para ganhar dinheiro.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Qual o Resultado? *