Iptables Básico
-
Upload
leonardo-damasceno -
Category
Technology
-
view
5.741 -
download
1
description
Transcript of Iptables Básico
SEGURANÇA COM IPTABLESSEGURANÇA COM IPTABLES
Autor: Leonardo “Stroyker” Damasceno
Tópicos
O que é iptablesiptables?
Esquema de rede com iptables
Chains
Tabelas
Sintaxe do iptables
Criando um chain
Renomeando um chain
Apagando um chain criado
Específicando um alvo
Regras
Adicionando Listando Apagando Substituindo Limpando
Parâmetros
Fazendo IP Masquerade
Fazendo DNAT
Fazendo SNAT
TESTES
O que é iptables?
Tem o objetivo de proteger a máquina contra acessos indesejados
Muito rápido, estável e seguro
Suporte a protocolos TCP/UDP/ICMP (incluindo tipos de mensagens icmp)
Foi implantado na versão 2.4 do kernel
Esquema de rede com iptables
Chains
O que são?
Tipos de chains Embutidos Criados
Tabelas FILTERFILTER
INPUT
OUTPUT
FORWARD
NATNAT PREROUTING
OUTPUT
POSTROUTING
MANGLEMANGLE INPUT
FORWARD
PREROUTING
POSTROUTING
OUTPUT
Tabela FILTERTabela FILTER
• Descrição:Descrição: É a tabela padrão, ela não precisa ser especificada na sintaxe do iptables.
• Chains:Chains:
– INPUT → INPUT → Consultado para dados que chegam a máquina
– OUTPUTOUTPUT → Consultado para dados que saem da máquina
– FORWARDFORWARD → Consultado para dados que são redirecionados para outra interface de rede ou outra máquina.
Exemplo:Exemplo: iptables -A FORWARD -i eth0 -o eth2 -m pkttype --pkt-type multicast -j DROP
Tabela NATTabela NAT• Descrição: Descrição: Usada para dados que geram outra conexão
(masquerading, source nat, destination nat, port forwarding, proxy transparente são alguns exemplos).
• Chain:Chain:
– PREROUTINGPREROUTING → Consultado quando os pacotes precisam ser modificados logo que chegam.
– OUTPUT → OUTPUT → Consultado quando os pacotes gerados localmente precisam ser modificados antes de serem roteados.
– POSTROUTING → POSTROUTING → Consultado quando os pacotes precisam ser modificados após o tratamento de roteamento.
Exemplo: Exemplo: iptables -t nat -A POSTROUTING -s 192.168.1.2 -o eth0 -j SNAT --to 200.200.217.40
Tabela MangleTabela Mangle• INPUTINPUT - Consultado quando os pacotes precisam ser modificados
antes de serem enviados para o chain INPUT da tabela filter.
• FORWARDFORWARD - Consultado quando os pacotes precisam ser modificados antes de serem enviados para o chain FORWARD da tabela filter.
• PREROUTINGPREROUTING - Consultado quando os pacotes precisam ser modificados antes de ser enviados para o chain PREROUTING da tabela nat.
• POSTROUTINGPOSTROUTING - Consultado quando os pacotes precisam ser modificados antes de serem enviados para o chain POSTROUTING da tabela nat.
• OUTPUTOUTPUT - Consultado quando os pacotes precisam ser modificados antes de serem enviados para o chain OUTPUT da tabela nat.
Sintaxe do iptables
Sintaxe: iptables [-t tabela] [opção] [chain] [dados] -j iptables [-t tabela] [opção] [chain] [dados] -j [ação][ação]
Exemplo: iptables -t filter -A INPUT -d 127.0.0.1 -j iptables -t filter -A INPUT -d 127.0.0.1 -j DROPDROP
Explicando:Explicando: Bloqueia qualquer acesso indo ao endereço 127.0.0.1, que é nosso localhost.
Criando um chainCriando um chain
Opção -N iptables [-t tabela] [-N nomedochain]
Exemplo:Exemplo: iptables -t filter -N internetiptables -t filter -N internet
– Inserindo regra no novo chain “internet”:
iptables -t filter -A internet -s 192.168.0.102 -j DROPiptables -t filter -A internet -s 192.168.0.102 -j DROP
iptables -t filter -A INPUT -j internetiptables -t filter -A INPUT -j internet
Criando um chainCriando um chain
Tabela de regras:
Explicação:Explicação: Fizemos um redirecionamento ou o conhecido “pulo”.
INPUT INTERNET-s 192.168.0.97 -j DROP -s 192.168.0.102 -j DROP-s 192.168.0.101 -j ACCEPT-s 192.168.0.103 -j ACCEPT-j internet
Renomeando um chainRenomeando um chain
Opção -E iptables [-t tabela] -E chain-antigo chain-novo
Exemplo:Exemplo: iptables -t filter -E internet testeiptables -t filter -E internet teste
Apagando um chain criadoApagando um chain criado
Opção -X iptables [-t tabela] -X [chain]iptables [-t tabela] -X [chain]
Exemplo:Exemplo: iptables -t filter -X testeiptables -t filter -X teste
OBS.:OBS.: Chains embutidos não podem ser apagados pelo usuário
Especificando o alvo
• Opção -j
– Iptables [- tabela] [-A chain] [dados] -j [ALVO]
• Tipos:Tipos:– ACCEPT → Aceita o pacote
– DROP → “Dropa”, ou simplismente não aceita o pacote
– REJECT → Rejeita o pacote, enviando uma mensagem
– LOG → Envia uma mensagem ao syslog caso a regra confira
– RETURN → Para o processamento do chain atual, e retorna
– QUEUE → Passa para o processamento de programas externos
Regras
O que são regras?
Exemplo:Exemplo: iptables -A INPUT -s 200.222.256.63 -j iptables -A INPUT -s 200.222.256.63 -j DROPDROP
OBS.: As regras são armazenadas dentro dos chains e processadas na ordem que são inseridas.
Adicionando regrasAdicionando regras
Opção -A:Opção -A: iptables [-t tabela] -A [chain] [dados] -j [ação]iptables [-t tabela] -A [chain] [dados] -j [ação]
Opção -I:Opção -I:
iptables [-t tabela] -I [chain] [dados] -j [ação]iptables [-t tabela] -I [chain] [dados] -j [ação]
Exemplo:Exemplo: iptables -t filter -I INPUT -s 192.168.0.10 -d iptables -t filter -I INPUT -s 192.168.0.10 -d 192.168.0.11 -j DROP192.168.0.11 -j DROP
Listando regrasListando regras
Opção -L iptables [-t tabela] -L [chain] [opções]iptables [-t tabela] -L [chain] [opções]
[opções]:-v → Exibe mais detalhes sobre as regras criadas nos chains
-n → Exibe endereços de máquinas/portas como números
-x → Exibe números exatos. Mostra a faixa de portas de uma regra
--line-numbers → Exibe o número da posição da regra
Exemplo:Exemplo: iptables -t filter -L INPUT --line-numbersiptables -t filter -L INPUT --line-numbers
Apagando uma regraApagando uma regra
Opção -D iptables [-t tabela] -D [chain] [posição]iptables [-t tabela] -D [chain] [posição] iptables [-t tabela] -D [chain] [dados] -j [ação]iptables [-t tabela] -D [chain] [dados] -j [ação]
Exemplo: Exemplo: iptables -t filter -D INPUT 1iptables -t filter -D INPUT 1
iptables -t filter -D INPUT -d 127.0.0.1 -j DROPiptables -t filter -D INPUT -d 127.0.0.1 -j DROP
Substituindo uma regraSubstituindo uma regra
Opção -R iptables [-t tabela] -R [chain] [posição] [regra] -j iptables [-t tabela] -R [chain] [posição] [regra] -j
[ação][ação]
Exemplo: Exemplo: iptables -R INPUT 1 -d 127.0.0.1 -p icmp -j iptables -R INPUT 1 -d 127.0.0.1 -p icmp -j DROPDROP
Limpando regrasLimpando regras
Opção -F iptables [-t tabela] -F [chain]iptables [-t tabela] -F [chain]
Exemplo: Exemplo: iptables -Fiptables -F
iptables -t filter -F INPUTiptables -t filter -F INPUT
ParâmetrosParâmetros
• Parâmetro -s– Usado para especificar endereços de origem. Também é
usado como --src ou --source
• Parâmetro -d– Usado para especificar endereços de destino. Também
usado como --dst e –destination
Exemplo: Exemplo: iptables -t filter -A INPUT -s 192.168.0.104 -d iptables -t filter -A INPUT -s 192.168.0.104 -d 192.168.0.102 -p icmp -j DROP192.168.0.102 -p icmp -j DROP
ParâmetrosParâmetros
• Parâmetro -i– Usado para especificar a interface de entrada.
• Parâmetro -o– Usado para especificar a interface de saída
Exemplo: Exemplo: iptables -t filter -A INPUT -s 192.168.0.104 -i iptables -t filter -A INPUT -s 192.168.0.104 -i ppp+ -j DROPppp+ -j DROP
Exemplo2:Exemplo2: iptables -A FORWARD -i ppp0 -o eth1 -j iptables -A FORWARD -i ppp0 -o eth1 -j DROPDROP
OBS.:OBS.: O sinal de "+" funciona como um coringa, assim a regra terá efeito em qualquer interface de ppp0 a ppp9.
ParâmetrosParâmetros
• Parâmetro -p– Usado para especificar um protocolo. Podem ser
especificados os procolos, TCPTCP, UDPUDP e ICMP.ICMP.
Exemplo: Exemplo: iptables -A INPUT -s 192.168.0.104 -p icmp -j DROP
• Parâmetro –dport
– Especifica uma porta ou faixa de portas de destino.
Exemplo: Exemplo: iptables -A OUTPUT -d 200.200.200.200 -p tcp --dport :1023 -j DROP
Fazendo IP MasqueradeFazendo IP Masquerade
• Descrição:Descrição: O IP Masquerading é um tipo especial de SNAT usado para conectar a sua rede interna a internet quando você recebe um IP dinâmico de seu provedor (como em conexões ppp).
Exemplo: Exemplo: iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADEo ppp0 -j MASQUERADE
OBS.:OBS.: Todas as operações de IP Masquerading são realizadas Todas as operações de IP Masquerading são realizadas no chain POSTROUTINGno chain POSTROUTING
Fazendo DNATFazendo DNAT
• Descrição:Descrição: DNAT (Destination nat - nat no endereço de destino) consiste em modificar o endereço de destino das máquinas clientes. O destination nat é muito usado para fazer redirecionamento de pacotes, proxys transparentes e balanceamento de carga.
Exemplo: Exemplo: iptables -t nat -A PREROUTING -s 200.200.217.40 -i eth0 -j DNAT --to 192.168.1.2
OBS.:OBS.: Toda operação de DNAT é feita no chain PREROUTING
Fazendo SNATFazendo SNAT
• Descrição:Descrição: SNAT (source nat - nat no endereço de origem) consiste em modificar o endereço de origem das máquinas clientes antes dos pacotes serem enviados. A máquina roteadora é inteligente o bastante para lembrar dos pacotes modificados e reescrever os endereços assim que obter a resposta da máquina de destino, direcionando os pacotes ao destino correto.
Exemplo: Exemplo: iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 200.200.217.40-200.200.217.50
OBS.:OBS.: SNAT faz a operação inversa do DNAT.
TESTESTESTES
1.1. Bloqueie qualquer acesso do protocolo ICMP para a sua máquina
2.2. Bloqueie pacotes que irão entrar na sua rede com o ip de origem 192.168.0.15 na porta 22 (por ssh)
3.3. Faça IP Masquerade da sua rede 192.168.1.0/24
4.4. Bloqueie a passagem dos pacotes da interface eth1 para eth2
Dúvidas?