Sistemas de Firewall e Defesa de Perímetros - Parte III

Por Alexandre Freire
Nesta semana, nossa série de textos sobre "Sistemas de Firewall e Defesa de Perímetros" traz um artigo exemplificando as funcionalidades e vulnerabilidades associadas aos principais serviços que são permanentemente explorados para ataques, através do desenvolvimento de ferramentas e exploits visando o comprometimento de um ambiente a partir de fraquezas destes serviços.
A seguir, destacamos os principais serviços exemplificando importantes vulnerabilidades que estão diretamente associadas aos mesmos. São recomendações para bloqueio de serviços que podem aumentar o nível de segurança do perímetro de uma corporação contra ataques procedentes da Internet.
01. Pacotes inválidos
Recomendação: Bloqueio de pacotes originários de endereços inválidos previstos em RFC.
Executar o bloqueio de endereços forjados ("spoofed" addresses) Pacotes originários do mundo exterior com origem de redes privadas (endereços internos previstos na RFC 1918 e rede 127) devem ser bloqueados e desconsiderados como tráfego de rede válido quando trafegando pelo meio público Internet. A importância do bloqueio de pacotes recebidos da Internet e que possuem endereço de origem de redes privadas ou endereços de loopback, reside em auxilar na proteção contra o envio de pacotes forjados (spoofing).
02. Serviços de Login
Recomendação: Bloqueio dos serviços telnet (23/tcp), SSH (22/tcp), FTP (21/tcp), NetBIOS (139/tcp) e rlogin (512/tcp até 514/tcp)
Telnet é um protocolo de acesso remoto que permite comunicação bidirecional entre, por exemplo, a máquina de um usuário e um servidor (normalmente Unix), onde ambos trabalham para implementar o que chamamos de terminal virtual. Telnet é utilizado para acesso via terminal remoto onde todas as informações da sessão (login, senhas e dados) são apresentadas em "claro" através da rede, ou seja, sem a utilização de padrões de criptografia para proteção das informações. Uma vez estabelecendo-se a conexão, o username e senha dos usuários são enviados em claro. Assim sendo, estas informações automaticamente ficam expostas e passíveis de interceptação através da utilização de sniffers. Telnet também é vulnerável ao que chamamos de "captura de sessão" session hijacking, permitindo a usuários remotos total controle sob sessões onde através da captura de uma sessão, é possível o comprometimento de um sistema diretamente através do shell do sistema operacional (normalmente Unix/Linux).
FTP é utilizado exclusivamente para transferência de arquivos, permitindo a transferência de arquivos entre hosts. O grande problema diagnosticado em relação ao FTP é a má configuração das permissões de acesso aos diretórios publicáveis, onde em muitas oportunidades uma má configuração permite a modificação de arquivos para exploração de serviços como rsh e rexec, ou download do arquivo de senhas de um servidor, permitindo acesso a demais áreas criticas ou até mesmo a oportunidade de utilização do servidor de FTP de uma corporação como repositório de programas piratas e imagens pornográficas (classico nome de "warez"). Assim como o Telnet, uma sessão de FTP pode ser sequestrada e a informação, que também é enviada em claro, pode ser alvo de práticas de sniffing.
Rlogin e semelhantes, portas TCP 512 até 514 (exec, login e shell, respectivamente), são responsáveis por um modelo de confiança onde um host permite o acesso total a partir de um endereço IP de origem que está solicitando o estabelecimento da conexão. Estes serviços siginificam um grande risco a sistemas Unix porque eles são utilizados para o processo de login automático através da rede com o objetivo de execução de comandos em sistemas remotos. As informações também trafegam em claro, proporcionando captura através de sniffing. Em muitas ocasiões, o servidor de FTP é porta de entrada para que invasores preparem o acesso remoto ao shell do sistema operacional, a partir da manipulação dos arquivos de controle como o /etc/hosts.equiv e .rhosts.
Ambos os serviços de emulação de terminal e transferência de arquivos podem ser substituídos pela implementação de comunicação segura utilizando-se o SSH. A implementação do SSH garante segurança adicional na medida em que os dados de emulação de terminal não são transferidos em claro pela rede, assim como as transferências de arquivos que, a partir da utilização do subsistema de ftp do daemon de SSH, garante a proteção das informações que são enviadas ou recebidas com camada de criptografia.
A utilização do SSH requer cuidados, visto que o mesmo fora alvo de ataques, principalmente ataques do tipo "buffer overflow". Em implementações antigas do daemon de SSH, um buffer overflow proporcionava ao invasor a exploração de uma porta para acesso privilegiado no shell do sistema operacional, assim como o famoso ataque Man in the middle, que pode ser resumido como um problema de educação na distribuição das chaves de criptografia utilizadas para estabelecer a autenticação de um usuário perante a um server rodando o daemon de SSH.
Assim como outros daemons, é de extrema importância manter o SSH atualizado com a versão mais recente do produto para que o acesso à emulação de terminal ou transferência de arquivos não seja comprometido ou sirva de porta de entrada informal para uma possível invasão do sistema operacional.
03. RPC e NFS
Recomendação: Bloqueio dos serviços Portmap/rpcbind (111/tcp e 111/udp), NFS (2049/tcp e 2049/udp), lockd (4045/tcp e 4045/udp)
O serviço Portmap é responsavel por manter o estado dos serviços de RPC (Remote Procedure Call). Entenda-se por RPCBIND o nome do Portmapper em sistemas utilizando TI-RPC. O RPC server trabalha como um registrador que mantém o estado de quais programas RPC utilizam as portas efêmeras (portas altas). Servidores utlizam RPC para auto-registro no Portmapper, enquando clientes utilizam RPC para fazer consultas ao Portmapper e reconhecer as aplicações previamente registradas.
Um invasor ao estabelecer conexão na porta 111 utilizando, por exemplo, o comando "rpcinfo", pode receber informações a respeito das aplicações registradas em um servidor. O comando chama a sub-rotina PMAPPROC_DUMP e exibe a listagem das portas utilizadas por cada programa RPC. É uma informação preciosa para o conhecimento dos processos e aplicações registradas em um sistema operacional Unix.
O NFS, Network File System, permite que uma máquina remota "monte" file systems em um servidor Unix local. Trata-se de uma aplicação client-server baseada no Sun RPC. NFS permite que clientes acessem arquivos e file systems no servidor a partir de envio de requisições RPC para o servidor NFS. Os principais problemas encontrados em um ambiente NFS são o IP spoofing, visto que o mesmo faz uso do endereçamento IP para controle de acesso e permissões para compartilhamento (export) de diretórios configurados de maneira incorreta, respectivamente. É muito comum que os administradores de ambientes Unix exportem, em um ambiente NFS, diretórios sem restrições de acesso, exportando diretórios inteiros como Read/Write para o que chamamos de "world". Assim sendo, qualquer cliente pode "montar" os filesystems exportados e acessar informações confidenciais que foram compartilhadas de maneira incorreta.
Lockd é um programa RPC que é utilizado em conjunto ao NFS para manipular e administrar solicitações de acesso a arquivos tento localmente a partir do kernel, como remotamente de outro lock daemon. O processo relaciona-se ao NFS no que se diz respeito a responsabilidade de gerenciar a utilização de um recurso reservando acesso exclusivo ao mesmo (locking). Diversas implementações do Daemon Lockd estão vulneráveis a ataques do tipo Denial Of Service, comprometendo o acesso exclusivo e permitindo que outras estações transmitam comandos RPC ao NFS Server.
04. NetBios
Recomendação: Bloqueio das portas 135 (tcp e udp), 138 (udp), 139 (tcp) além da porta 445 (tcp e udp) - esta última em caso de utilização do Windows 2000.
Netbios é uma interface de desenvolvimento de aplicação que utiliza basicamente três tipos de serviços. O serviço de resolução de nomes, que utiliza a porta 137, enviando broadcast de pacotes UDP, O serviço compreendido pelo datagram service, que utiliza a porta 138 para enviar broadcast UDP ou broadcasts direcionados, e o serviço de sessão, que por sua vez utiliza a porta TCP 139 para enviar e receber dados. O WINS manager, utiliza a porta TCP 135 assim como o Common Internet File System (CIFS), que utiliza as portas 445 tcp e udp. Netbios é altamente utilizado em um ambiente Microsoft Windows.
O tráfego de username/senhas em uma rede Windows NT é vulnerável a sniffers e crackers. Uma das grandes incidências de invasão a redes corporativas a partir da Internet baseia-se na ausência de bloqueios de pacotes Netbios procedentes do mundo exterior. Diversas ferramentas existentes hoje, como por exemplo o NAT (Netbios Auditing Tool), permitem a um invasor descobrir senhas e acessar recursos em um servidor, existindo a possibilidade de acesso a demais domínios pertencentes ao sistema através de relação de confiança (trust relationship) da rede Microsoft. O tráfego Netbios permite através de um acesso anônimo, a enumeração de recursos, contras, configuração do sistema e chaves do registro.
05. X Windows
Recomendação: Bloqueio do range de portas de 6000/tcp até 6255/tcp
Sistemas X-Windows são responsáveis por proporcionar usuários de ambiente Unix, interface gráfica e atrativa para utilização do sistema. Trata-se de uma aplicação cliente-servidor que pode suportar multiplas janelas que caracterizam terminais virtuais em um mesmo display que por sua vez é gerenciado por um servidor. Nesta arquitetura, o cliente é a aplicação que roda na próprio host como um server ou em um host diferente. O server é responsável por gerenciar recursos como vídeo, mouse e teclado. Existem basicamente dois níveis de proteção associados à funcionalidades do X Window System; Xhost e Xauth.
O Xhost utiliza endereçamento IP para restringir quais atividades são autorizadas. O Xauth, proporciona proteção semelhante mas sua utilização baseia-se no uso de uma string secreta, a qual denominamos "magic cookie". Existem muitos artificios a serem explorados por um invasor no que se diz respeito à invasão a um X11 Server. Podemos destacar a possibilidade de captura de screen, redirecionamento do display, mouse e teclado para a entrada de comandos arbitrários e o estabelecimento de sessão remota para execução de comandos no host remoto. Algumas versões ainda são vulneráveis a ataques do tipo buffer overflow, permitindo por exemplo, a um usuário na Internet, ter pleno acesso como usuário root ao shell do sistema operacional, condicionando uma situação de total domínio e comprometimento do host. Servidores críticos que necessitam prover serviços Internet operam, na maioria das vezes, com interface gráfica somente pela facilidade de uso e administração, sem implementações de segurança como Xhost e Xauth.
06. Serviços de Transferência de Zona/Resolução de Nomes - DNS/ Amazenagem
Recomendação: Bloqueio de DNS (53/udp) para todas as máquinas que não são servidores de DNS, transferência de zona (53/tcp) exceto de servidores de DNS secundários. Bloqueio do serviço de armazenamento de diretórios LDAP (389/tcp e 389/udp).
O serviço de DNS é um database distribuído que é utilizado para tradução de um hostname para um endereço de IP especifico, assim como de um endereço IP para seu específico hostname. O serviço de DNS proporciona também o roteamento de informações para serviço de e-mail (MX). Na estrutura do DNS, a porta UDP 53 é utilizada para queries e replies enquanto a porta TCP 53 é utilizada para a tarefa de transferência de zona, sendo responsável também por responder a consultas quando a resposta à uma query for maior do que 512 bytes (neste caso a resposta não pode ser enviada via UDP e é automaticamente enviada através de TCP).
O tráfego de DNS necessita ser controlado por diversos motivos. Podemos citar, por exemplo, o clássico problema de hosts que não proporcionam serviços de DNS e que estão rodando (muitas vezes por instalação default), implementações de DNS como o BIND e que são passíveis de exploração utilizando-se vulnerabilidades existentes para versões específicas do próprio bind, por exemplo. É muito comum que servidores de DNS sejam poluídos através do que chamamos de "cache poising". Um invasor pode poluir o cache de um DNS remoto provendo informações erradas sobre um hostname, direcionando o acesso a este hostname para um site de pornografia, por exemplo. Em um cenário de DNS, é muito importante que as transferências de zona sejam autorizadas somente entre os servidores primário e secundário.
O LDAP, Lightweight Directory Access Protocol, é um conjunto de protocolos utilizados para acesso a um serviço de diretórios no padrão X.500. É utilizado, por exemplo, pela arquitura do Active Directory do Windows 2000. Desde que o Active Directory representa um repositório e objetos unificado, informações importantes sobre usuários podem ser extraídas rapidamente através de queries à arvore de diretórios.
Diretórios implementando LDAP podem conter informações particulares de funcionários e informações sobre a organização. Um invasor pode explorar vulnerabilidades associadas ao LDAP, em sua maioria buffer overflows, para modificar informações armazenadas pelo mesmo. Outra grande preocupação é o receio de um Denial Of Service no serviço de diretórios indisponibilizando procedimentos de autenticação.
07. Mail
Recomendação: Bloqueio de SMTP (25/tcp) para todas as máquinas que não são relays externos, POP (109/tcp e 110/tcp) e IMAP (143/tcp)
O SMTP, Simple Mail Transfer Protocol, especifica como dois agentes de transferência (MTAs) trocam e-mail através de uma conexão TCP. Não existe necessidade de permtir tráfego SMTP procedente da Internet para qualquer outra máquina que não seja o servidor de e-mail específico de uma corporação. Este é provavelmente um dos serviços mais utilizados em uma corporação que possui presença na Internet. Devido a prevalência do protocolo, é natural que o mesmo tenha uma grande incidência de consultas por invasores que identificam tipos diferentes de tráfego que um ambiente alvo possa disponibilizar.
SMTP não proporciona confidencialidade e autenticação. O mesmo é vulnerável a sniffing e modificações de host/username. SMTP também pode ser alvo de Denial Of Service, ataques de buffer overflow ou mesmo de consultas importantes que podem ser realizadas através de comandos suportados pelo servidor de SMTP e que permitem, por exemplo, a verificação de usuários existentes no sistema operacional (procedimento útil para viabilizar ataques do tipo brute force / password guessing). O Sendmail é rico em vulnerabilidades. Recomendações como atualização permanente do Daemon e uma correta configuração (cuidados com relay, comandos expn, vrfy e nível mais detalhado de logging para o syslog) auxiliam a minimizar muitos problemas.
O Post Office Protocol, permite a usuários o download das mensagens armazenadas em um servidor de mail. Basicamente POP3 utiliza a porta TCP 110. Versões antigas do serviço (POP2), utilizam a porta TCP 109. POP3 não deve ser permitido para nenhum host externo da corporação, caso a Política de Segurança da mesma reze por esta recomendação. Como o POP3 transmite senhas em claro, invasores podem descobrir senhas a partir de análise de tráfego do barramento com a utilização de sniffers, acessar caixas postais e muitas vezes, replicar as senhas encontradas no acesso a um serviço de e-mail externo para recursos internos da corporação.
Assim como o POP3, o Internet Message Access Protocol (IMAP), segue o mesmo conceito de vulnerabilidade, caracterizando-se por ser vulnerável a sniffing.
Na semana que vem, falaremos sobre as recomendações para serviços Web, Small Services, Miscellaneous (TFTP, finger, NTP, LPD, SNMP, BGP e Socks) e entraremos no tópico "Política de Segurança em Roteadores de Borda".
Retornar Página Publicações
Autorizações para reprodução:
Portal IBEST Imasters
Portal Módulo Security Solutions
Revista CSO On-Line
IDG NOW!
PC Magazine
ComputerWorld
Universidade de São Paulo (USP)
Universidade Estadual de Campinas (UNICAMP)
Universidade Federal do Rio de Janeiro (URFRJ)
Universidade de São Carlos
Universidade Estácio de Sá
|