iptables básico

29
SEGURANÇA COM IPTABLES SEGURANÇA COM IPTABLES Autor: Leonardo “Stroyker” Damasceno

Upload: leonardo-damasceno

Post on 09-Jun-2015

5.741 views

Category:

Technology


1 download

DESCRIPTION

Entendendo e dismistificando o iptables.

TRANSCRIPT

Page 1: Iptables Básico

SEGURANÇA COM IPTABLESSEGURANÇA COM IPTABLES

Autor: Leonardo “Stroyker” Damasceno

Page 2: Iptables Básico

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

Page 3: Iptables Básico

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

Page 4: Iptables Básico

Esquema de rede com iptables

Page 5: Iptables Básico

Chains

O que são?

Tipos de chains Embutidos Criados

Page 6: Iptables Básico

Tabelas FILTERFILTER

INPUT

OUTPUT

FORWARD

NATNAT PREROUTING

OUTPUT

POSTROUTING

MANGLEMANGLE INPUT

FORWARD

PREROUTING

POSTROUTING

OUTPUT

Page 7: Iptables Básico

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

Page 8: Iptables Básico

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

Page 9: Iptables Básico

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.

Page 10: Iptables Básico

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.

Page 11: Iptables Básico

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

Page 12: Iptables Básico

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

Page 13: Iptables Básico

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

Page 14: Iptables Básico

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

Page 15: Iptables Básico

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

Page 16: Iptables Básico

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.

Page 17: Iptables Básico

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

Page 18: Iptables Básico

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

Page 19: Iptables Básico

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

Page 20: Iptables Básico

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

Page 21: Iptables Básico

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

Page 22: Iptables Básico

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

Page 23: Iptables Básico

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.

Page 24: Iptables Básico

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

Page 25: Iptables Básico

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

Page 26: Iptables Básico

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

Page 27: Iptables Básico

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.

Page 28: Iptables Básico

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

Page 29: Iptables Básico

Dúvidas?