220 likes | 309 Views
Firewalls usando Linux. 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
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