Carlos A. Campana Pinheiro <carlos@na-df.rnp.br>
Rede Nacional de Ensino e Pesquisa (RNP)
Introdução
Endereços IP
Protocolo
Portas
Regras
Filtros em roteadores Cisco
Conclusão
Referências
O estabelecimento de filtros de pacotes tem-se mostrado uma boa medida para proteger os servidores internos de uma rede de acessos indevidos.
Este artigo tem por objetivo discutir a utilização deste mecanismo como uma forma de aumentar a segurança de uma rede, apresentando, em linhas gerais, as funcionalidades oferecidas, as abordagens utilizadas no estabelecimento das regras e, por fim, exemplificando a utilização de filtros em roteadores Cisco.
Introdução
Mecanismos de filtragem de pacotes vêm sendo usados há muito tempo para aprimorar a segurança. Por suas características, filtros são normalmente implementados com baixo custo (alguns roteadores suportam naturalmente esse recurso) e pouco impacto no desempenho da rede.
Em contrapartida, as regras de filtragem podem se tornar muito complexas, exigindo um entendimento completo de cada protocolo. São muito comuns erros durante a elaboração de regras, e apenas um dígito incorreto pode mudar completamente o significado do filtros. Para complicar ainda mais, testes completos de filtros podem se tornar uma tarefa bastante difícil.
O uso de filtros é recomendado em situações simples e como complemento de outras mecanismos de segurança, que proporcionem maior flexibilidade e controle. Os filtros de pacotes são muito úteis mas não devem ser a única forma de defesa.
A filtragem de pacotes consiste no encaminhamento de pacotes (passagem ou descarte), conforme o conteúdo de certos campos dos cabeçalhos dos pacotes, principalmente os endereços IP de origem e destino, protocolo e portas de origem e destino.
O filtro, composto de várias regras, é colocado no ponto de entrada da rede, direcionado para uma ou mais interfaces de rede, fazendo o controle do acesso a serviços para toda a rede. Desta maneira, a configuração pode ser feita em um único local, para proteção de todas as máquinas da rede. O mesmo mecanismo pode ser implementado e usado para a proteção de hosts específicos.
Endereços IP
Todo pacote na rede possui um endereço IP de origem e outro de destino (representados por 4 números, separados por pontos). De acordo com as definições do protocolo, o endereço de origem é o da máquina (ou melhor, de umas das interfaces da máquina) que estabeleceu a comunicação, enquanto o endereço de destino corresponde à maquina de destino final. Durante o caminho percorrido pelos pacotes na rede, esses endereços não são modificados.
A filtragem por endereços pode ser feita pela origem e/ou pelo destino, no endereço completo (host) ou em parte dele (rede ou bloco), para, por exemplo:
- Permitir determinados serviços somente para algumas máquinas (IP de destino);
- Bloquear o tráfego de alguns pontos (IP de origem);
- Controlar o acesso para algumas máquinas (IPs de origem e destino);
- Proibir tentativas de spoofing (IP de origem);
- Dificultar tentativas de Denial of Service (DOS), filtrando enderecos inválidos.
O controle pelo endereço pode ser muito eficiente para alguns casos, mas o administrador não pode perder de vista que, em muitos ataques, os endereços IP de origem podem ser forjados, principalmente quando o serviço não é orientado à conexao (UDP).
Protocolo
As regras de filtragem podem ser estabelecidas para bloquear totalmente um protocolo (UDP, TCP, ICMP ou RPC, dependendo da implementação), ou especificar o serviço, que assume características diferentes dependendo da combinação protocolo/porta.
Portas
O acesso a serviços Internet é feito com base nos números de portas. A atribuição dos números é controlada pelo IANA (Internet Assigned Number Autority). Uma relação completa pode ser obtida em www.isi.edu/in-notes/iana/assignments/port-numbers .
Os números de portas são agrupados em três faixas:
- Well Known Ports - 0 a 1023
- Registered Ports - 1024 a 49151
- Dynamic and/or Private Ports - 49152 a 65535
A primeira faixa está destinada a serviços já bem estabelecidos e de interesse geral (ou pelo menos bem disseminados). Normalmente, a ativação desses serviços exige privilégios de administrador do sistema.
A segunda faixa é usada para os programas de usuários (clientes) e outros serviços, que podem ser ativados sem privilégios de administrador.
Alguns serviços são famosos por apresentarem brechas que podem ser exploradas para atacar ou invadir sistemas. Esses serviços, como tftp, finger, syslog, pop e outros, são sérios candidatos a bloqueio nas regras de filtragem.
Assim como os endereços IP, as portas podem ser modificadas no caso de um ataque, que podem ser lançados com números de serviços bem conhecidos (por exemplo, a porta 25 do smtp), para tentar contornar os filtros.
Outros campos dos cabeçalhos TCP/IP ainda podem ser utilizados para as regras de filtragem, como o Type-of-service (TOS) e Flags (bit ACK).
Regras
Após colocar os controles básicos, existem duas abordagens para o estabelecimento das regras de filtragem de serviços e hosts: bloquear alguns acessos e permitir todos os outros, ou permitir alguns acessos e bloquear todos os outros.
A primeira é muito mais simples e imediata, mas a segunda proporciona uma segurança muito maior. Somente bloquear algumas portas pode dar uma falsa sensação de segurança, já que o mesmo serviço (ou algum equivalente) pode ser ativado por um invasor em uma porta completamente diferente.
Ao definir as regras, é preciso considerar o sentido na aplicação do filtro, de entrada na interface (inbound) ou saída (outbound). Dependendo do sentido, mudam completamente os endereços IP e as portas. Normalmente, as regras são testadas seqüencialmente e, na primeira correspondência, a ação é tomada e o filtro é terminado (para cada pacote).
EXEMPLOS DE REGRAS
- Bloquear spoofing
- proibir, na entrada, endereços originados da mesma rede
- Bloquear pacotes com endereços inválidos
- proibir, na entrada, endereços de redes privativas ( RFC1918 )
- proibir, na entrada, endereço de loopback (127.0.0.1)
- proibir, na entrada, endereços inexistentes (255.255.255.255)
- Bloquear ataque land
- proibir, na entrada, endereços da própria interface (origem e destino)
- Bloquear pacotes que não sejam da própria rede
- proibir, na saída, endereços de origem que não sejam da rede
- Permitir acesso ao servidor Web
- permitir, na entrada, pacotes originados de
portas > 1023 para a porta 80 - permitir, na saída, pacotes da porta 80 para
portas > 1023 em conexões já estabelecidas
- permitir, na entrada, pacotes originados de
- Permitir acesso de clientes locais para Web
-
- permitir, na saída, pacotes de portas > 1023 para porta 80
- permitir, na entrada, pacotes da porta 80 para
portas > 1023 em conexões já estabelecidas
Filtros em roteadores Cisco
A implementação de filtros de pacotes em roteadores Cisco é feita por meio do mecanismo de listas de acesso (access-lists). Essas listas podem ser aplicadas em interfaces para controle dos pacotes, bem como em portas de entrada, serviços específicos, como SNMP, ou no controle de anúncios e redistribuição de rotas.
Existem dois tipos de access-lists:
-
standard: onde só é especificado o endereço de origem
access-list # {deny|permit} origem máscara -
extended: onde o controle é feito pelos endereços, portas com algumas opções adicionais
access-list # {deny|permit} protocol origem máscara porta destino máscara porta established log
A última forma é a mais usada para o estabelecimento de filtros de pacotes. A identificação das listas, para IP, varia de 1 a 99, para o modo standard, e de 100 a 199, para o modo extended. A sintaxe e opções disponíveis mudam bastante dependendo da versão de IOS utilizada. Outra diferença relacionada à versão (e ao hardware) é o impacto no desempenho. Listas em circuitos muito utilizados, de alta capacidade, podem comprometer o desempenho do roteador.
A aplicação da lista é feita via comando ip access-group # {in|out}, nas interfaces. O comando show access-list # auxilia no acompanhamento do filtro (as versões mais atuais mostram o número de pacotes que caem em determinada regra).
Exemplo de access-list:
! spoofing access-list 101 deny ip 0.0.0.255 any ! endereços invalidos access-list 101 deny ip 127.0.0.0 0.255.255.255 any access-list 101 deny ip host 255.255.255.255 any access-list 101 deny ip 10.0.0.0 0.255.255.255 any access-list 101 deny ip 172.16.0.0 0.15.255.255 any access-list 101 deny ip 192.168.0.0 0.0.255.255 any ! permitir conexoes iniciadas internamente (ja estabelecidas) access-list 101 permit tcp any any established ! permitir mail access-list 101 permit tcp any host eq 25 ! permitir web access-list 101 permit tcp any host eq 80 access-list 101 permit udp any host eq 80 ! permitir acesso ao servidor sshd access-list 101 permit tcp any host eq 22 ! permitir dns access-list 101 permit udp any host eq 53 access-list 101 permit tcp host host eq 53 interface serial 0 ip access-group 101 in
Conclusão
A opção de usar filtros para melhorar a segurança de uma rede tem sido bastante utilizada nos últimos anos. Embora a sua utilidade seja indiscutível, ela está longe de ser considerada uma solução final para todos os problemas de segurança de uma rede.
Os administradores devem, portanto, encarar o uso de filtros como mais uma excelente ferramenta de auxílio na solução dos problemas de segurança, definindo regras que se apliquem diretamente ao "estado" de sua rede.
Referências
Building Internet Firewalls
by D. Brent Chapman and Elizabeth D. Zwicky
O'Reilly & Associates
Increasing Security on IP Networks
www.cisco.com/univercd/cc/td/doc/cisintwk/ics/icssecur.htm
Info on configuring a Cisco access list to filter IP
www.mtiweb.com/isp/ciscoacc.html
Network Ingress Filtering – RFC2267
by Paul Ferguson and Daniel Senie
ftp://ds.internic.net/rfc/rfc2267.txt
IP Filter
by Darren Reed
coombs.anu.edu.au/~avalon/ip-filter.html
NewsGeneration, um serviço oferecido pela RNP – Rede Nacional de Ensino e Pesquisa
Copyright © RNP, 1997 – 2004