Redes de computadores II Firewall Prof. Diovani Milhorim Firewall Conceito: Firewall é um sistema projetado para impedir acesso ou tráfego não autorizado em uma rede privada. O sistema pode consistir de software, Hardware ou ambos. Firewall Em geral firewall são sistemas que implementam regras de filtragem de pacotes impedindo ou restringindo determinados tipos de tráfego, baseando-se em regras fixas ou determinadas em regras estatísticas. Firewall Objetivos: Proteger as estações de trabalho de tráfego malicioso externo a rede privada. Controlar o tráfego de saída da rede interna. Firewall Quanto a implementação: Soluções proprietárias . aplicativos comerciais Hardware e software integrados. Soluções de software livre. filtro de pacotes implementado em sistema operacional livre (unix, linux, etc...) Firewall Soluções proprietárias. Vantagens: Facilidade de instalação Fácil gerenciamento Atualizações constantes Hardwares projetados para a aplicação. Firewall Soluções proprietárias. Desvantagens: Custo de aquisição Custo de atualização Falta de flexibilidade Firewall Soluções proprietárias. Firewall Soluções proprietárias. Firewall Soluções proprietárias. Firewall Soluções em software livre Implementação de regras de filtragem de pacotes em sistema livre (unix/linux) que opera como gateway de rede. Ferramentas mais usadas: iptables / ipchains (linux) Ipfw (unix) Firewall Soluções em software livre Firewall Soluções em software livre Iptables: O iptables é um firewall em nível de pacotes e funciona baseado no endereço/porta de origem/destino do pacote, prioridade, host de destino/origem, etc.. Ele funciona através da comparação de regras para determinar se um pacote tem ou não permissão para passar Firewall Soluções em software livre Iptables: Também pode ser usado para: Modificar e monitorar o tráfego da rede Fazer NAT (masquerading, snat, dnat), Redirecionamento de pacotes, Marcação de pacotes, Modificar a prioridade de pacotes que chegam/saem. Contagem de bytes Balanceamento de tráfego, Criar proteções anti-spoofing Criar proteção contra syn flood Criar proteção contra DoS, etc... Firewall Soluções em software livre Iptables: O que são regras? As regras são como comandos passados ao iptables para que ele realize uma determinada ação (como bloquear ou deixar passar um pacote) de acordo com o endereço/porta de origem/destino, interface de origem/destino, etc. As regras são armazenadas dentro dos chains e processadas na ordem que são inseridas. As regras são armazenadas no kernel, o que significa que quando o computador for reiniciado tudo o que fez será perdido. Por este motivo elas deverão ser gravadas em um arquivo para serem carregadas a cada inicialização. Firewall Soluções em software livre Exemplo de regra iptables: Iptables –A INPUT –-dport 80 –j DROP Firewall Soluções em software livre Um pacote passa por várias etapas dentro do kernel do Linux, dependendo se ele for roteado pela máquina, destinado a ela ou se este pacote foi, na verdade, gerado pelo ip da máquina. O netfilter introduziu “chains“ (ganchos) , pontos ao longo do ciclo de vida de um pacote, onde o mesmo pode ser avaliado por regras de firewall. A figura 1 destaca estes pontos. Firewall Soluções em software livre Iptables: chains Firewall Soluções em software livre Iptables: O que são chains? Os Chains são locais onde as regras do firewall definidas pelo usuário são armazenadas para operação do firewall. Existem dois tipos de chains: os embutidos (como os chains INPUT, OUTPUT e FORWARD) e os criados pelo usuário. Os nomes dos chains embutidos devem ser especificados sempre em maiúsculas (note que os nomes dos chains são case-sensitive) Firewall Soluções em software livre Iptables: Tabelas Os conjuntos de chains são necessariamente agrupados em tabelas. Uma tabela praticamente define o seu poder, o que pode ou o que não pode realizar com o pacote e uma tabela possui vários conjuntos de regras. Ao todo são três tabelas principais existentes no iptables: filter; nat; mangle. Firewall Soluções em software livre Iptables Existem três tipos de tabelas pré-definidas. Filter Nat mangle Firewall Soluções em software livre Iptables Filter - Esta é a tabela padrão, contém 3 chains padrões: INPUT - Consultado para dados que chegam a máquina OUTPUT - Consultado para dados que saem da máquina FORWARD - Consultado para dados que são redirecionados para outra interface de rede ou outra máquina. Os chains INPUT e OUTPUT somente são atravessados por conexões indo ou originando de localhost. OBS: Para conexões locais, somente os chains INPUT e OUTPUT são consultados na tabela filter. Firewall Soluções em software livre Iptables Nat - Usada para dados que gera outra conexão (masquerading, source nat, destination nat, port forwarding, proxy transparente são alguns exemplos). Possui 3 chains padrões: PREROUTING - Consultado quando os pacotes precisam ser modificados logo que chegam. É o chain ideal para realização de DNAT e redirecionamento de portas (Fazendo DNAT, Seção 10.4.4). OUTPUT - Consultado quando os pacotes gerados localmente precisam ser modificados antes de serem roteados. Este chain somente é consultado para conexões que se originam de IPs de interfaces locais. POSTROUTING - Consultado quando os pacotes precisam ser modificados após o tratamento de roteamento. É o chain ideal para realização de SNAT e IP Masquerading Firewall Soluções em software livre Iptables Mangle - Utilizada para alterações especiais de pacotes -5 tabelas: INPUT - Consultado quando os pacotes precisam ser modificados antes de serem enviados para o chain INPUT da tabela filter. FORWARD - Consultado quando os pacotes precisam ser modificados antes de serem enviados para o chain FORWARD da tabela filter. PREROUTING - Consultado quando os pacotes precisam ser modificados antes de ser enviados para o chain PREROUTING da tabela nat. POSTROUTING - Consultado quando os pacotes precisam ser modificados antes de serem enviados para o chain POSTROUTING da tabela nat. OUTPUT - Consultado quando os pacotes precisam ser modificados antes de serem enviados para o chain OUTPUT da tabela nat. Firewall Soluções em software livre Iptables Mangle - Utilizada para alterações especiais de pacotes. Exemplos: Modificar o bit TOS do protocolo tcp. Marcar pacotes para roteamento Firewall Soluções em software livre Iptables O acesso as regras é feita de forma hierárquica de modo que regras que se encontram no topo da tabela se sobrepõem a regras que se encontram abaixo dela. O iptables sempre executará a acão que uma regra impõe a menos que uma regra anterior (acima na tabela) a impeça. Firewall Soluções em software livre Iptables Exemplo de hierarquia de regras Iptables –A INPUT –dport 80 –j ACCEPT Iptables –A INPUT –dport 80 –j DROP Neste caso o pacote para a porta 80 que tem destino localhost será aceito mesmo que uma regra de prioridade menor peça o contrário Firewall Soluções em software livre Iptables Manipulando regras. -A: adiciona novas regras no final do chain. -L: lista as regras de uma chain -D:Remove uma regra -I: Insere novas regras no começo da tabela -P: muda política padrão (accept/drop) -F: limpa as regras de uma chain ou de todas elas. Firewall Soluções em software livre Iptables Manipulando regras. Flags importantes: -d : destino -s : source --dport : porta de destino --sport: porta de source -p : protocolo -I: interface de acesso Firewall Soluções em software livre Iptables Manipulando regras. ALVOS: ACCEPT: aceita o pacotte DROP: descarta o pacote DENY: não aceita o pacote LOG: grava log do fluxo do pacote Firewall Soluções em software livre Iptables Exemplos: iptables -t nat -A POSTROUTING -s 192.168.1.2/32 -o ppp0 -j MASQUERADE iptables -t nat -A PREROUTING -s 200.200.201.4 -i eth0 -j DNAT –to 192.168.1.2 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 81 iptables -t mangle -A OUTPUT -o ppp0 -p tcp --dport 20 -j TOS --set-tos 8 iptables –A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s –j ACCEPT iptables -t filter -A syn-chain -p tcp --syn -m limit --limit 2/s -j ACCEPT