Baixe o app para aproveitar ainda mais
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 –
Compartilhar