quarta-feira, 17 de junho de 2009

RESUMO IPTABLES


RESUMO IPTABLES


Olá pessoal irei fazer um pequeno resumo a respeito do IPTBLES, o front-end para Netfilter( módulo do kernel Linux, no qual implementa o firewall). Esta é a primeira parte do resumo, em breve trarei a segunda parte. Abraços e bons estudos!

*FIREWALL FILTRO DE PACOTES
*FIREWALL NAT
*FIREWALL MANGLE


*iptables-save* = salva dados das regras que estão na memória RAM em determinado arquivo informado pelo administrador. Ex: Quando se liga o PC e se adiciona as regras via linha de comando e após a reiniciação do PC, todas as regras são apagadas. Com o comando citado temos um salvamento automático das regras que foram digitadas e armazenadas em RAM para um arquivo especificado pelo administrador.


Ex: iptables-save > /home/marcos/regras_firewall.txt

*iptables-restore* = habilita as regras que foram salvas com o "iptables-save" para a memória RAM

*iptables* = Aplicativo principal do pacote iptables para protocolos ipv4

*ip6tables* = Aplicativo principal do pacote iptables para protocolos ipv6



iptables -A = ADICIONAR REGRA
iptables -D = REMOVER REGRA
INPUT = PACOTES QUE ENTRAM NA INTERFACE ETHERNET
OUPUT = PACOTES QUE SAEM DA INTERFACE ETHERNET
FORWARD = ENCAMINHA PACOTES
-i = INTERFACE
-lo = LOOPBACK
-j = TARGET -> AlVO( ACCEPT, FORWARD ou DROP)
-t = TABELA

TABELA NAT:

* PREROUTING : Utilizado quando há necessidade de se fazer alterações em pacotes antes que os mesmo sejam roteados

*OUTPUT: Trata os pacotes emitidos pelo firewall

*POSROUTING: Utilizado quando há a necesside de se fazer alterações em pacotes após o tratamento de roteamento.


IMPORTANTE: O iptables nada mais é do que um front-end do Netfilter( o firewall do linux a nível de kernel).
Veja abaixo o histórico de front-ends de firewall para linux:

KERNEL 2.0 - IPFWADM
KERNEL 2.2 - IPCHAINS
KERNEL 2.4/2.6 - IPTABLES


iptables -t filter -> Insere uma regra utilizando a tabela Filter ( PADRÃO )
iptables -t nat -> Insere uma regra utilizando a tabela NAT
iptables -t mangle -> Insere uma regra utilizando a tabela Mangle

Sintaxe para utilização do firewall: iptables [tabela] [comando] [ação]

[Comandos]

-A -> Adiciona regra ao final da lista.
Ex: iptables -A FORWARD

-D -> Deleta regra.
Ex: iptables -D INPUT

-L -> Lista regras.
Ex1: iptables -L # Lista todas as regrs
Ex2: iptables -L FORWARD # Listagem específica para a chain FORWARD

-P -> Altera a política das CHAINS( situações), o padrão é sempre ACCEPT.
CHAINS disponíveis: ACCEPT, FORWARD e DROP.
Ex: iptables -P INPUT DROP

-F -> Remove todas as entradas adicionadas a lista de regras sem alterar a política padrão( - P ) .
Ex:1: iptables -F # Remove todas as regras
Ex2: iptables -F OUTPUT # Remove todas as regras referentes a OUTPUT chain

-I -> Insere uma regra ao início da lista.
Ex: iptables -I OUTPUT

-R -> Substitui uma regra já adicionada por outra.
Ex: iptables -R FORWARD 2 -s 10.0.1.1 -d 10.0.2.0/8 -j DROP
#Substitui a segunda regra referente a FORWARD chain pela seguinte: "-s 10.0.1.1 -d 10.0.2.0/8 -j DROP"

-N -> Permite inserir/criar uma nova CHAIN a tabela especificada
Ex: iptables -t filter -N internet

-E -> Renomeia o nome de uma nova chain ( criada por você )
Ex: iptables -E acesso_web acesso_intranet
# Troquei o nome da chain já criada, de acesso_web para acesso_intranet .

-X -> Apaga uma chain criado pelo adminstrador do firewall
Ex: iptables -X acesso_intranet


[Ação]

-p -> Protocolo
Exs: -p icmp, -p tcp, -p udp

-i -> Interface de Entrada( input )
Exs: -i eth0, -i eth1, -i lo

-o -> Interface de Saída ( output )
Exs: -o eth1, -o eth2

-s -> Especifica a origem do pacote ao qual a regra deve ser aplicada
Ex1: -s 10.0.1.0/255.0.0.o
Ex2: -s www.orkut.com.br

-d -> Especifica o destino do pacote ao qual a regra deve ser aplicada
Ex: -d www.receita.fazenda.gov.br

! -> Utilizado como elemento de exceção. Utilizado juntamente com as ações -s, -d, -p, -i, -o, etc.
Ex1: -p ! icmp
Refere-se a todos os protocolos possíveis com excessão do ICMP.
Ex2: -s ! 10.0.1.0
Refere-se a todos os endereços possíveis com excessão do endereço 10.0.1.0

-j -> Define o alvo(target) do pacote caso o mesmo se encaixe a uma regra. As principais ações são ACCEPT, DROP, REJECT e LOG.

-sport -> Porta de origem( source port) do pacote. Apenas para os protocolos TCP e UDP.
Ex: -p tcp -sport 80
Refere-se ao TCP na porta 80 ( HTTP)

-dport -> Porta de destino( destination port) do pacote. Apenas para os protocolos TCP e UDP.
Ex: -p tcp -dport 23
Refere-se ao TCP na porta 23 ( TELNET)

[TARGETS - ALVOS]

ACCEPT - Permite a passagem do pacote

DROP - Nega a passagem do pacote (descarta o pacote) e não avisa ao emissor sobre a negação.

REJECT - Nega a passagem do pacote (descarta o pacote) e avisa ao emissor sobre a negação, gerando assim uma mensagem de erro.

LOG - Cria uma entrada de log em /var/log/messages sobre a utilização dos demais alvos(targets). É recomendado colocar esta opção antes dos demais alvos.

RETURN - Retorna o processamento do chain anterior sem processar o resto do chain atual.

SNAT - Altera o endereço de origem das máquinas clientes antes dos pacotes serem roteados.
Ex: Host A quer enviar um pacote para Host B, então o pacote deve ser enviado de A para B através de um Host C.

DNAT - Altera o endereço de destino das máquinas clientes. Pode por exemplo , receber um certo pacote destinado a porta 80 do host A e encaminhá-lo por conta própria a porta 3128 do host B. Isso é o que chamamos de Proxy Transparent, um encaminhamento dos pacotes dos clientes sem que os mesmo possuam a opção de escolher ou não tal roteamento.

REDIRECT - Realiza o redirecionamento de portas em conjunto com a opção --to-port

TOS - Tipo de serviço ou Type of Service. Determina a prioridade de entrada/saída de um pacote levando-se em conta o tipo de serviço( TOS - Disponível no cabeçalho IPV4)
















2 comentários:

Jeanderson disse...

Ae, me ajudou no projeto.
Muito bom, valeu Marcos.

Marcos César disse...

Valeu Jeanderson, eu também agradeço eternamente todo seu empenho no projeto no qual fui beneficiado também. Espero em breve poder atualizar o blog quando tiver um tempo extra. Abraços.