iptables - inf.unioeste.br

Propaganda
Projeto de Ensino
Grupo de Estudos em Tecnologia de Redes e
Processamento Paralelo
iptables
Prof. Luiz Antonio
Unioeste
Introdução
●
Firewall
–
●
O Firewall é um programa que tem como objetivo
proteger a máquina contra acessos indesejados,
tráfego indesejado e proteger serviços que estejam
rodando na máquina.
Tipos de Firewall
–
Nível de Aplicação
–
Nível de Pacotes
2
iptables
●
Aspectos gerais
–
É um firewall em nível de pacotes
–
Baseado em regras
●
–
Também funciona como NAT
●
●
●
Altamente flexível
SNAT
DNAT
Instalação (Debian)
apt-get install iptables
3
iptables
●
●
Pacote
–
iptables - Sistema de controle para ipv4
–
ip6tables - Sistema de controle para ipv6
–
iptables-save - Salva as regras atuais
–
iptables-restore - Restaura regras salvas pelo
iptables-save
Log
–
Padrão é /var/log/kern.log.
4
iptables
●
●
O que são regras?
–
São como comandos passados ao iptables para
que ele realize uma determinada ação
–
Ex.: iptables
–
As regras são processadas na ordem em que são
inseridas nos chains
-A INPUT -s 123.123.123.1 -j DROP
O que são chains?
–
São locais onde as regras são armazenadas
–
Ex.: INPUT, OUTPUT e FORWARD
5
iptables
●
O que são tabelas?
–
São os locais usados para armazenar os chains
–
3 tabelas:
filter
● nat
● mangle
●
Tabela tabela1
Chain CHAIN1
Regra1: ...
Regra2: ...
RegraN: ...
Chain CHAIN2
Regra1: ...
Regra2: ...
RegraN: ...
Chain CHAINn
Regra1: ...
Regra2: ...
RegraN: ...
6
Tabela filter
●
Tabela padrão
●
3 chains:
–
INPUT - para dados que chegam a máquina
–
OUTPUT - para dados que saem da máquina
–
FORWARD - para dados que são redirecionados
para outra interface de rede ou outra máquina
7
Tabela nat
●
●
Usada para dados que geram outra conexão
–
masquerading
–
source nat
–
destination nat
–
proxy transparente
3 chains
–
PREROUTING
–
OUTPUT
–
POSTROUTING
8
Tabela mangle
●
Utilizada para alterações especiais de pacotes
–
●
Ex.: modificar o tipo de serviço
Chains
–
INPUT
–
FORWARD
–
PREROUTING
–
POSTROUTING
–
OUTPUT
9
IP masquerading
●
Conecta sua rede interna a Internet de forma
rápida e simples
192.168.0.5/24
192.168.0.6/24
Host com
iptables
Acesso a
Internet
eth0: 192.168.0.1/24
eth1: 200.201.81.130/24
192.168.0.11/24
LAN
WAN
10
IP masquerading
●
No host com iptables (“Servidor”)
iptables -t nat -A POSTROUTING -s
192.168.1.0/24 -j MASQUERADE
echo "1" >/proc/sys/net/ipv4/ip_forward
Nos demais hosts
Configurar gateway com ip do servidor
11
Manipulação de Chains
●
●
Opções para manipular os chains são
SEMPRE em maiúsculas
Adicionar regras - A
–
Exemplo: bloquear acesso ao localhost
iptables -t filter -A INPUT -d 127.0.0.1 -j DROP
–
incluir uma regra no chain INPUT (-A INPUT)
–
que bloqueia (-j DROP)
–
qualquer acesso indo ao endereço 127.0.0.1
(-d 127.0.0.1):
12
Manipulação de Chains
●
Listar regras – L
–
iptables [-t tabela] -L [chain] [opções]
–
Exemplo:
iptables -t filter -L INPUT
iptables -L INPUT -n --line-numbers
13
Manipulação de Chains
●
Apagar uma regra – D
–
Por número
iptables -t filter -D INPUT 1
–
Usando a mesma sintaxe da criação
iptables -t filter -D INPUT -d 127.0.0.1 -j
DROP
●
Inserir uma regra numa posição – I
–
iptables -t filter -I INPUT 1 -s
192.168.1.20 -d 127.0.0.1 -j ACCEPT
14
Manipulação de Chains
●
Substituir uma regra – R
–
Apagar e incluir a nova
Ou, substituir com -R
iptables -R INPUT 2 -d 127.0.0.1 -p
icmp -j DROP
–
–
2 é a indicação da linha da regra que sera
substituída
15
Manipulação de Chains
●
Criar um novo chain – N
iptables [-t tabela] [-N novochain]
●
Exemplo:
#criacao do chain
iptables -t filter -N INTERNET
#regra para o novo chain
iptables -t filter -A INTERNET
-d 192.168.0.20 -j DROP
#jump do chain INPUT para o INTERNET
iptables -t filter -A FORWARD -j INTERNET
16
Manipulação de Chains
●
●
Execução das regras anteriores
Ex.: pacote com endereço de origem
200.200.200.200
Tabela filter
Chain INPUT
Regra1: ...
Regra2: ...
Regra3: -j INTERNET
Chain INTERNET
Regra1: Regra1: -s 200.200.200.200 -j DROP
17
Manipulação de Chains
●
Renomear um chain criado pelo usuário – E
iptables -t filter -E chain-antigo novochain
●
Limpar as regras de um chain – F
iptables [-t tabela] [-F chain]
–
●
Obs.: Caso um chain não seja especificado, todos os
chains da tabela serão limpos
Apagar um chain criado pelo usuário – X
iptables [-t tabela] [-X chain]
18
Manipulação de Chains
●
Mudar policiamento padrão de um chain – P
–
O policiamento padrão é ACCEPT
–
Policiamento permissivo ou restritivo
–
Sintaxe:
iptables [-t tabela] [-P chain]
[ACCEPT/DROP]
–
Exemplo:
iptables -t filter -P INPUT DROP
19
Opções do iptables
●
Endereços de origem e destino
–
-s (source) e -d (destination)
–
Aceitam: IP completo, rede/mascara, hostname
–
Exemplos:
# Bloqueia o tráfego vindo da rede 200.200.200.*:
iptables -A INPUT -s 200.200.200.0/24 -j DROP
# Bloqueia conexões com o destino 10.1.2.3:
iptables -A OUTPUT -d 10.1.2.3 -j DROP
# Bloqueia o tráfego da máquina
# www.siteproibido.com a maquina 200.201.8.20
iptables -A INPUT -s www.siteproibido.com
-d 200.201.8.20 -j DROP
20
Opções do iptables
●
Interfaces de origem e destino
–
-i (in-interface) e -o (out-interface)
–
Exemplos:
#bloquear dados de 200.123.123.10 vindos da interface ppp0
iptables -A INPUT -s 200.123.123.10 -i ppp0 -j DROP
ou
iptables -A INPUT -s 200.123.123.10 -i ppp+ -j DROP
#bloquear trafego local para a Internet
iptables -A OUTPUT -o ppp+ -j DROP
#bloquear internet para eth1
iptables -A FORWARD -i ppp0 -o eth1 -j DROP
21
Opções do iptables
●
Especificar um protocolo
–
-p (protocol)
–
--sport (source-port) e --dport (destination-port)
●
–
Intervalos (0:1023) ou diversas (21,23,25,6667)
Exemplos:
#rejeitar todos os pacotes UDP vindos de 200.200.200.200:
iptables -A INPUT -s 200.200.200.200 -p udp -j DROP
# Bloqueia qualquer pacote indo para 200.200.200.200 na
# faixa de portas 0 a 1023
iptables -A OUTPUT -d 200.200.200.200 -p tcp --dport 0:1023
-j DROP
iptables -A INPUT -p tcp --syn --dport 23 -i ppp+ -j DROP
22
Opções do iptables
●
Registrar pacotes no syslog
# Para registrar o bloqueio de pacotes vindos de
# 127.0.0.1
iptables -A INPUT -s 127.0.0.1 -j LOG
●
Salvar e restaurando as regras
–
–
iptables-save >/dir/iptables-regras
iptables-restore </dir/iptables-regras
23
Tabela nat
●
SNAT – Source nat
●
DNAT – Destination nat
24
SNAT
●
●
●
#
#
#
#
Modifica o endereço de origem das máquinas
clientes antes dos pacotes serem enviados
Toda operação de SNAT é feita no chain
POSTROUTING
Exemplo:
Modifica o endereço IP dos pacotes vindos da máquina 192.168.1.2
da rede interna que tem como destino a interface eth1 para
200.200.217.40 (que é # o nosso endereço IP da interface ligada
a Internet).
iptables -t nat -A POSTROUTING
-s 192.168.1.0/24 -o eth0 -j
SNAT --to 200.201.81.110
25
DNAT
●
●
●
Modifica o endereço de destino das máquinas
clientes
é muito usado para fazer redirecionamento de
pacotes, proxyes transparentes e
balanceamento de carga
Toda operação de DNAT é feita no chain
PREROUTING
26
DNAT
●
Exemplo:
# Modifica o endereço IP destino dos pacotes de
# 200.201.81.110 vindo da interface eth1 para
# 192.168.1.2.
iptables -t nat -A PREROUTING -s 200.201.81.110 -i
eth1 -j DNAT --to 192.168.1.2
●
Pode-se usar faixas de destino
iptables -t nat -A PREROUTING -i eth1 -s
200.201.81.110 -j DNAT
--to 192.168.0.2-192.168.0.2
27
DNAT
●
Redirecionamento de portas – REDIRECT
–
ideal para proxy transparente
iptables -t nat -A PREROUTING -i eth0 -p tcp
--dport 80 -j REDIRECT --to-port 8080
28
Download