Buscar

Introdução a Firewall

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Universidade Federal de Mato Grosso
Instituto de Computação
– Firewall –
Segurança em Redes e Internet
Prof. Dr. Luís Cézar Darienzo Alves
luisc@ic.ufmt.br
Contextualização
Definição
De acordo com Bill Cheswick e Steve Bellovin, em Firewalls and Internet Security, firewall é um ponto entre duas ou mais redes pelo qual passa todo o tráfego. A partir desse único ponto, é possível controlar e autenticar o tráfego, além de registrar, através de logs, todo o tráfego da rede, facilitando, assim, a sua auditoria.
De acordo com Chapman, firewall é um componente ou conjunto de componentes que restringe o acesso entre uma rede protegida e a lnternet, ou entre outros conjuntos de redes.
Funcionalidades e características	
Filtros
Pacotes
Antivírus
Antibot
Antispam
Proxies
Cache
Bastion Hosts
Hardening
Zona Desmilitarizada (DMZ)
Funcionalidades e caracterísicas
Network Address Translation (NAT)
Virtual Private Network (VPN)
Autenticação/Certificação
Balancamento de cargas e alta disponibilidade
Tipos de firewall
Filtros de pacotes
Trabalha nas camadas:
Rede
IP
Endereço de origem e destino
Protocolo da camada superior
Flags
ICMP
Tipo e código ICMP
Transporte 
TCP
Portas de origem e destino
Flags
UDP
Portas de origem e destino
Trata o sentido do tráfego de conexões TCP
Flags: SYN, SYN-ACK e ACK
Filtros de pacotes (Continuação)
Vantagens
Baixo overhead
Custo reduzido, simplicidade e flexibilidade
Transparente ao usuário
Desvantagens
Permite a conexão direta para hosts internos de endereços externos
Difícil gerenciamento em ambientes complexos
Vulnerável, nativamente, à ataques do tipo IP Spoofing
Não oferece autenticação do usuário
Dificuldade para filtrar serviços que utilizam portas dinâmicas como FTP ativo
Filtros de pacotes (Continuação)
Regra
End.origem:Portaorigem
End.destino:Portadestino
Ação
1
IP redeinterna:Portaalta
*:80
Permitir
2
*:80
IPrede interna: Porta alta
Permitir
3
*:*
*:*
Negar
Exemplo de regras susceptível à backdoors por cavalo de tróia
Spoofing IP
Filtros de pacotes statefull
Trabalha nas camadas de rede e transporte de maneira similar aos filtros de pacotes stateless
Utiliza uma tabela de estados, que armazena os estados de todas as conexões
Tratamento dos pacotes iniciais – Flag SYN ativada
Filtros de pacotes statefull (Continuação)
Tratamento dos pacotes iniciais – Flag ACK ativada
Filtro de pacotes statefull (Continuação)
Regra
End.origem:Portaorigem
End.destino:Portadestino
Ação
1
IP redeinterna:Portaalta
*:80
Permitir
3
*:*
*:*
Negar
Exemplo de regras full state
Filtro de pacotes statefull (Continuação)
Vantagens
Apenas aberturas temporárias no perímetro da rede
Baixo overhead
Aceita quase todos os tipos de serviços
Regras mais claras/humanas
Desvantagens
Permite a conexão direta para hosts internos a partir de redes externas
Não oferece autenticação nativa do usuário
Há produtos como Identity Awareness que apresenta esse recurso.
Possibilidade de utilização de portal captive.
Proxy
Relay de conexões TCP/UDP
Tipos
Circuit level gateway
Camada de transporte e sessão
Não há necessidade de configurações adicionais nos clientes
Exemplo: Socks
Application level gateway
Camada de aplicação
Um proxy para cada aplicação
HTTP, FTP, H.323 etc
Exemplo: Squid
Proxy
Vantagens
Não permitem conexões diretas entre hosts internos e externos
Aceita autenticação de usuário
Analisa comandos da aplicação no payload dos pacotes de dados
Permite a criação de logs de tráfego de atividades específicias
Desvantagens
Baixo desempenho se comparado aos filtros de pacotes
Requer um proxy específico para cada aplicação
Não trata pacotes ICMP
Requer que os clientes internos tenham conhecimento da existência do proxy
Pode-se utilizar WPAD (Web Proxy Autodiscovery Protocol)
Proxy Hierárquico
Proxy transparente
Similar ao proxy de aplicação convencional
Necessidade de configuração no sistema de firewall para encaminhamento dos pacotes
Necessidade de gerar o par de chaves pública/privada para tratar conexões HTTPS 
Man-in-the-middle corporativo
Firewall individual
Motivação
Redes VPN
Redes de sobreposição Peer-to-Peer (P2P)
Teletrabalho ou trabalho remoto
Foco nas aplicações das estações
Característica das regras
Aplicativo específico em funcionamento
Dispositivo Ethernet ou serial
Número de telefone
Direção do fluxo
Endereços IPs específicos
Usuário específico
Arquiteturas
Dual-homed host architecture
Screened host architecture
Screened subnet architecture
Cenários atuais
Netfilter e Iptables
Contextualização
Definição
Netfilter: Framework que insere hooks sobre a pilha TCP/IP do kernel Linux, desenvolvido inicialmente por Paul “Rusty” Russel durante a série 2.3.x 
Iptables: Ferramenta de manipulação do framework Netfilter
Netfilter hooks
Inspeção statefull
Estados:
New
ESTABLISHED	
A conexão se torna estabelecida quando o firewall recebe a comunicação em duas vias (Suporte à TCP e UDP)
RELATED
Expressa uma expectativa de estabelecimento de conexão
INVALID
Callbacks
ACCEPT
DROP
QUEUE
STOLEN
REPEAT
Inspeção statefull
Sistema de rastreamento de conexão (Connection Tracking System)
 não filtram os pacotes, apenas permitem que os pacotes continuem sendo processados pela pilha TCP/IP
Armazena informações sobre os estados das conexões em estruturas na memória DRAM 
Carregado via módulo opcional. 
Necessário na presença de NAT
Módulos: nf_conntrack_ipv4 e nf_conntrack_ipv6
Famílias:
Criação e lookup
Defragmentação de pacotes
Helpers
Implementação através de tabelas hash	
nf_conntrack.h
structure nf_conn
Tabelas/Chains
Tabela
Função
Hooks
Filter
Filtro padrão de pacotes
INPUT
OUTPUT
FORWARD
NAT
Tradução de endereços/portas
PREROUTING
OUTPUT
POSTROUTING
Mangle
Modificação de cabeçalhos
PREROUTING
INPUT
FORWARD
OUTPUT
POSTROUTING
Tabelas/Chains
Sintaxe
Manipulação de chains
iptables [-t table] -P chain target [options]
Altera a política padrão de uma chain
Políticas padrão: ACCEPT e DROP
iptables [-t table] -[LFZ] [chain] [options]
-L: Lista as regras de uma chain
-V: Expande a verbosidade da saída
-x: Apresenta o número exato de pacotes com match em cada regra
-n: Não resolve nomes DNS
--line-numbers: Insere número nas linhas da listagem
-F: Apaga todas as regras de uma tabela
-Z: Zera todos os contares de bytes e pacotes de uma tabela
Manipulação de chains
iptables [-t table] -N chain
Cria uma chain de usuário
iptables [-t table] -X [chain]
Apaga uma ou todas a(s) chain(s) vazia(s) de usuário
Manipular regras nas chains
 iptables [-t table] -[AD] chain rule-specification [options]
-A: Adiciona regras no fim (Append)
-D: Deleta regras
iptables [-t table] -I chain [rulenum] rule-specification [options]
Adiciona regras no início ou em uma determinada posição
iptables [-t table] -R chain rulenum rule-specification [options]
Altera/sobrescreve a regra de uma determinada posição
iptables [-t table] -D chain rulenum [options]
Exclui um regra
Manipular regras - Parâmetros
 -p, --protocol [!] protocol
Protocolos padrão: tcp, udp, icmp, all
Protocolos permitidos: /etc/protocolos
Extensões do protocolo tcp
 --tcp-flags [!] mask comp
mask: indica as flags que devem ser analisadas
comp: Indica as flags que devem estar setadas
Flags: SYN, ACK, FIN, RST, URG, PSH, ALL, NONE
Exemplo: --tcp-flags SYN,RST,ACK,FIN SYN
[!] –syn
Analisa a flag SYN
Extensões dos protocolos tcp/udp		
--sport [!] port[:port]
Porta(s) de origem
 --dport [!] port[:port]
Porta(s) de destino
Manipular regras - Parâmetros
 -p, --protocol [!] protocol (Continuação)
Extensão do protocolo icmp
 --icmp-type [!] typename
Os tipos disponíveis:
#iptables –p icmp –h
-s, --source [!] address[/mask]
Endereços: 
nomes DNS: Precisam ser resolvidos, elevando o overhead
Endereços IP tanto de redes quanto
de hosts
Máscaras:
CIDR
Notação decimal
Manipular regras - Parâmetros
-d, --destination [!] address[/mask]
Características similares àquelas da opção -s
 -i, --in-interface [!] name
Interface de entrada
Pode ser utilizada apenas com as chains PREROUTING, INPUT e FORWARD
-o, --out-interface [!] name
Interface de saída
Pode ser utilizado apenas com as chains FORWARD, OUTPUT, POSTROUTING
[!] -f, --fragment
A regra se aplica à pacotes fragmentados
O primeiro fragmento não está incluso
Manipular regras - Parâmetros
 -j, --jump target
ACCEPT
DROP
REJECT
LOG
Arquivo default de destino /var/log/messages
Arquivo de destino pode ser alterado em /etc/rsyslog.conf
Opções:
--log-prefix prefix
 --log-tcp-sequence
 --log-tcp-options
--log-ip-options
--log-uid
USER_CHAIN
Manipular regras – Módulos adicionais
Carga do módulo adicional: -m <nome_módulo>
Módulo state: --state
Permite realizar o match pelo estado da conexão
Estados:
ESTABLISHED
RELATED
INVALID
NEW
É possível utilizar mais de um estado por regra separando-os por vírgula 
Exemplo: -m state --state ESTABLISHED,RELATED
Manipular regras – Módulos adicionais
Módulo mac: --mac
Permite verificar o endereço MAC de origem dos pacotes
 Habilita a opção: --mac-source
Exemplo –m mac --mac-source 00:00:00:00:00:00
Módulo limit: --limit
Permite verificar quantidade de pacotes por espaço de tempo
Opções:
--limit rate[/second|/minute|/hour|/day]
Máximo de pacotes em media por unidade de tempo
Exemplo: -m limit --limit 5/hour
Valor default 3/hour
 --limit-burst number
Limite máximo de pacote por rajada
Baseado em –limit
Valor default 5
Save/restore das regras
RHEL/CENTOS
As regras são salvas em /etc/sysconfig/iptables
#service iptables save
#iptables-save > /etc/sysconfig/iptables
#iptables-restore < /etc/sysconfig/iptables
Debian/Ubuntu
Pacote requerido: iptables-persistente
As regras são salvas em /etc/iptables/rules.v4
#iptables-save
#iptables-save > /etc/iptables/rules.v4
#iptables-restore < /etc/iptables/rules.v4
Carga de módulos Conntrack
Os módulos conntrack expandem a funcionalidade do netfilter permitindo-o operar em fullstate
Módulos do netfilter disponíveis
RHEL/CentOS: /lib/modules/2.6.32-431.29.2.el6.x86_64/kernel/net/netfilter
Debian: /lib/modules/kernel/net/netfilter
Módulos essenciais
#modprobe ip_conntrack (tracking de conexões)
#modprobe ip_conntrack_ftp (tracking de FTP ativo)
#modprobe ip_nat
#modprobe ip_nat_ftp (Tracking de servidores FTP atrás de NAT)
Exemplos básicos
Exemplos básicos
Firewall de borda
Ativar o roteamento
Limpar regras de todas as tabelas
Apagar todas as tabelas de usuários
Definir politica padrão como DROP
Permitir tráfego INPUT e OUTPUT para interface loopback 
Permitir acesso SSH
Liberar ping na interface DMZ para qualquer origem
Liberar ping na interface externa apenas para o roteador da operadora
Aplicar regras anti-spoofing 
Permitir acesso ao serviço de DNS 
Permitir acesso ao repositório YUM	
Servidor Web
Permitir acesso ao serviço de DNS
Permitir acesso ao repositório YUM
Permitir que hosts na Internet acesse as portas HTTP e HTTPS
Salvar a configuração
NAT (Network Address Translation)
SNAT (Source NAT)
Executado na tabela nat
Executado na chain POSTROUTING
Utilizado com IP fixo
Opções:
--to-source ipaddr[-ipaddr][:port[-port]]
--random
Torna randômica o número da porta utilizada 
--persistent
Persiste o endereço utilizado pelo cliente em cada conexão
Torna-se útil ao realizar o mapeamento de N:N
Exemplo:
#iptables –t nat –A POSTROUTING –o eth1 –j SNAT –to-source 201.201.201.1
NAT (Network Address Translation)
MASQUERADE
Executado na tabela nat
Executado na chain POSTROUTING
Utilizado com IP fixo e dinâmico 
Opções:
--to-ports port[-port]
Exemplo:
#iptables –t nat –A POSTROUTING –o PPP0 –j MASQUERADE
NAT (Network Address Translation)
DNAT (Destination NAT)
Executado na tabela nat
Executado na chain PREROUTING
Opções:
--to-destination [ipaddr][-ipaddr][:port[-port]]
--random
--persistent
Exemplo:
#iptables –t nat –A PREROUTING –d 201.201.201.1 –j DNAT –to-destination 172.16.0.2
Atividades
Firewall transparente
– ebtables –

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando