slides iptables
TRANSCRIPT
-
Firewall
Prof. Juliana Cristina [email protected]
-
Iptables O IPTables uma ferramenta de edio da tabela de filtragem
de pacotes Com ele voc capaz de analisar o cabealho dos pacotes e tomar
decises sobre os seus destinos No a nica soluo existente para controle desta filtragem, temos
ainda as antigas ipfwadm e ipchains, dentre outros.
A filtragem de pacotes est implementada no ncleo do SO No h instalao
O iptables um firewall com estado (stateful). Os anteriores eram stateless. Modo de filtragem Stateless: trata cada pacote roteado pelo firewall
como um pacote individual. mais simples de implementar e possui melhor desempenho
Modo de filtragem Stateful: cria um poderoso sistema de firewall que se "lembra" das conexes entrantes, tratando de forma mais inteligente as atividades da rede.
-
Processamento de pacotes no Linux
-
Ganchos do iptables
-
Regras do IPTables
-
Tabelas, chains e regras O Iptables trabalha com Tabelas, Chains e Regras
Existem 3 tabelas possveis de serem utilizadas:
mangle: tem o objetivo de prover QoS (raramente usada)
filter: a tabela padro, utilizada nos trfegos de dados comuns
nat: usada quando h ocorrncia de NAT
Chains:
Atravs delas podemos especificar quando os pacotes so processados, seja qual for a tabela utilizada
PREROUTING
POSTROUTING
INPUT
OUTPUT
FORWARD
-
Entendendo as regras As regras bsicas so formadas por:
Tabela (-t) Se nenhuma tabela indicada, utiliza-se a filter
Opo (-A, -I, -D, -R, -P) adio, insero, remoo, substituio, poltica
Chain Informa a que chain a opo se aplica
Dados (-s, -d, -i, -o, -m, -p) Normalmente caracterizam a que pacote a regra se
aplica
Ao (-j) O que fazer com o pacote que se enquadre na regra
-
Entendendo os argumentos Opes
-A Adiciona ao final das regras de uma certa chain
-D ou -D Remove uma regra de uma chain especificando a regra completa
ou a posio da regra naquela chain (a primeira regra a 1 e a numerao segue crescente)
-R Substitui a regra indicada de uma certa chain pela nova regra
fornecida
-I Insere uma nova regra na posio indicada da chain
-P Define uma ao padro para a chain
Caso nenhuma regra sirva para um pacote, a ao padro executada
-
Entendendo os argumentos Aes
-j ACCEPT Aceita o pacote e ele segue o fluxo normal
-j DROP Descarta o pacote silenciosamente
-j REJECT Descarta o pacote e envia uma mensagem ICMP
origem informando sobre o descarte
-j LOG Registra a passagem do pacote
Trata-se da nica ao que se for executada no interrompe o processamento das regras, ou seja, o pacote continua sendo avaliado pelas regras seguintes
-
Ententendo os argumentos Dados
-s ou -s ou -s / Verifica a origem do pacote (source)
Ex: -s 192.168.113.42 -s www.faesa.br -s 192.168.113.0/24
-d ou -d ou -d / Verifica o destino do pacote
Ex: -d 192.168.113.42 -d www.faesa.br -d 192.168.113.0/24
-i Verifica a interface por onde o pacote chegou (input)
Ex: -i eth0
-o Verifica a interface por onde o pacote sair (output)
Ex: -o eth1
-p Verifica o protocolo de transporte utilizado (tcp, udp ou icmp)
Ex: -p tcp
-m Mdulo utilizado pela regra (state, mac etc)
-
Funcionamento bsico Lista de regras que so interpretadas em
seqncia para cada pacote recebido/gerado pela mquina
Se a regra atender, aplicada e para-se por a (as regras seguintes no so avaliadas)
Ex: iptables A INPUT s 192.168.1.23 j ACCEPT
iptables A INPUT s 192.168.1.0/24 j REJECT
Aceita receber pacotes que venham de 192.168.1.23 e
recusa pacotes das demais mquinas da rede 192.168.1.0
-
Dados adicionais Caso o protocolo seja TCP ou UDP, pode-se indicar a porta de
origem ou destino -p tcp --sport 80 -p tcp --sport 80:100 -p udp --dport 53 -p udp --dport 53:65
Para se indicar mltiplas portas em uma regra -p tcp -m multiport --sport 80,90,100,110
Para se indicar o endereo MAC -m mac --mac-source 0A:00:AB:3F:00:0E
S pode ser usado em PREROUTING, FORWARD e INPUT
Para criar uma regra baseada em estados -m state --state RELATED,ESTABLISHED
ESTABLISHED: pacote pertencente a conexo j estabelecida RELATED: pacote de uma nova conexo relacionada com uma j existente INVALID: pacote pertencente a conexo inexistente que deve possuir
dados ou cabealho com problemas NEW: estabelecer nova conexo ou pertence a conexo desconhecida
Os mdulos de kernel ip_conntrack_* devem ser carregados modprobe ip_conntrack_*
-
Exemplos Regras:
iptables -A INPUT -s 200.241.13.0/24 -j DROP Descarta pacotes destinados a esta mquina que venham da rede
200.241.13.0/24
iptables -A FORWARD -d 18.0.0.0/8 -j REJECT Descarta pacotes que sejam encaminhados por esta mquina e
cujo destino seja a rede 18.0.0.0/8 e envia ICMP para origem do pacote informando sobre descarte
iptables -A OUTPUT -p icmp -j ACCEPT Deixa passar todos os pacotes ICMP gerados pela mquina
iptables -A FORWARD -p tcp --dport 80:100 -j ACCEPT Deixa passar todos os pacotes encaminhados por esta mquina
que sejam destinados s portas TCP de 80 a 100
iptables -A INPUT -p udp --sport 53 -j DROP Descarta todos os pacotes destinados a esta mquina que tenham
vindo de um servidor DNS (porta 53 UDP)
-
Exemplos Regras:
iptables -A INPUT -i eth0 -j DROP Descarta todos os pacotes destinados a esta mquina que
cheguem pela eth0
iptables A INPUT -i !eth0 -j DROP Descarta todos os pacotes destinados a esta mquina exceto os
que cheguem pela eth0
iptables -A FORWARD -i eth0 -s 192.168.113.0/24 -p tcp -m multiport --dports 22,53,80 -j ACCEPT Aceita todos os pacotes que sejam encaminhados por esta
mquina e que tenham vindo da rede 192.168.113.0/24, a partir da interface eth0 e que sejam destinados a servidores SSH, DNS ou Web
iptables -P FORWARD DROP Caso um pacote que ser encaminhado por esta mquina no se
encaixe em nenhuma regra, ser descartado
-
Exemplos Regras:
iptables -A FORWARD -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT Aceita pacotes que sero encaminhados, que chegaram pela eth0 e que
esto relacionados com conexes pr-estabelecidas
iptables -A OUTPUT -p tcp -d www.google.com -j DROP Descarta pacotes TCP que esta mquina gere com destino a
www.google.com
iptables -L -n Lista todas as regras de todas as chains sem resolver nomes
iptables -L INPUT -n -v Lista todas as regras da chain INPUT sem resolver nomes com estatsticas
de uso das regras
iptables -F Remove todas as regras de todas as chains
iptables -F OUTPUT Remove todas as regras da chain OUTPUT
-
Para salvar/recuperar as regras Para salvar as regras
iptables-save > arquivo_com_regras
Para recuperar as regras
iptables-restore < arquivo_com_regras
Para ativar as regras a cada boot:
Editar o arquivo /etc/network/interfaces: auto eth0
iface eth0 inet dhcp
pre-up iptables-restore < /etc/iptables.up.rules