220 likes | 312 Vues
Learn about IPChains and NetFilter, essential firewall tools for Linux systems. Explore rules, tables, and matches for secure network filtering. Find examples and detailed information in this comprehensive guide.
E N D
IPChains • Sucessor do ipfwadm • Presente no Linux a partir do kernel 2.1.102 • Estável e seguro • Não faz statefull packet inspection
IPChains • Listas de regras (chains) • Cada lista tem uma política default • ACCEPT • REJECT • DENY • Listas podem ser criadas para melhor organizar as regras • Cada regra tem um dos seguintes alvos • ACCEPT, REJECT, DENY • MASQ
IPChains • Como os pacotes passam pelos filtros... IF R IF INPUT FORWARD OUTPUT Processos Locais
IPChains • Referências • Firewall and Proxy Server HOWTO • Linux IPCHAINS-HOWTO • Linux IP Masquerade HOWTO • todos podem ser encontrados em http://www.linuxdoc.org
NetFilter • Sucessor do IPChains • Presente no Linux a partir do kernel série 2.4.x • compatível com ipchains e ipfwadm • Statefull Packet Inspection • Tabelas (tables) • Listas (chains) de Regras
NetFilter • NetFilter Framework IF R IF PRE_ROUTING FORWARD POST_ROUTING LOCAL INPUT LOCAL OUTPUT Processos Locais
NetFilter • Filter Table • Filtragem de pacotes de acordo com regras • Ação típica: DROP, ACCEPT, REJECT, LOG
NetFilter • Filter Table IF R IF PRE_ROUTING FORWARD POST_ROUTING INPUT OUTPUT Processos Locais
NetFilter • NAT Table • DNAT: redirecionar o acesso para um host interno • SNAT: redirecionar o acesso de hosts internos para o firewall • MASQUERADE: como SNAT, mas mais flexível, operando com IPs dinâmicos
NetFilter • NAT Table • Source NAT (S-NAT): Masquerading • Destination NAT (D-NAT): balanceamento, transparent proxy IF R IF PREROUTING FORWARD POSTROUTING D-NAT S-NAT LOCAL INPUT OUTPUT D-NAT Processos Locais
NetFilter • Mangle Table • Não deve ser usada para filtragem ou NAT • Uso: manipulação de campos • Exemplo típico: alteração de TTL e TOS
NetFilter • Mangle Table IF R IF PREROUTING FORWARD POST_ROUTING LOCAL INPUT OUTPUT Processos Locais
NetFilter IF MANGLE PREROUTING MANGLE FORWARD NAT POSTROUTING IF NAT PREROUTING FILTER FORWARD MANGLE POSTROUTING R FILTER OUTPUT MANGLE INPUT NAT OUTPUT FILTER INPUT MANGLE OUTPUT Processos Locais
NetFilter • Estados de uma conexão • New: o primeiro pacote de uma conexão • Established: tráfego de uma conexão nos dois sentidos • Related: tráfego relacionado a uma outra conexão já estabelecida (established) • Invalid: tráfego não identificado ou não pertencente a nenhum outro estado
NetFilter • Formato básico de uma regra • iptables [-t table] command [match] [target/jump] • table: mangle, filter, nat • command: append (A), delete (D), replace (R), insert (I), list (L), flush (F), policy (P), etc • match: genérico, TCP, UDP, ICMP, especial • target/jump: o que fazer/para onde desviar
NetFilter • Matches • -p tcp protocolo = tcp • -s 192.168.10.0/24 ip de origem = 192.168.10.x • -d !192.168.0.1 ip de destino distinto de 192.168.0.1 • -i eth0 interface de entrada = eth0 • -o eth1 interface de saída = eth1 • -p tcp --sport 22:80 porta de origem entre 22 e 80 • -p tcp --dport 1024: porta de destino de 1024 a 65535 • -p tcp --tcp-flags SYN,FIN,ACK SYN • testa por syn=1, fin=0 e ack=0 • -p tcp --syn testa por syn=1, rst=0, e ack=0 • -p udp -dport 53 porta de destino 53
NetFilter • Matches • -p icmp --icmp-type 8 • -m limit --limit 3/hour • -m mac --mac-source 00:00:00:00:00:01 • -p tcp -m multiport --source-port 22,53,80,110 • -p tcp -m multiport --port 22,53,80,110 • -m owner --uid-owner 500 • -m state --state RELATED,ESTABLISHED • -p tcp -m tos --tos 0x16 • -m ttl --ttl 60
NetFilter • targets • iptables -A INPUT -p tcp -j tcp_packets • desvia o processamento para a cadeia tcp_packets • iptables -A INPUT -p tcp --dport 80 -j ACCEPT • aceita pacotes tcp para a porta 80 • iptables -A INPUT -p tcp --dport 23 -j DROP • descarta pacotes tcp para a porta 23
NetFilter • targets • iptables -t nat -A PREROUTING -p tcp -d 15.45.23.67 • --dport 80 -j DNAT --to-destination 192.168.1.1-192.168.1.10 • iptables -A FORWARD -p tcp -j LOG --log-tcp-options • iptables -t nat -A POSTROUTING -p TCP -j MASQUERADE --to-ports 1024-31000 • iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
NetFilter • targets • iptables -A FORWARD -p TCP --dport 22 -j REJECT • --reject-with tcp-reset • iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT • --to-source 194.236.50.155-194.236.50.160:1024-32000 • iptables -t mangle -A PREROUTING -i eth0 -j TTL • --ttl-inc 1
NetFilter • Exemplo: rc.firewall.txt • Onde buscar mais informações (HOW-TOs) • http://www.netfilter.org