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