Laboratório de Interconexão de Redes e Serviços - 4º Período fileFirewall com Iptables...

35
Redes de Computadores Laboratório de Interconexão de Redes e Serviços - 4º Período

Transcript of Laboratório de Interconexão de Redes e Serviços - 4º Período fileFirewall com Iptables...

Redes de Computadores

Laboratório de Interconexão de Redes e

Serviços - 4º Período

Firewall com Iptables

Introdução

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

desses requer a aplicação de ferramentas e conceitos de segurança

eficientes. O firewall é uma opção praticamente imprescindível.

Firewall com Iptables

O que é Firewall?

Firewall pode ser definido como uma barreira de proteção, que controla o

tráfego de dados entre seu computador e a Internet (ou entre a rede onde

seu computador está instalado e a Internet). Seu objetivo é permitir somente

a transmissão e a recepção de dados autorizados.

Existem firewalls baseados na combinação de hardware e software e

firewalls baseados somente em software. Esse último é o tipo recomendado

ao uso doméstico e também é o mais comum.

O firewall é um mecanismo que atua como "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.

Firewall com Iptables

Como o Firewall funciona?

Há mais de uma forma de funcionamento de um firewall, que varia de acordo

com o sistema, aplicação ou do desenvolvedor do programa.

No entanto, existem dois tipos básicos de conceitos de firewalls: o que é

baseado em filtragem de pacotes e o que é baseado em controle de

aplicações.

Ambos não devem ser comparados para se saber qual o melhor, uma vez

que cada um trabalha para um determinado fim, fazendo que a comparação

não seja aplicável.

Firewall com Iptables

Filtragem de Pacotes

O firewall que trabalha na filtragem de pacotes é muito utilizado em redes

pequenas ou de porte médio. Por meio de um conjunto de regras

estabelecidas, esse tipo de firewall determina que endereços IPs e dados

podem estabelecer comunicação e/ou transmitir/receber dados.

Alguns sistemas ou serviços podem ser liberados completamente (por

exemplo, o serviço de e-mail da rede), enquanto outros são bloqueados por

padrão, por terem riscos elevados (como softwares de mensagens

instantâneas).

O grande problema desse tipo de firewall, é que as regras aplicadas podem

ser muito complexas e causar perda de desempenho da rede ou não serem

eficazes o suficiente.

Firewall com Iptables

Firewall de Aplicação

Firewalls de controle de aplicação (exemplos de aplicação: SMTP, FTP,

HTTP, etc) são instalados geralmente em computadores servidores e são

conhecidos como proxy. Esse tipo não permite comunicação direto entre a

rede e a Internet.

Tudo deve passar pelo firewall, que atua como um intermediador. O proxy

efetua a comunicação entre ambos os lados por meio da avaliação do

número da sessão TCP dos pacotes. Esse tipo de firewall é mais complexo,

porém muito seguro, pois todas as aplicações precisam de um proxy. Caso

não haja, a aplicação simplesmente não funciona.

O firewall de aplicação permite um acompanhamento mais preciso do tráfego

entre a rede e a Internet (ou entre a rede e outra rede). É possível, inclusive,

contar com recursos de log e ferramentas de auditoria.

Firewall com Iptables

Razões para utilizar um Firewall

A seguir são citadas as três principais razões para se usar um firewall:

O firewall pode ser usado para ajudar a impedir que sua rede ou seu

computador seja acessado sem autorização. Assim, é possível evitar que

informações sejam capturadas ou que sistemas tenham seu

funcionamento prejudicado pela ação de hackers;

O firewall é um grande aliado no combate a vírus e cavalos de tróia, uma

vez que é capaz de bloquear portas que eventualmente sejam usadas

pelas "pragas digitais" ou então bloquear acesso a programas não

autorizados;

Em redes corporativas, é possível evitar que os usuários acessem

serviços ou sistemas indevidos, além de ter o controle sobre as ações

realizadas na rede, sendo possível até mesmo descobrir quais usuários

as efetuaram.

Firewall com Iptables

Configurando o Iptables

Principais características do iptables:

Suporte aos protocolos TCP, UDP, ICMP;

Pode especificar portas de origem e de destino;

Suporta módulos externos como FTP;

Suporta um número ilimitado de regras por CHAINS;

Pode criar regras de proteção contra ataques diversos;

Suporte para roteamento de pacotes e redirecionamento de portas;

Suporta vários tipos de NAT, como o SNAT e DNAT e mascaramento;

Pode priorizar tráfego para determinados tipos de pacotes;

Tem suporte a IPV6, através do programa ip6tables.

Firewall com Iptables

Funcionamento

Através de 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.

Tabelas

Existem 3 tabelas possíveis de serem utilizadas no iptables, sendo que uma

delas, a mangle raramente é usada, restando a filter, que é a padrão,

utilizada nos tráfegos de dados comuns, sem ocorrência de NAT.

Quando não especificamos qual tabela a ser utilizada é ela que será ativada.

A outra geralmente utilizada é a nat, que como o próprio nome diz, é usada

quando há ocorrência de NAT.

Firewall com Iptables

Chains

As Chains são os locais onde as regras do firewall definidas pelo usuário são

armazenadas para operação do firewall. Essa lista de regras que analisa o

cabeçalho do pacote e diz o que deve ser feito com ele.

Através delas podemos especificar a situação do tratamento dos pacotes,

seja qual tabela for utilizada.

Regras

As regras de firewall geralmente são compostas de uma Tabela, Opção,

Chain, Dados e Ação. Através destes elementos podemos especificar o que

fazer com os pacotes.

Firewall com Iptables

Tabela Filter

Esta é a tabela padrão, responsável pela filtragem de todos os pacotes que

passam pelo host, não importando origem e destino. Contém três chains:

INPUT: Pacotes cujo destino final é a própria máquina firewall;

OUTPUT: Pacotes que saem da máquina firewall;

FORWARD: Pacote que atravessa a máquina firewall, cujo destino é uma

outra máquina. Este pacote não sai da máquina firewall e sim de outra

máquina da rede ou fonte. Neste caso a máquina firewall está repassando

o pacote.

Firewall com Iptables

Tabela NAT

Responsável pelo controle dos pacotes que passam pelo host, mas cuja

origem ou destino não é o mesmo. Esta tabela é utilizada quando desejamos

utilizar o iptables para construir “gateways” de borda. Contém três chains:

PREROUTING: Quando os pacotes entram para sofrerem NAT;

POSTROUTING: Quando os pacotes estão saindo após sofrerem NAT;

OUTPUT: Pacotes que são gerados na própria máquina e que sofrerão

NAT.

Firewall com Iptables

Tabela Mangle

Permite alterar características específicas do pacote, como por exemplo: o

ToS (Tipo de Serviço) o que permite implementar um sistema simples de

QoS ( qualidade de serviço).

De outra forma, serve para especificar ações especiais para o tratamento do

tráfego que atravessa as chains.

Nesta tabela existem cinco chains: PREROUTING, POSTROUTING, INPUT,

OUTPUT e FORWARD.

Opções com o Tipo de Serviço (ToS) são especificadas nesta tabela para

classificar e aumentar consideravelmente a velocidade de tráfego

considerados em tempo real.

Firewall com Iptables

Política Padrão

Política default do firewall consiste na regra que será utilizada caso algum

pacote não se encaixe em nenhuma das regras estabelecidas.

É altamente recomendado que a política default seja DROP, ou seja, tudo o

que não for expressamente permitido será descartado (proibido).

Firewall com Iptables

Diagrama de Fluxo - Tabela Filter

Firewall com Iptables

Diagrama de Fluxo - Tabela NAT

Firewall com Iptables

Diagrama de Fluxo das CHAINS (FLUXOS) e TABELAS

Firewall com Iptables

Comandos do Iptables

Para a manipulação das ACLs armazenadas nas suas tabelas, o iptables

fornece os seguintes comandos:

-P: define uma regra padrão;

-A: adiciona uma nova regra no final da lista de regras de uma dada

tabela. Tem prioridade sobre a -P;

-D: apaga uma regra;

-L: lista todas as regras de uma determinada tabela;

-S: lista as regras existentes, da forma como foi salvo pelo iptables;

-F: remove todas as regras de uma tabela sem alterar sua política padrão;

-N: cria nova nova “chain” na tabela especificada;

Firewall com Iptables

Comandos do Iptables

-I: insere uma regra;

-H: mostra a ajuda;

-R: substitui uma regra;

-C: faz uma checagem das regras existentes;

-X: exclui uma regra específica pelo seu nome;

-Z: Zera uma regra específica.

Opções do Iptables

As opções permitem categorizar melhor as ACLs, fornecendo um tratamento

mais detalhado sobre quais pacotes deverão ser manipulados. As principais

opções fornecidas pelo iptables são listadas a seguir:

Firewall com Iptables

Opções do Iptables

-s: Especifica a origem do pacote. Essa pode ser tanto uma rede ou host.

Possíveis combinações podem ser:

-s 192.168.0.0/255.255.255.0 ou -s 192.168.0.0/24

OBS.: No segundo caso, estamos especificando a máscara de rede

conforme o número de bits 1, por exemplo.

No exemplo acima estamos especificando toda uma rede de máscara C, no

exemplo abaixo especificamos um host:

-s 192.168.30.51/255.255.255.255 ou -s 192.168.30.51 ou -s

192.168.30.51/32. OBS.: A máscara em números de bits 1 para host é 32.

Firewall com Iptables

Opções do Iptables

Podemos especificar assim também: -s www.cisco.com

Podemos especificar qualquer origem também:

-s 0.0.0.0/0.0.0.0 ou -s 0/0

-d: Especifica o destino do pacote. A sintaxe é a mesma do -s.

-p: Protocolo usado na regra. Pode ser tcp, udp e icmp:

-p tcp

-p udp

-p icmp

Firewall com Iptables

Opções do Iptables

-i: Interface de entrada, ou seja, placa de rede, modem ou interface de

conexão que estará recebendo o pacote a ser tratado.

-i eth0

-i eth1

-i ppp0

-o: Interface de saída. As sintaxes são as mesmas que -i, sendo que nesse

caso estará sendo enviado o pacote a ser tratado.

!: Exclui determinado argumento:

-i ! eth0 - Refere-se a qualquer interface de entrada exceto a eth0;

-s ! 192.168.0.45 - Refere-se a qualquer endereço de entrada, exceto o ip

192.168.0.45.

Firewall com Iptables

Opções do Iptables

--sport: Refere-se a porta de origem. Este deve vir acompanhado das

funções -p tcp e/ou -p udp:

-p tcp --sport 80 - Refere-se a porta de origem 80 sob o protocolo tcp.

--dport: Refere-se a porta de destino. Assim como a função --sport, ela

trabalha somente com as funções -p tcp e -p udp. A sintaxe é similar a –

sport.

--syn: Especifica que a regra deve encontrar somente datagramas com o bit

SYN ligado e os bits ACK e FIN desligados. Datagramas com essas opções

são usados para requisitar início de conexão TCP.

Através das funções --sport e --dport podemos especificar não só uma porta

específica como também um range de portas: --sport 33435:33525

Firewall com Iptables

Alvos (ou “ações”) das Regras do Iptables

Quando um fluxo se enquadra em todos os quesitos especificados por uma

regra, ele poderá entrar na máquina, ser rejeitado ou outras ações poderão

ser realizadas, a estas ações damos o nome de alvo da regra ou fluxo. Os

principais alvos implementados pelo iptables são:

ACCEPT: aceita e permite a passagem do pacote;

DROP: não permite a passagem do pacote e abandona-o não dando

sinais de recebimento;

REJECT: assim como o DROP, não permite a passagem do pacote, mas

envia um aviso (icmp unreachable);

LOG: cria um log referente a regra em /var/log/messages;

SNAT: altera o endereço de origem do pacote que atendeu as

características especificadas;

Firewall com Iptables

Alvos das Regras do Iptables

DNAT: altera o endereço de destino do pacote;

MASQUERADE: é um tipo especial de SNAT usado para conectar a rede

interna a Internet quando um IP dinâmico é entregue pelo provedor;

REDIRECT: redireciona o pacote para uma porta diferente.

Com esses fatores podemos criar as nossas regras com a seguinte

composição:

# iptables -A FORWARD -s 192.168.0.45 -p icmp -j DROP

Sendo: -A (opção) / FORWARD (chain) / -s 192.168.0.45 -p icmp (dados) –j

DROP (ação)

No caso do exemplo, a cima a regra determina que todos os pacotes icmp

originários do endereço 192.168.0.45 devem ser barrados.

Firewall com Iptables

Salvando as Regras

Depois das regras prontas, podemos salvá-las com este comando:

# iptables-save > <dê um nome para o arquivo>

Para recuperá-las, use este comando:

# iptables-restore > <nome do arquivo>

Salve o arquivo criado com um nome sugestivo. Depois, dê permissão de

execução para o arquivo:

chmod +x “exemplo”

Firewall com Iptables

Executando as Regras

Toda vez que quiser que o firewall seja habilitado é só executá-lo (sempre

como root):

# exemplo

Para não ter que ficar chamando o script toda vez que inicializar o sistema,

podemos fazer com que ele seja ativado na inicialização. Para isso é preciso

editar o arquivo:

/etc/rc.d/rc.local

e incluir o comando no final do arquivo.

Firewall com Iptables

Algumas Opções e Observações

Vale fazer algumas observações a respeito da ordem das regras. Uma delas

é que a primeira regra tem prioridade sobre a segunda, caso ambas estejam

em conflito:

iptables -A FORWARD -p tcp --syn -s 192.168.1.0/24 -j ACCEPT

iptables -A FORWARD -p tcp --syn -s 192.168.1.0/24 -j DROP

Com os comandos abaixo, limpamos todas as tabelas e regras:

iptables -F

iptables -X

iptables -t nat -F

iptables -t nat -X

Firewall com Iptables

Algumas Opções e Observações

É importante ressaltar que as regras devem seguir uma ordem definida, ou

seja, a regra posterior deve estar de acordo com a regra anterior para que

tudo corra sem problemas:

iptables -P FORWARD -j DROP

iptables -A FORMARD -s 192.168.0.0/24 -d 10.0.0.0/8 -j ACCEPT

Através dessa regra, determinamos que todo o repasse de pacotes seja

bloqueado, depois permitimos que possa repassar pacotes da rede

192.168.0.0 para a rede 10.0.0.0 mas esta não poderá retornar os pacotes.

Então o correto seria inserir mais uma regra:

iptables -A FORWARD -d 192.168.0.0/24 -s 10.0.0.0/8 -j ACCEPT

Firewall com Iptables

Algumas Opções e Observações

Dessa forma, a rede 10.0.0.0 poderá repassar os pacotes, fazendo com que

as redes possam conversar sem problemas.

Ao fazer as regras, lembre-se de primeiro bloquear, para depois abrir o

acesso desejado:

iptables -P FORMARD -j DROP

iptables -A FORWARD -s 192.168.0.45 -p tcp --sport 80 -j ACCEPT

Firewall com Iptables

Exemplos de Scripts de Firewall

Firewall para bloquear todo o fluxo de dados só liberando o fluxo na interface

lo (loopback):

# definindo as regras padrão

#

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

#

# liberando a interface lo

#

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

Firewall com Iptables

Exemplos de Scripts de Firewall

Firewall para liberar o acesso externo ao serviço http (eth1) e o acesso pela

intranet (eth0) na porta 8080.

# definindo as regras padrão

#

iptables -P INPUT DROP

iptables -P OUTPUT ACCEPT

iptables -P FORWARD DROP

#

# definindo as regras de filtragem ao HTTP e HTTPS

#

iptables -A INPUT -p tcp -dport 80 -i eth1 -j ACCEPT

iptables -A INPUT -p tcp -dport 443 -i eth1 -j ACCEPT

iptables -A INPUT -p tcp -dport 8080 -i eth0 -j ACCEPT

Firewall com Iptables

Exemplos de Scripts de Firewall

Firewall para um servidor que hospeda os serviços: http (80), https (443),

imap (143), pop3 (110), smtp (25), ftp (21), ssh (22). De tal modo que, todos

os serviços possam ser acessados pela intranet (eth1) e os únicos serviços

que podem ser acessados pela internet (eth0) são o http e o https.

# definindo as regras padrão

#

iptables -P INPUT DROP

iptables -P OUTPUT ACCEPT

iptables -P FORWARD DROP

#

# liberando acesso pela internet (eth0)

#

Firewall com Iptables

Exemplos de Scripts de Firewall

iptables -A INPUT -p tcp -dport 80 -i eth0 -j ACCEPT

iptables -A INPUT -p tcp -dport 443 -i eth0 -j ACCEPT

#

# liberando acesso pela intranet (eth1)

#

iptables -A INPUT -p tcp -dport 80 -i eth1 -j ACCEPT

iptables -A INPUT -p tcp -dport 443 -i eth1 -j ACCEPT

iptables -A INPUT -p tcp -dport 143 -i eth1 -j ACCEPT

iptables -A INPUT -p tcp -dport 110 -i eth1 -j ACCEPT

iptables -A INPUT -p tcp -dport 25 -i eth1 -j ACCEPT

iptables -A INPUT -p tcp -dport 21 -i eth1 -j ACCEPT

iptables -A INPUT -p tcp -dport 22 -i eth1 -j ACCEPT

Firewall com Iptables

Referências Eletrônicas

http://www.vivaolinux.com.br/

http://www.mtm.ufsc.br/

http://www.invasao.com.br/

http://www.brazilfw.com.br/