SlideShare una empresa de Scribd logo
1 de 7
Descargar para leer sin conexión
Tutorial Firewall em Linux
Acadêmicos: Felipe Zottis e Cleber Pivetta

Firewall
Firewall é um quesito de segurança com cada vez mais importância no
mundo da computação. À medida que o uso de informações e sistemas é cada
vez maior, a proteção destes requer a aplicação de ferramentas e conceitos de
segurança eficientes. O firewall é uma opção praticamente imprescindível.
Firewall é o nome dado ao mecanismo de uma rede de computadores
que tem por objetivo aplicar uma política de segurança a um determinado ponto
de controle da rede. Seu objetivo é permitir somente a transmissão e a
recepção de dados autorizados.
Este mecanismo atua como uma defesa de um computador ou de uma
rede, controlando o acesso ao sistema por meio de regras e a filtragem de
dados. A vantagem do uso de firewalls em redes, é que somente um
computador pode atuar como firewall, não sendo necessário instalá-lo em cada
máquina conectada. A figura abaixo ilustra a idéia de Firewall.

►Funcionamento do Firewall
Há varias formas de funcionamento de um firewall. Estas formas variam
de acordo com o sistema, aplicação ou do desenvolvedor do programa.
Entretanto, existem dois conceitos básicos de utilização de firewall:
- Firewall em nível de Pacotes
- Firewall em nível de Aplicação
Neste tutorial o enfoque será dado ao conceito de Firewall em nível de
pacotes com a utilização da Ferramenta Iptables em sistemas Linux.

Iptables
O Iptables é uma ferramenta de edição da tabela de filtragem de
pacotes, ou seja, com ele você é capaz de analisar o cabeçalho e tomar
decisões sobre os destinos destes pacotes.
O iptables é um firewall com estado, ou seja, um firewall stateful. Os
anteriores eram stateless. O modo de filtragem 'Stateless' tende a tratar cada
pacote roteado pelo firewall como pacotes individuais, sendo mais simples de
implementar e por terem uma resolução mais rápida que um do tipo stateful,
podem ser usados para obterem um desempenho melhor em determinadas
situações onde existem regras de nível de rede bem simples.
Através destas regras poderemos fazer com que os pacotes possam ser
ou não recebidos a rede toda, a determinada máquina, interface ou mesmo
porta de conexão. O Iptables trabalha através de Tabelas, Chains e Regras:

►Instalação Iptables
Os requerimentos básicos para o funcionamento do Iptables são um
computador sobre a arquitetura 386 com, no mínimo, 4MB de RAM e um kernel
da série 2.4 ou superior.
Para a realização deste tutorial, fora utilizado a sistema operacional
Linux, sendo a distribuição Debian.
Como este experimento fora realizado na rede interna da Universidade
Estadual do Oeste do Paraná, é necessário realizar a exportação do proxy
utilizado pela faculdade, para que assim seja possível realizar o download do
pacote de instalação do Iptables, lembrando que a maioria dos releases atuais
do Linux já possui o Iptables no seu Kernel.
→ export http_proxy=htpp://proxy.unioeste.br:8080
Para realizar a instalação de determinados programas, o Linux permite
que o pacote de instalação destes sejam obtidos por download através do
comando:
→ apt-get install iptables

Regras no Iptables
As regras são como comandos passados ao iptables para que ele
realize uma determinada ação (como bloquear ou deixar passar um pacote) de
acordo com o endereço/porta de origem/destino, interface de origem/destino,
etc. As regras são armazenadas dentro dos Chains e processadas na ordem
que são inseridas.
Exemplo de Regra: bloqueia qualquer acesso indo ao endereço 127.0.0.1
→ iptables -t filter -A INPUT -d 127.0.0.1 -j DROP

Chains
Os Chains são locais onde as regras do firewall são definidas pelo
usuário e armazenadas para operação do firewall. Existem dois tipos de
Chains: os embutidos (como os Chains INPUT, OUTPUT e FORWARD) e os
criados pelo usuário. Os nomes dos Chains embutidos devem ser
especificados sempre em maiúsculas (note que os nomes dos Chains são
case-sensitive, ou seja, o Chain input é completamente diferente de INPUT).

Tabelas
As Tabelas armazenam os Chains e o conjunto de regras com uma
determinada característica em comum. Existem 3 tabelas disponíveis no
Iptables:

►Tabela Filter
É a tabela padrão do Iptables, composto por 3 Chains:
•
•
•

INPUT - Consultado para dados que chegam à máquina.
OUTPUT - Consultado para dados que saem da máquina.
FORWARD - Consultado para dados que são redirecionados para outra
interface de rede ou outra máquina.

►Tabela Nat
Utilizada para dados que geram outra conexão (masquerading, source
nat, destination nat, port forwarding, proxy transparente são alguns exemplos).
Ela é composta por 3 Chains:
•

•

•

PREROUTING - Consultado quando os pacotes precisam ser
modificados logo que chegam. É o Chain ideal para realização de DNAT
e redirecionamento de portas.
OUTPUT - Consultado quando os pacotes gerados localmente precisam
ser modificados antes de serem roteados. Este Chain somente é
consultado para conexões que se originam de IPs de interfaces locais.
POSTROUTING - Consultado quando os pacotes precisam ser
modificados após o tratamento de roteamento. É o Chain ideal para
realização de SNAT e IP Masquerading.
►Tabela Mangle
A tabela MANGLE implementa alterações especiais em pacotes em um
nível mais complexo. A tabela mangle é capaz, por exemplo, de alterar a
prioridade de entrada e saída de um pacote baseado no tipo de serviço (TOS)
o qual o pacote se destinava. Ela Possui 2 Chains padrões:
•
•

OUTPUT - Altera pacotes de forma especial gerados localmente antes
que os mesmo sejam roteados.
PREROUTING – Modifica pacotes dando-lhes um tratamento especial
antes que os mesmos sejam roteados.

* Neste tutorial o enfoque será dado à tabela padrão do Iptables, ou seja, a
tabela Filter.

Fazendo o IP Masquerading
Antes de manipular as regras é necessário que o kernel tenha suporte
ao iptables e ip_forward. Com os dois comandos abaixo é habilitado o
masquerading para todas as máquinas da rede 192.168.1.*:
→ iptables -t nat -A POSTROUTING -s 192.168.1.0/24 –j
MASQUERADE
→ echo "1" >/proc/sys/net/ipv4/ip_forward
A configuração do servidor Linux está completa, agora os clientes da
rede precisarão ser configurados para usar o endereço IP do servidor Linux
como gateway

Manipulação de Chains
Nesta sessão serão mostrados alguns dos comandos mais utilizados
para a manipulação de regras.

► Listar Regras – L
Utilizando a sintaxe abaixo é possível exibir todas as regras já criadas.
→ iptables [-t tabela] -L [Chain] [opções]
No exemplo abaixo o comando lista as regras do Chain INPUT
→iptables -t filter -L INPUT
Podem-se utilizar também algumas opções para pra listar o conteúdo dos
Chains:
•

-v - Exibe mais detalhes sobre as regras criadas nos Chains

•

-n - Exibe endereços de máquinas/portas como números ao invés de
tentar a resolução DNS e consulta ao /etc/services. A resolução de
nomes pode tomar muito tempo dependendo da quantidade de regras
que suas tabelas possuem e velocidade de sua conexão.
-x - Exibe números exatos ao invés de números redondos. Também
mostra a faixa de portas de uma regra de firewall.
--line-numbers - Exibe o número da posição da regra na primeira coluna
da listagem.

•
•

► Adicionando regras – A
Adiciona uma regra na Tabela e Chain determinados.
Como exemplo será acrescentado uma regra no Chain INPUT (-A
INPUT) que bloqueie (-j DROP) qualquer acesso indo ao endereço 127.0.0.1 (d 127.0.0.1):
→ iptables -t filter -A INPUT -d 127.0.0.1 -j DROP

► Apagando Regras – D
A exclusão de regras pode ser feita de duas formas, Quando sabemos
qual é o número da regra no Chain (listado com a opção -L) podemos
referenciar o número diretamente, como no exemplo abaixo:
→ iptables -t filter -D INPUT 1
Porem, às vezes o conjunto de regras pode ser muito extenso, o que
dificulta saber o numero da regra. Neste caso usamos a mesma sintaxe para
criar a regra no Chain, mas trocamos -A por -D:
→ iptables -t filter -D INPUT -d 127.0.0.1 -j DROP

► Inserindo Regra em uma Linha Especifica – I
Este comando é útil no caso do usuário necessitar inserir uma regra em
uma determinada posição, pois quando é adicionada uma nova regra, ele
sempre vai ter prioridade menor em relação às regras anteriores.
→ iptables -t filter -I INPUT 1 -s 192.168.1.15 -d 127.0.0.1 -j ACCEPT
No exemplo acima o trafego vindo de 192.168.1.15 não será rejeitado
porque está definido na primeira linha do Chain Input, e por isso tem prioridade
em relação às outras regras.

► Substituir Regras –R
Existem duas alternativas: apagar a regra e inserir uma nova no lugar ou
modificar diretamente a regra já criada sem afetar outras regras existentes e
mantendo a sua ordem no Chain .Use o seguinte comando:
→ iptables -R INPUT 2 -d 127.0.0.1 -p icmp -j DROP
O número 2 é o número da regra que será substituída no Chain INPUT.

► Criando Novos Chains - N
É importante ressaltar que em firewalls organizados com um grande
número de regras, a criação de Chains individuais é primordial para organizar
regras de um mesmo tipo ou que tenha por objetivo analisar um tráfego de uma
mesma categoria (interface, endereço de origem, destino, protocolo, etc), pois
podem consumir muitas linhas e tornar o gerenciamento do firewall confuso.A
definição de novos Chains utiliza a seguinte sintaxe:
→iptables [-t tabela] [-N novoChain]
Como exemplo pode-se criar um Chain denominado Unioeste (que pode ser
usado para agrupar as regras de internet da Universidade):
→iptables

-t filter -N Unioeste

Para inserir regras no Chain Unioeste basta especifica-lo após a opção -A:
→iptables

-t filter -A Unioeste -s 200.152.161.132 -j DROP

Logo, é necessário fazer uma ligação (-j) do Chain INPUT para o Chain
Unioeste:
→iptables -t filter -A INPUT -j internet
Esta ligação é necessária indicar que outro Chain foi criado
possibilitando a leitura das novas regras do Chain Unioeste.
► Especificando o Policiamento Padrão de um Chain – P
Quando um pacote chega ao fim das regras contidas em um Chain, o
policiamento padrão determina se ele é ACCEPT ou DROP, ou seja, se o
pacote é aceito ou rejeitado. Isto deve ser feito utilizando a seguinte sintaxe.
→iptables [-t tabela] [-P Chain] [ACCEPT/DROP]

No exemplo abaixo, o pacote não será rejeitado após passar pelas
regras. Obviamente se a regras anteriormente definidas não bloquearem ele.
→iptables -t filter -P INPUT ACCEPT

Salvando e Restaurando regras
As regras que estão sendo criadas pelo usuário enquanto manipula o
iptables podem ser salvas usando as ferramentas iptables-save e iptablesrestore baseada na idéia do ipchains-save e ipchains-restore. O iptables-save
deve ser usado sempre que modificar regras no firewall iptables da seguinte
forma:
→iptables-save >/dir/iptables-regras

Para restaurar as regras salvas, utilize o comando:
→iptables-restore </dir/iptables-regras

Más contenido relacionado

La actualidad más candente

Entendendo como fazer um firewall pessoal
Entendendo como fazer um firewall pessoalEntendendo como fazer um firewall pessoal
Entendendo como fazer um firewall pessoalAlmir Mendes
 
Iptables Completo Oliver
Iptables   Completo   OliverIptables   Completo   Oliver
Iptables Completo Olivermarcosserva
 
Aula 8.3 - Iptables Tabela NAT
Aula 8.3 - Iptables Tabela NATAula 8.3 - Iptables Tabela NAT
Aula 8.3 - Iptables Tabela NATAndrei Carniel
 
Apresentação - Mecanismos de segurança linux
Apresentação - Mecanismos de segurança linuxApresentação - Mecanismos de segurança linux
Apresentação - Mecanismos de segurança linuxAllan Reis
 
Mecanismos de segurança linux
Mecanismos de segurança linuxMecanismos de segurança linux
Mecanismos de segurança linuxAllan Reis
 
Servidor de internet (NAT, Squid, Sarg)
Servidor de internet (NAT, Squid, Sarg)Servidor de internet (NAT, Squid, Sarg)
Servidor de internet (NAT, Squid, Sarg)Danilo Filitto
 
Aula 8.2 - Iptables Impasses e Scripts
Aula 8.2 - Iptables Impasses e ScriptsAula 8.2 - Iptables Impasses e Scripts
Aula 8.2 - Iptables Impasses e ScriptsAndrei Carniel
 
Laboratório -configuração_de_um_endereço_de_gerenciamento_do_switch-1
Laboratório  -configuração_de_um_endereço_de_gerenciamento_do_switch-1Laboratório  -configuração_de_um_endereço_de_gerenciamento_do_switch-1
Laboratório -configuração_de_um_endereço_de_gerenciamento_do_switch-1WalissonMartinsdeSou
 
Linux System Administrator | Curso de Redes | 3Way Networks
Linux System Administrator | Curso de Redes | 3Way NetworksLinux System Administrator | Curso de Redes | 3Way Networks
Linux System Administrator | Curso de Redes | 3Way Networks3Way Networks
 
Aula04 – sistemas de proteção de dispositivos parte 01
Aula04 – sistemas de proteção de dispositivos   parte 01Aula04 – sistemas de proteção de dispositivos   parte 01
Aula04 – sistemas de proteção de dispositivos parte 01Carlos Veiga
 
Linux network administration | Curso de Redes | 3Way Networks
Linux network administration | Curso de Redes | 3Way NetworksLinux network administration | Curso de Redes | 3Way Networks
Linux network administration | Curso de Redes | 3Way Networks3Way Networks
 
258420 projeto-de-rede-local
258420 projeto-de-rede-local258420 projeto-de-rede-local
258420 projeto-de-rede-localCezar Ceretta
 
Aula 6 - Redes sem fios - Enlace
Aula 6 - Redes sem fios - EnlaceAula 6 - Redes sem fios - Enlace
Aula 6 - Redes sem fios - EnlaceAndre Peres
 
Ac.m4 tarefa video-emil
Ac.m4 tarefa video-emilAc.m4 tarefa video-emil
Ac.m4 tarefa video-emilfantic3o
 
WANs e Roteadores Cap. 3 Configurando um Roteador - CCNA 3.1 Wellington Pinto...
WANs e Roteadores Cap. 3 Configurando um Roteador - CCNA 3.1 Wellington Pinto...WANs e Roteadores Cap. 3 Configurando um Roteador - CCNA 3.1 Wellington Pinto...
WANs e Roteadores Cap. 3 Configurando um Roteador - CCNA 3.1 Wellington Pinto...Wellington Oliveira
 
Ferramentas de ataques
Ferramentas de ataquesFerramentas de ataques
Ferramentas de ataquesCarlos Veiga
 
1os passoscisco
1os passoscisco1os passoscisco
1os passoscisconogueira
 
3929 linux passo a passo 1
3929 linux passo a passo 1 3929 linux passo a passo 1
3929 linux passo a passo 1 Márcio Roberto
 

La actualidad más candente (20)

Entendendo como fazer um firewall pessoal
Entendendo como fazer um firewall pessoalEntendendo como fazer um firewall pessoal
Entendendo como fazer um firewall pessoal
 
Iptables Completo Oliver
Iptables   Completo   OliverIptables   Completo   Oliver
Iptables Completo Oliver
 
Aula 8.3 - Iptables Tabela NAT
Aula 8.3 - Iptables Tabela NATAula 8.3 - Iptables Tabela NAT
Aula 8.3 - Iptables Tabela NAT
 
Firewall IPTABLEs
Firewall IPTABLEsFirewall IPTABLEs
Firewall IPTABLEs
 
Apresentação - Mecanismos de segurança linux
Apresentação - Mecanismos de segurança linuxApresentação - Mecanismos de segurança linux
Apresentação - Mecanismos de segurança linux
 
Mecanismos de segurança linux
Mecanismos de segurança linuxMecanismos de segurança linux
Mecanismos de segurança linux
 
Administração de Redes Linux - III
Administração de Redes Linux - IIIAdministração de Redes Linux - III
Administração de Redes Linux - III
 
Servidor de internet (NAT, Squid, Sarg)
Servidor de internet (NAT, Squid, Sarg)Servidor de internet (NAT, Squid, Sarg)
Servidor de internet (NAT, Squid, Sarg)
 
Aula 8.2 - Iptables Impasses e Scripts
Aula 8.2 - Iptables Impasses e ScriptsAula 8.2 - Iptables Impasses e Scripts
Aula 8.2 - Iptables Impasses e Scripts
 
Laboratório -configuração_de_um_endereço_de_gerenciamento_do_switch-1
Laboratório  -configuração_de_um_endereço_de_gerenciamento_do_switch-1Laboratório  -configuração_de_um_endereço_de_gerenciamento_do_switch-1
Laboratório -configuração_de_um_endereço_de_gerenciamento_do_switch-1
 
Linux System Administrator | Curso de Redes | 3Way Networks
Linux System Administrator | Curso de Redes | 3Way NetworksLinux System Administrator | Curso de Redes | 3Way Networks
Linux System Administrator | Curso de Redes | 3Way Networks
 
Aula04 – sistemas de proteção de dispositivos parte 01
Aula04 – sistemas de proteção de dispositivos   parte 01Aula04 – sistemas de proteção de dispositivos   parte 01
Aula04 – sistemas de proteção de dispositivos parte 01
 
Linux network administration | Curso de Redes | 3Way Networks
Linux network administration | Curso de Redes | 3Way NetworksLinux network administration | Curso de Redes | 3Way Networks
Linux network administration | Curso de Redes | 3Way Networks
 
258420 projeto-de-rede-local
258420 projeto-de-rede-local258420 projeto-de-rede-local
258420 projeto-de-rede-local
 
Aula 6 - Redes sem fios - Enlace
Aula 6 - Redes sem fios - EnlaceAula 6 - Redes sem fios - Enlace
Aula 6 - Redes sem fios - Enlace
 
Ac.m4 tarefa video-emil
Ac.m4 tarefa video-emilAc.m4 tarefa video-emil
Ac.m4 tarefa video-emil
 
WANs e Roteadores Cap. 3 Configurando um Roteador - CCNA 3.1 Wellington Pinto...
WANs e Roteadores Cap. 3 Configurando um Roteador - CCNA 3.1 Wellington Pinto...WANs e Roteadores Cap. 3 Configurando um Roteador - CCNA 3.1 Wellington Pinto...
WANs e Roteadores Cap. 3 Configurando um Roteador - CCNA 3.1 Wellington Pinto...
 
Ferramentas de ataques
Ferramentas de ataquesFerramentas de ataques
Ferramentas de ataques
 
1os passoscisco
1os passoscisco1os passoscisco
1os passoscisco
 
3929 linux passo a passo 1
3929 linux passo a passo 1 3929 linux passo a passo 1
3929 linux passo a passo 1
 

Similar a Tutorial iptables Linux

Firewall - Introducao.pdf
Firewall - Introducao.pdfFirewall - Introducao.pdf
Firewall - Introducao.pdfssusere0b5a8
 
Aula 8.1 - Iptables tabela Filter
Aula 8.1 - Iptables tabela FilterAula 8.1 - Iptables tabela Filter
Aula 8.1 - Iptables tabela FilterAndrei Carniel
 
SENAI - Segurança firewall
SENAI - Segurança   firewall SENAI - Segurança   firewall
SENAI - Segurança firewall Carlos Melo
 
Manual UFCD 0839.pptx
Manual UFCD 0839.pptxManual UFCD 0839.pptx
Manual UFCD 0839.pptxFormador2
 
Workshop iptables uern_stacruz_14_dez2010_v1
Workshop iptables uern_stacruz_14_dez2010_v1Workshop iptables uern_stacruz_14_dez2010_v1
Workshop iptables uern_stacruz_14_dez2010_v1Matheus Araújo
 
Introdução a Simulação de redes Sensores sem fio com Castalia
Introdução a Simulação de redes Sensores sem fio com CastaliaIntrodução a Simulação de redes Sensores sem fio com Castalia
Introdução a Simulação de redes Sensores sem fio com CastaliaLucas Vinícius
 
Redes Avançadas - 1.Aspectos de Interconexão
Redes Avançadas - 1.Aspectos de InterconexãoRedes Avançadas - 1.Aspectos de Interconexão
Redes Avançadas - 1.Aspectos de InterconexãoMauro Tapajós
 
Configuração de Interface de Rede no Linux por comandos
Configuração de Interface de Rede no Linux por comandosConfiguração de Interface de Rede no Linux por comandos
Configuração de Interface de Rede no Linux por comandosWellington Oliveira
 
Redes de Computadores " Camada de Enlace"
Redes de Computadores " Camada de Enlace"Redes de Computadores " Camada de Enlace"
Redes de Computadores " Camada de Enlace"Reinaldo Barbosa
 
Tutorial - Cloud Computing Primeiros Acessos Linux
Tutorial - Cloud Computing Primeiros Acessos LinuxTutorial - Cloud Computing Primeiros Acessos Linux
Tutorial - Cloud Computing Primeiros Acessos LinuxTecla Internet
 
Projeto final módulo 4
Projeto final módulo 4Projeto final módulo 4
Projeto final módulo 4y3vg3n
 
62282591 senai-curso-avancado-redes
62282591 senai-curso-avancado-redes62282591 senai-curso-avancado-redes
62282591 senai-curso-avancado-redesMarco Guimarães
 
Componentes de uma Rede de computadores
Componentes de uma Rede de computadoresComponentes de uma Rede de computadores
Componentes de uma Rede de computadoresFelipe Silva
 
Apresentação Monografia
Apresentação MonografiaApresentação Monografia
Apresentação MonografiaLeon Homar
 
Redes prática - Enderecamento I Plinux
Redes prática - Enderecamento I PlinuxRedes prática - Enderecamento I Plinux
Redes prática - Enderecamento I PlinuxLuiz Arthur
 

Similar a Tutorial iptables Linux (20)

Firewall - Introducao.pdf
Firewall - Introducao.pdfFirewall - Introducao.pdf
Firewall - Introducao.pdf
 
Aula 8.1 - Iptables tabela Filter
Aula 8.1 - Iptables tabela FilterAula 8.1 - Iptables tabela Filter
Aula 8.1 - Iptables tabela Filter
 
SENAI - Segurança firewall
SENAI - Segurança   firewall SENAI - Segurança   firewall
SENAI - Segurança firewall
 
Netfilter + Iptables
Netfilter + IptablesNetfilter + Iptables
Netfilter + Iptables
 
Unidade3 seg perimetral
Unidade3 seg perimetralUnidade3 seg perimetral
Unidade3 seg perimetral
 
Curso redes seed
Curso redes seedCurso redes seed
Curso redes seed
 
Manual UFCD 0839.pptx
Manual UFCD 0839.pptxManual UFCD 0839.pptx
Manual UFCD 0839.pptx
 
Workshop iptables uern_stacruz_14_dez2010_v1
Workshop iptables uern_stacruz_14_dez2010_v1Workshop iptables uern_stacruz_14_dez2010_v1
Workshop iptables uern_stacruz_14_dez2010_v1
 
Introdução a Simulação de redes Sensores sem fio com Castalia
Introdução a Simulação de redes Sensores sem fio com CastaliaIntrodução a Simulação de redes Sensores sem fio com Castalia
Introdução a Simulação de redes Sensores sem fio com Castalia
 
Redes Avançadas - 1.Aspectos de Interconexão
Redes Avançadas - 1.Aspectos de InterconexãoRedes Avançadas - 1.Aspectos de Interconexão
Redes Avançadas - 1.Aspectos de Interconexão
 
Ntop
NtopNtop
Ntop
 
Configuração de Interface de Rede no Linux por comandos
Configuração de Interface de Rede no Linux por comandosConfiguração de Interface de Rede no Linux por comandos
Configuração de Interface de Rede no Linux por comandos
 
Modelo osi
Modelo osiModelo osi
Modelo osi
 
Redes de Computadores " Camada de Enlace"
Redes de Computadores " Camada de Enlace"Redes de Computadores " Camada de Enlace"
Redes de Computadores " Camada de Enlace"
 
Tutorial - Cloud Computing Primeiros Acessos Linux
Tutorial - Cloud Computing Primeiros Acessos LinuxTutorial - Cloud Computing Primeiros Acessos Linux
Tutorial - Cloud Computing Primeiros Acessos Linux
 
Projeto final módulo 4
Projeto final módulo 4Projeto final módulo 4
Projeto final módulo 4
 
62282591 senai-curso-avancado-redes
62282591 senai-curso-avancado-redes62282591 senai-curso-avancado-redes
62282591 senai-curso-avancado-redes
 
Componentes de uma Rede de computadores
Componentes de uma Rede de computadoresComponentes de uma Rede de computadores
Componentes de uma Rede de computadores
 
Apresentação Monografia
Apresentação MonografiaApresentação Monografia
Apresentação Monografia
 
Redes prática - Enderecamento I Plinux
Redes prática - Enderecamento I PlinuxRedes prática - Enderecamento I Plinux
Redes prática - Enderecamento I Plinux
 

Tutorial iptables Linux

  • 1. Tutorial Firewall em Linux Acadêmicos: Felipe Zottis e Cleber Pivetta Firewall Firewall é um quesito de segurança com cada vez mais importância no mundo da computação. À medida que o uso de informações e sistemas é cada vez maior, a proteção destes requer a aplicação de ferramentas e conceitos de segurança eficientes. O firewall é uma opção praticamente imprescindível. Firewall é o nome dado ao mecanismo de uma rede de computadores que tem por objetivo aplicar uma política de segurança a um determinado ponto de controle da rede. Seu objetivo é permitir somente a transmissão e a recepção de dados autorizados. Este mecanismo atua como uma defesa de um computador ou de uma rede, controlando o acesso ao sistema por meio de regras e a filtragem de dados. A vantagem do uso de firewalls em redes, é que somente um computador pode atuar como firewall, não sendo necessário instalá-lo em cada máquina conectada. A figura abaixo ilustra a idéia de Firewall. ►Funcionamento do Firewall Há varias formas de funcionamento de um firewall. Estas formas variam de acordo com o sistema, aplicação ou do desenvolvedor do programa. Entretanto, existem dois conceitos básicos de utilização de firewall: - Firewall em nível de Pacotes - Firewall em nível de Aplicação
  • 2. Neste tutorial o enfoque será dado ao conceito de Firewall em nível de pacotes com a utilização da Ferramenta Iptables em sistemas Linux. Iptables O Iptables é uma ferramenta de edição da tabela de filtragem de pacotes, ou seja, com ele você é capaz de analisar o cabeçalho e tomar decisões sobre os destinos destes pacotes. O iptables é um firewall com estado, ou seja, um firewall stateful. Os anteriores eram stateless. O modo de filtragem 'Stateless' tende a tratar cada pacote roteado pelo firewall como pacotes individuais, sendo mais simples de implementar e por terem uma resolução mais rápida que um do tipo stateful, podem ser usados para obterem um desempenho melhor em determinadas situações onde existem regras de nível de rede bem simples. Através destas regras poderemos fazer com que os pacotes possam ser ou não recebidos a rede toda, a determinada máquina, interface ou mesmo porta de conexão. O Iptables trabalha através de Tabelas, Chains e Regras: ►Instalação Iptables Os requerimentos básicos para o funcionamento do Iptables são um computador sobre a arquitetura 386 com, no mínimo, 4MB de RAM e um kernel da série 2.4 ou superior. Para a realização deste tutorial, fora utilizado a sistema operacional Linux, sendo a distribuição Debian. Como este experimento fora realizado na rede interna da Universidade Estadual do Oeste do Paraná, é necessário realizar a exportação do proxy utilizado pela faculdade, para que assim seja possível realizar o download do pacote de instalação do Iptables, lembrando que a maioria dos releases atuais do Linux já possui o Iptables no seu Kernel. → export http_proxy=htpp://proxy.unioeste.br:8080 Para realizar a instalação de determinados programas, o Linux permite que o pacote de instalação destes sejam obtidos por download através do comando: → apt-get install iptables Regras no Iptables As regras são como comandos passados ao iptables para que ele realize uma determinada ação (como bloquear ou deixar passar um pacote) de acordo com o endereço/porta de origem/destino, interface de origem/destino,
  • 3. etc. As regras são armazenadas dentro dos Chains e processadas na ordem que são inseridas. Exemplo de Regra: bloqueia qualquer acesso indo ao endereço 127.0.0.1 → iptables -t filter -A INPUT -d 127.0.0.1 -j DROP Chains Os Chains são locais onde as regras do firewall são definidas pelo usuário e armazenadas para operação do firewall. Existem dois tipos de Chains: os embutidos (como os Chains INPUT, OUTPUT e FORWARD) e os criados pelo usuário. Os nomes dos Chains embutidos devem ser especificados sempre em maiúsculas (note que os nomes dos Chains são case-sensitive, ou seja, o Chain input é completamente diferente de INPUT). Tabelas As Tabelas armazenam os Chains e o conjunto de regras com uma determinada característica em comum. Existem 3 tabelas disponíveis no Iptables: ►Tabela Filter É a tabela padrão do Iptables, composto por 3 Chains: • • • INPUT - Consultado para dados que chegam à máquina. OUTPUT - Consultado para dados que saem da máquina. FORWARD - Consultado para dados que são redirecionados para outra interface de rede ou outra máquina. ►Tabela Nat Utilizada para dados que geram outra conexão (masquerading, source nat, destination nat, port forwarding, proxy transparente são alguns exemplos). Ela é composta por 3 Chains: • • • PREROUTING - Consultado quando os pacotes precisam ser modificados logo que chegam. É o Chain ideal para realização de DNAT e redirecionamento de portas. OUTPUT - Consultado quando os pacotes gerados localmente precisam ser modificados antes de serem roteados. Este Chain somente é consultado para conexões que se originam de IPs de interfaces locais. POSTROUTING - Consultado quando os pacotes precisam ser modificados após o tratamento de roteamento. É o Chain ideal para realização de SNAT e IP Masquerading.
  • 4. ►Tabela Mangle A tabela MANGLE implementa alterações especiais em pacotes em um nível mais complexo. A tabela mangle é capaz, por exemplo, de alterar a prioridade de entrada e saída de um pacote baseado no tipo de serviço (TOS) o qual o pacote se destinava. Ela Possui 2 Chains padrões: • • OUTPUT - Altera pacotes de forma especial gerados localmente antes que os mesmo sejam roteados. PREROUTING – Modifica pacotes dando-lhes um tratamento especial antes que os mesmos sejam roteados. * Neste tutorial o enfoque será dado à tabela padrão do Iptables, ou seja, a tabela Filter. Fazendo o IP Masquerading Antes de manipular as regras é necessário que o kernel tenha suporte ao iptables e ip_forward. Com os dois comandos abaixo é habilitado o masquerading para todas as máquinas da rede 192.168.1.*: → iptables -t nat -A POSTROUTING -s 192.168.1.0/24 –j MASQUERADE → echo "1" >/proc/sys/net/ipv4/ip_forward A configuração do servidor Linux está completa, agora os clientes da rede precisarão ser configurados para usar o endereço IP do servidor Linux como gateway Manipulação de Chains Nesta sessão serão mostrados alguns dos comandos mais utilizados para a manipulação de regras. ► Listar Regras – L Utilizando a sintaxe abaixo é possível exibir todas as regras já criadas. → iptables [-t tabela] -L [Chain] [opções] No exemplo abaixo o comando lista as regras do Chain INPUT →iptables -t filter -L INPUT
  • 5. Podem-se utilizar também algumas opções para pra listar o conteúdo dos Chains: • -v - Exibe mais detalhes sobre as regras criadas nos Chains • -n - Exibe endereços de máquinas/portas como números ao invés de tentar a resolução DNS e consulta ao /etc/services. A resolução de nomes pode tomar muito tempo dependendo da quantidade de regras que suas tabelas possuem e velocidade de sua conexão. -x - Exibe números exatos ao invés de números redondos. Também mostra a faixa de portas de uma regra de firewall. --line-numbers - Exibe o número da posição da regra na primeira coluna da listagem. • • ► Adicionando regras – A Adiciona uma regra na Tabela e Chain determinados. Como exemplo será acrescentado uma regra no Chain INPUT (-A INPUT) que bloqueie (-j DROP) qualquer acesso indo ao endereço 127.0.0.1 (d 127.0.0.1): → iptables -t filter -A INPUT -d 127.0.0.1 -j DROP ► Apagando Regras – D A exclusão de regras pode ser feita de duas formas, Quando sabemos qual é o número da regra no Chain (listado com a opção -L) podemos referenciar o número diretamente, como no exemplo abaixo: → iptables -t filter -D INPUT 1 Porem, às vezes o conjunto de regras pode ser muito extenso, o que dificulta saber o numero da regra. Neste caso usamos a mesma sintaxe para criar a regra no Chain, mas trocamos -A por -D: → iptables -t filter -D INPUT -d 127.0.0.1 -j DROP ► Inserindo Regra em uma Linha Especifica – I Este comando é útil no caso do usuário necessitar inserir uma regra em uma determinada posição, pois quando é adicionada uma nova regra, ele sempre vai ter prioridade menor em relação às regras anteriores.
  • 6. → iptables -t filter -I INPUT 1 -s 192.168.1.15 -d 127.0.0.1 -j ACCEPT No exemplo acima o trafego vindo de 192.168.1.15 não será rejeitado porque está definido na primeira linha do Chain Input, e por isso tem prioridade em relação às outras regras. ► Substituir Regras –R Existem duas alternativas: apagar a regra e inserir uma nova no lugar ou modificar diretamente a regra já criada sem afetar outras regras existentes e mantendo a sua ordem no Chain .Use o seguinte comando: → iptables -R INPUT 2 -d 127.0.0.1 -p icmp -j DROP O número 2 é o número da regra que será substituída no Chain INPUT. ► Criando Novos Chains - N É importante ressaltar que em firewalls organizados com um grande número de regras, a criação de Chains individuais é primordial para organizar regras de um mesmo tipo ou que tenha por objetivo analisar um tráfego de uma mesma categoria (interface, endereço de origem, destino, protocolo, etc), pois podem consumir muitas linhas e tornar o gerenciamento do firewall confuso.A definição de novos Chains utiliza a seguinte sintaxe: →iptables [-t tabela] [-N novoChain] Como exemplo pode-se criar um Chain denominado Unioeste (que pode ser usado para agrupar as regras de internet da Universidade): →iptables -t filter -N Unioeste Para inserir regras no Chain Unioeste basta especifica-lo após a opção -A: →iptables -t filter -A Unioeste -s 200.152.161.132 -j DROP Logo, é necessário fazer uma ligação (-j) do Chain INPUT para o Chain Unioeste: →iptables -t filter -A INPUT -j internet Esta ligação é necessária indicar que outro Chain foi criado possibilitando a leitura das novas regras do Chain Unioeste.
  • 7. ► Especificando o Policiamento Padrão de um Chain – P Quando um pacote chega ao fim das regras contidas em um Chain, o policiamento padrão determina se ele é ACCEPT ou DROP, ou seja, se o pacote é aceito ou rejeitado. Isto deve ser feito utilizando a seguinte sintaxe. →iptables [-t tabela] [-P Chain] [ACCEPT/DROP] No exemplo abaixo, o pacote não será rejeitado após passar pelas regras. Obviamente se a regras anteriormente definidas não bloquearem ele. →iptables -t filter -P INPUT ACCEPT Salvando e Restaurando regras As regras que estão sendo criadas pelo usuário enquanto manipula o iptables podem ser salvas usando as ferramentas iptables-save e iptablesrestore baseada na idéia do ipchains-save e ipchains-restore. O iptables-save deve ser usado sempre que modificar regras no firewall iptables da seguinte forma: →iptables-save >/dir/iptables-regras Para restaurar as regras salvas, utilize o comando: →iptables-restore </dir/iptables-regras