firewalls usando linux. 1 ipchainsipchains sucessor do ipfwadmsucessor do ipfwadm presente no linux...
TRANSCRIPT
Firewalls usando LinuxFirewalls usando Linux
2
IPChainsIPChains
• Sucessor do Sucessor do ipfwadmipfwadm• Presente no Linux a partir do kernel 2.1.102Presente no Linux a partir do kernel 2.1.102• Estável e seguroEstável e seguro• Não faz Não faz statefull packet inspectionstatefull packet inspection
3
IPChainsIPChains
• Listas de regras (chains)Listas de regras (chains)• Cada lista tem uma política defaultCada lista tem uma política default
– ACCEPT– REJECT– DENY
• Listas podem ser criadas para melhor organizar as Listas podem ser criadas para melhor organizar as regrasregras
• Cada regra tem um dos seguintes alvosCada regra tem um dos seguintes alvos– ACCEPT, REJECT, DENY– MASQ
4
IPChainsIPChains
• Como os pacotes passam pelos filtros...Como os pacotes passam pelos filtros...
RINPUT FORWARD OUTPUT
Processos Locais
IF IF
5
IPChainsIPChains
• ReferênciasReferências– Firewall and Proxy Server HOWTO– Linux IPCHAINS-HOWTO– Linux IP Masquerade HOWTO– todos podem ser encontrados em http://www.linuxdoc.org
6
NetFilterNetFilter
• Sucessor do IPChainsSucessor do IPChains• Presente no Linux a partir do kernel série 2.4.xPresente no Linux a partir do kernel série 2.4.x
– compatível com ipchains e ipfwadm
• Statefull Packet InspectionStatefull Packet Inspection• Tabelas (tables)Tabelas (tables)• Listas (chains) de RegrasListas (chains) de Regras
7
NetFilterNetFilter
• NetFilter FrameworkNetFilter Framework
RPRE_ROUTING FORWARD POST_ROUTING
Processos Locais
LOCAL INPUT LOCAL OUTPUT
IF IF
8
NetFilterNetFilter
• Filter TableFilter Table
• Filtragem de pacotes de acordo com regrasFiltragem de pacotes de acordo com regras
• Ação típica: DROP, ACCEPT, REJECT, LOGAção típica: DROP, ACCEPT, REJECT, LOG
9
NetFilterNetFilter
• Filter TableFilter Table
RPRE_ROUTING FORWARD POST_ROUTING IF IF
Processos Locais
INPUT OUTPUT
10
NetFilterNetFilter
• NAT TableNAT Table
• DNAT: redirecionar o acesso para um host internoDNAT: redirecionar o acesso para um host interno
• SNAT: redirecionar o acesso de hosts internos para SNAT: redirecionar o acesso de hosts internos para o firewallo firewall
• MASQUERADE: como SNAT, mas mais flexível, MASQUERADE: como SNAT, mas mais flexível, operando com IPs dinâmicosoperando com IPs dinâmicos
11
NetFilterNetFilter• NAT TableNAT Table
– Source NAT (S-NAT): Masquerading– Destination NAT (D-NAT): balanceamento, transparent
proxy
D-NAT
D-NAT
S-NATRPREROUTING FORWARD POSTROUTINGIF IF
Processos Locais
LOCAL INPUT OUTPUT
12
NetFilterNetFilter
• Mangle TableMangle Table
• Não deve ser usada para filtragem ou NATNão deve ser usada para filtragem ou NAT
• Uso: manipulação de camposUso: manipulação de campos
• Exemplo típico: alteração de TTL e TOSExemplo típico: alteração de TTL e TOS
13
NetFilterNetFilter
• Mangle TableMangle Table
RPREROUTING FORWARD POST_ROUTINGIF IF
Processos Locais
LOCAL INPUT OUTPUT
14
NetFilterNetFilter
RNAT
PREROUTING
IFIF
Processos Locais
MANGLEPREROUTING
FILTERINPUT
MANGLEINPUT
MANGLEOUTPUT
NATOUTPUT
FILTEROUTPUT
MANGLEPOSTROUTING
NATPOSTROUTING
FILTERFORWARD
MANGLEFORWARD
15
NetFilterNetFilter
• Estados de uma conexãoEstados de uma conexão
• New: o primeiro pacote de uma conexãoNew: o primeiro pacote de uma conexão
• Established: tráfego de uma conexão nos dois sentidosEstablished: tráfego de uma conexão nos dois sentidos
• Related: tráfego relacionado a uma outra conexão já Related: tráfego relacionado a uma outra conexão já estabelecida (established)estabelecida (established)
• Invalid: tráfego não identificado ou não pertencente a Invalid: tráfego não identificado ou não pertencente a nenhum outro estadonenhum outro estado
16
NetFilterNetFilter
• Formato básico de uma regraFormato básico de uma regra
iptables [-t table] command [match] [target/jump]iptables [-t table] command [match] [target/jump]
table: mangle, filter, nattable: mangle, filter, nat
command: append (A), delete (D), replace (R), insert (I), command: append (A), delete (D), replace (R), insert (I), list (L), flush (F), policy (P), etclist (L), flush (F), policy (P), etc
match: genérico, TCP, UDP, ICMP, especialmatch: genérico, TCP, UDP, ICMP, especial
target/jump: o que fazer/para onde desviartarget/jump: o que fazer/para onde desviar
17
NetFilterNetFilter
• MatchesMatches-p tcp-p tcp protocolo = tcpprotocolo = tcp-s 192.168.10.0/24-s 192.168.10.0/24 ip de origem = 192.168.10.xip de origem = 192.168.10.x-d !192.168.0.1-d !192.168.0.1 ip de destino distinto de 192.168.0.1ip de destino distinto de 192.168.0.1-i eth0-i eth0 interface de entrada = eth0interface de entrada = eth0-o eth1-o eth1 interface de saída = eth1interface de saída = eth1-p tcp --sport 22:80-p tcp --sport 22:80 porta de origem entre 22 e 80porta de origem entre 22 e 80-p tcp --dport 1024:-p tcp --dport 1024: porta de destino de 1024 a 65535porta de destino de 1024 a 65535-p tcp --tcp-flags SYN,FIN,ACK SYN-p tcp --tcp-flags SYN,FIN,ACK SYN
testa por syn=1, fin=0 e ack=0testa por syn=1, fin=0 e ack=0-p tcp --syn-p tcp --syn testa por syn=1, rst=0, e ack=0testa por syn=1, rst=0, e ack=0-p udp -dport 53-p udp -dport 53 porta de destino 53porta de destino 53
18
NetFilterNetFilter
• MatchesMatches
-p icmp --icmp-type 8-p icmp --icmp-type 8-m limit --limit 3/hour-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
19
NetFilterNetFilter
• targetstargets
iptables -A INPUT -p tcp -j tcp_packetsiptables -A INPUT -p tcp -j tcp_packetsdesvia o processamento para a cadeia tcp_packetsdesvia o processamento para a cadeia tcp_packets
iptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A INPUT -p tcp --dport 80 -j ACCEPTaceita pacotes tcp para a porta 80aceita pacotes tcp para a porta 80
iptables -A INPUT -p tcp --dport 23 -j DROPiptables -A INPUT -p tcp --dport 23 -j DROPdescarta pacotes tcp para a porta 23descarta pacotes tcp para a porta 23
20
NetFilterNetFilter
• targetstargetsiptables -t nat -A PREROUTING -p tcp -d 15.45.23.67iptables -t nat -A PREROUTING -p tcp -d 15.45.23.67 --dport 80 -j DNAT --to-destination 192.168.1.1---dport 80 -j DNAT --to-destination 192.168.1.1-192.168.1.10192.168.1.10
iptables -A FORWARD -p tcp -j LOG --log-tcp-optionsiptables -A FORWARD -p tcp -j LOG --log-tcp-options
iptables -t nat -A POSTROUTING -p TCP -j iptables -t nat -A POSTROUTING -p TCP -j MASQUERADE --to-ports 1024-31000MASQUERADE --to-ports 1024-31000
iptables -t nat -A PREROUTING -p tcp --dport 80 -j iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080REDIRECT --to-ports 8080
21
NetFilterNetFilter
• targetstargets
iptables -A FORWARD -p TCP --dport 22 -j REJECT iptables -A FORWARD -p TCP --dport 22 -j REJECT --reject-with tcp-reset--reject-with tcp-reset
iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to-source 194.236.50.155-194.236.50.160:1024-32000--to-source 194.236.50.155-194.236.50.160:1024-32000
iptables -t mangle -A PREROUTING -i eth0 -j TTL iptables -t mangle -A PREROUTING -i eth0 -j TTL --ttl-inc 1--ttl-inc 1
22
NetFilterNetFilter
• Exemplo: rc.firewall.txtExemplo: rc.firewall.txt
• Onde buscar mais informações (HOW-TOs)Onde buscar mais informações (HOW-TOs)– http://www.netfilter.org