Sunteți pe pagina 1din 58

01 - Entendendo um Firewall.

Prof. Armando Martins de Souza E-mail: armandomartins.souza@gmail.com

Entendendo o Firewall

O que so Firewalls?

So dispositivos constitudos por componentes de hardware (roteador capaz de filtrar pacotes) e softwares (proxy server), que:

Controlam o fluxo de pacotes entre a rede local (privada) e a rede pblica (Internet).

Armando Martins 2

Entendendo o Firewall

Linux como roteador:

responsvel pelo roteamento e filtragem de pacotes; Ele l os cabealhos dos pacotes e decide o que pode ou no passar por ele.

Armando Martins 3

Entendendo o Firewall

O programa IPTABLES:

Fornece uma interface para o usurio manipular as regras de filtragem de pacotes do kernel do Linux.

Armando Martins 4

Entendendo o Firewall

Iptables/Firewall/Tabelas bsicas:

O funcionamento basicamente o

do firewall seguinte:

1. Os pacotes que chegam ao firewall so filtrados atravs das regras que foram definidas. 2. Roteamento interno (dentro do kernel). Com base no destino do pacote, ele encaminhado para o "filtro" (chain) apropriado ao roteamento.
Armando Martins 5

Entendendo o Firewall

Firewall

Antes de iniciarmos o detalhamento das chains, iremos mostrar a relao entre firewall e kernel Linux.

Ifwadm --> kernel 2.0 Ipchains --> Kernel 2.2 Iptables --> A partir do kernel 2.4

importante deixar claro que trabalharemos apenas com o firewall iptables.


Armando Martins 6

Entendendo o Firewall

As tabelas bsicas Filter

composta de 3 chains:

INPUT, OUTPUT e FORWARD.

a tabela default, isto significa que quando no referenciamos nenhuma chain no comando iptables, a chain filter chamada.

Armando Martins 7

Entendendo o Firewall

As tabelas bsicas Filter

Essa chain trata do trfego normal de dados, isto significa que no h nenhum tipo de mascaramento (NAT) nela.

Armando Martins 8

Entendendo o Firewall

As tabelas bsicas Nat

quando temos que mascarar algum endereo IP ou rede. O Nat acontece tanto da rede externa (Internet), para a rede interna (Lan), quanto da Lan para Internet. A tabela "Nat" composta pelas
Armando Martins 9

Entendendo o Firewall

As tabelas bsicas Mangle

Basicamente utilizada para fazer QoS. No trataremos desse assunto neste tutorial.

Armando Martins 10

Entendendo o Firewall

Ilustrao das tabelas com suas respectivas chains.

Armando Martins 11

Entendendo o Firewall

Representao visual do posicionamento das chains em relao a passagem dos pacotes de dados da tabela "FILTER" .

Armando Martins 12

Entendendo o Firewall

Funcionamento de cada uma das chains descritas anteriomente:

INPUT (Pacotes de Entrada):

Os pacotes so encaminhados para esta chain quando a origem no o firewall, mas o destino o firewall.

FORWARD (Pacotes de Passagem):

No caso da FORWARD os encaminhamentos so feitos quando a origem no o firewall e o destino tambm no o firewall. Isto , o pacote de dados esta apenas passando pelo firewall.
Armando Martins 13

Entendendo o Firewall

Funcionamento de cada uma das chains descritas anteriomente:

OUTPUT (Pacotes de Sada):

Chain responsvel pelos pacotes que tem origem no firewall e destino no firewall.

Armando Martins 14

Entendendo o Firewall

Funcionamento de cada uma das chains descritas anteriomente:

Armando Martins 15

Entendendo o Firewall

A tabela filter s pode tratar do que passa ou no passa:

Armando Martins 16

Entendendo o Firewall

Polticas de acesso / DROP e REJECT.

Polticas de acesso

No que se refere a polticas de acesso temos ACCEPT e DROP. ACCEPT passa tudo, para que o pacote seja bloqueado temos que ter inserido um comando dizendo que pacotes com aquelas caractersticas devem ser bloqueados.
Armando Martins 17

Entendendo o Firewall

Polticas de acesso / DROP e REJECT.

Polticas de acesso

No que se refere a polticas de acesso temos ACCEPT e DROP. DROP exatamente o inverso do ACCEPT. Bloqueia tudo, deixando passar somente os pacotes que batem exatamente com as caractersticas passadas pelo comando de liberao.
Armando Martins 18

Entendendo o Firewall

Polticas de acesso / DROP e REJECT.

Polticas de acesso

Normalmente usamos o critrio de bloquear tudo, liberando apenas o que tem que passar, isso tem inmeras vantagens:

Evitar o trafego na rede desnecessrio; Deixar portas abertas sem necessidade, impedindo com isso a possibilidade que uma falha de segurana seja utilizada por um indivduo mau intencionado.
Armando Martins 19

Entendendo o Firewall

Polticas de acesso / DROP e REJECT.

Polticas de acesso

Exemplos de mudana de poltica: iptables -t <tabela> -P <chain> ACCEPT/DROP

-j

Mudando todas as chains da tabela "filter" para DROP:


# iptables -t filter -P INPUT DROP # iptables -P FORWARD DROP # iptables -t filter -P OUTPUT DROP Armando Martins

20

Entendendo o Firewall

Polticas de acesso / DROP e REJECT.

Polticas de acesso

Reparem que em um dos exemplos anteriores no especifiquei qual tabela estou usando (iptables -P FORWARD DROP); Isso porque a tabela filter no precisa ser referenciada, pois ela a tabela padro do iptables.
Armando Martins 21

Entendendo o Firewall

Polticas de acesso / DROP e REJECT.

Polticas de acesso

Para colocarmos as polticas das chains novamente para ACCEPT, basta substituirmos o "DROP" por "ACCEPT".

# iptables -t filter -P INPUT ACCEPT # iptables -P FORWARD ACCEPT # iptables -t filter -P OUTPUT ACCEPT

Armando Martins 22

Entendendo o Firewall

Polticas de acesso / DROP e REJECT.

DROP e REJECT

Muitas pessoas acham que o "DROP" tem a mesma funcionalidade do "REJECT", contudo h uma sutil diferena. No DROP o pacote sumariamente bloqueado no dando a mnima importncia para o pacote enviado, ele apenas o ignora. No caso do REJECT enviado um pacote de retorno informando que o pacote foi rejeitado .
Armando Martins 23

Entendendo o Firewall

Polticas de acesso / DROP e REJECT.

DROP e REJECT

Se usarmos o DROP, o host A no saber se o pacote foi ignorado ou o host B no esta acessvel. Se usarmos o REJECT, o host A receber uma mensagem informando que o host B rejeitou sua tentativa de acesso.
Armando Martins 24

Entendendo o Firewall

Polticas de acesso / DROP e REJECT.

DROP e REJECT

Exemplo:
# iptables P INPUT DROP # iptables P INPUT REJECT

Armando Martins 25

Entendendo o Firewall

Sintaxe opes

iptables

suas

Sintaxe iptables e suas opes:


Pacotes de dados da tabela filter;
Criao de regras para liberar, bloquear ou rejeitar os pacotes de dados de trafego normal, sem a utilizao de mascaramento (tabela NAT). Sintaxe: iptables -t [tabela] <ordem> <chain> [condies] -j <ao>

Tabela: Nesse caso estamos tratando da tabela filter, como j falamos anteriormente, esta tabela a padro e no necessrio explicit-la.
Armando Martins 26

Entendendo o Firewall

Sintaxe opes

iptables

suas

Sintaxe iptables e suas opes:


Ordem: -I Insere a regra no incio da chain. -A Insere a regra no final da chain.

PS:

O chain analisada da primeira regra para a ltima, isso quer dizer que a analise da regra feita do inicio da chain para o final, essa anlise se segue at encontrar uma regra se enquadre ao pacote. Ao localizar essa regra ele entra e processado, deixando as regras subsequentes sem serem analisadas. Por isso importante tratar as regras da mais restritiva para a menos restritiva.
Armando Martins 27

Entendendo o Firewall

Sintaxe opes

iptables

suas

Sintaxe iptables e suas opes:


Ordem: Abaixo colocamos 3 regras: Regra coloca a poltica da chain INPUT como DROP, isso quer dizer que s passa um pacote se ele estiver explicito em uma regra. # iptables -P INPUT DROP

A segunda regra libera acesso a porta 22 para a rede 10.0.0.0/24. # iptables -A INPUT -p tcp -s 10.0.0.0/24 --dport 22 -j ACCEPT
Armando Martins 28

Entendendo o Firewall

Sintaxe opes

iptables

suas

Ordem:

Abaixo colocamos 3 regras: A terceira libera acesso do host 10.0.0.49 a porta 22 do host. # iptables -A INPUT -p tcp -s 10.0.0.49 --dport 22 -j ACCEPT
No exemplo acima a terceira regra nunca far match (nenhum pacote ir utiliz-la), pois a segunda regra far match (regra mais genrica) caso o host de IP 10.0.0.49 tente acessar o host na porta 22.
Armando Martins 29

Entendendo o Firewall

Sintaxe opes

iptables

suas

Chain:

Iremos dizer a que chain a regra se refere (INPUT, OUTPUT, FORWARD). Condio (match):

-p = protocolo (all, tcp, udp, icmp etc) --sport = porta origem --dport = porta destino -s = IP origem -d = IP destino -i = interface de entrada -o = interface de sada -m = match Armando Martins

30

Entendendo o Firewall

Sintaxe opes

iptables

suas

Arquitetura para exemplo:

Armando Martins 31

Entendendo o Firewall

Sintaxe opes

iptables

suas

Ao:

onde informamos o que devemos fazer com o pacote, ignorar (DROP), aceitar (ACCEPT) ou rejeitar (REJECT). Alguns exemplos de regras:

Bloquear o protocolo icmp (ping):

# iptables -A INPUT -p icmp --icmp-type ping -j DROP

S vai liberar o acesso via ssh para o host 10.3.4.11, avisando que o pacote foi rejeitado para os outros hosts:

# iptables -A INPUT -p tcp --dport 22 -s ! 10.3.4.11 -j REJECT


Armando Martins 32

Entendendo o Firewall

Sintaxe opes

iptables

suas

Ao:

Alguns exemplos de regras: PS: O smbolo de "!" significa uma exceo a regra.
Nosso anterior exemplo ele esta tratando o host de IP 10.3.4.11 como exceo a regra. Isso quer dizer que o nico host que pode acessar o "firewall" o 10.3.4.11. A regra ir rejeitas qualquer outro host.

S vai liberar o protocolo icmp (ping) para o host 10.3.1.10. Ignorando o ping para qualquer outro host: # iptables -A INPUT -p icmp --icmp-type ping -s ! 10.3.1.10 -j DROP
Armando Martins 33

Entendendo o Firewall

Sintaxe opes

iptables

suas

Ao:

Alguns exemplos de regras:

Exemplo de liberao do smtp (tcp 25) e-mail, impedir que um servidor de e-mail interno envie e-mail para fora da empresa. Normalmente isso evita que spammers, que por algum motivo tenham conseguido "acesso" a um de seus servidores, instale um servidor de e-mail e o utilize para enviar spam. # iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport 25 -j REJECT Essa regra se traduz em: os pacotes tcp que tiverem vierem atravs da interface eth1 e destino de sada a eth0 porta 25 devero ser rejeitados.
Armando Martins 34

Entendendo o Firewall

Sintaxe iptables e suas opes

Trabalhando com duas redes:

Armando Martins 35

Entendendo o Firewall

Sintaxe opes

iptables

suas
referentes a

Ao:

Basta incluir as segunda rede:

interfaces

# iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport 25 -j REJECT # iptables -A FORWARD -i eth2 -o eth0 -p tcp --dport 25 -j REJECT

Armando Martins 36

Entendendo o Firewall

Sintaxe opes

iptables

suas

Ao:

Bloquear acesso atravs do endereo fsico da placa de rede (MAC): iptables -A FORWARD -m mac --mac-source 00:00:AA:BB:11:12 -p tcp --dport 80 -j DROP

Armando Martins 37

Entendendo o Firewall

Sintaxe opes

iptables

suas

Ao:

Match (condio) OUTPUT:

Armando Martins 38

Entendendo o Firewall

Sintaxe opes

iptables

suas

Ao:

Match (condio) OUTPUT: No deixa o host acessar a porta 80: # iptables -A OUTPUT -p tcp --dport 80 -j REJECT Libera somente o superuser fazer testes via icmp (ping): # iptables -A OUTPUT --icmp-type ping -m --uid-owner root -j

(root) para -p icmp owner ! REJECT

Armando Martins 39

Entendendo o Firewall

Sintaxe opes

iptables

suas

Ao:

Esses foram alguns exemplos do que podemos fazer com o iptables, no que se refere aos pacotes de dados de trfego normal (sem utilizao de mascaramento NAT). Ainda existem inmeras formas de filtrarmos os pacotes, contudo so formas mais pontuais, normalmente no utilizaremos nada a mais que essas para esse tipo de filtro.
Armando Martins 40

Entendendo o Firewall

NAT - Network Address Translation

SNAT - Source NAT (mascaramento de IP)

O SNAT utilizado para que os hosts internos a rede, isto , endereos IP no vlidos na internet, consigam sair para a Internet como se tivessem um endereo vlido em sua interface de rede.

Armando Martins 41

Entendendo o Firewall

NAT - Network Address Translation

SNAT - Source NAT (mascaramento de IP)

Em nosso exemplo vamos imaginar que o host de IP 10.3.1.5 queira acessar o site Viva o Linux - 174.123.53.162. Quando o pacote chega no host (firewall) feito o SNAT, isso acontece da seguinte maneira:

criada uma tabela chamada "Connection tracking", onde so gravadas as informaes de origem e destino do pacote. Isto possibilita o servidor saber quem enviou e para quem foi enviado o pacote que teve seu endereo IP de origem mascarado. Armando Martins 42

Entendendo o Firewall

NAT - Network Address Translation SNAT - Source NAT (mascaramento de IP)

Representao de uma comunicao entre dois hosts, onde o IP de origem esta sendo mascarado.

Armando Martins 43

Entendendo o Firewall

NAT - Network Address Translation

SNAT - Source NAT (mascaramento de IP)

Como feito o SNAT para que seja possvel a comunicao mostrada anteriormente. # iptables -t nat -A POSTROUTING -s 10.3.0.0/16 -d !10.3.0.0/16 -j SNAT --to-source 200.1.1.1 Onde: -s 10.3.0.0/16 - a origem. -d !10.3.0.0/16 - "no" 10.3.0.0/16 o destino.

Armando Martins 44

Entendendo o Firewall

NAT - Network Address Translation

SNAT - Source NAT (mascaramento de IP)

Essa regra de NAT, na realidade SNAT, significa que sempre que a origem for a rede 10.3.0.0/16 e o destino no for ela mesma, o pacote ira sair para a Internet com o endereo 200.1.1.1; isto quer dizer que o host que estiver sendo acessado "pensar" que quem est enviando os pacotes o IP 200.1.1.1 e no o IP 10.3.x.x.

Armando Martins 45

Entendendo o Firewall

NAT - Network Address Translation SNAT - Source NAT (mascaramento de IP)


Se estivermos trabalhando com IP dinmico na Internet, por exemplo Velox ou Virtua, poderemos utilizar o comando abaixo: # iptables -t nat -A POSTROUTING -s 10.3.0.0/16 -d !10.3.0.0/16 -j MASQUERADE

PS: O MASQUERADE significa que ele ir mascarar todas as solicitaes a rede externa. O IP de sada ser aquele que estiver ligado diretamente ao gateway default do host (firewall).

Via modem, normalmente utilizamos a interface ppp0: # iptables -t nat -A POSTROUTING -i eth0 -o ppp0 -j MASQUERADE

Armando Martins 46

Entendendo o Firewall

NAT - Network Address Translation

DNAT (Destination NAT)

No caso do DNAT o mascaramento feito de forma inversa ao SNAT. Ele propicia acessos que tem como origem a Internet e destino um IP interno da sua rede. Exemplo: Imaginemos que um host que tem o IP
80.8.8.8 e quer acessar o servidor web de sua empresa atravs do IP 201.1.1.1. Esse endereo IP na realidade um dos IPs vlidos de seu firewall, s que fazermos um DNAT dizendo que quando um pacote tiver destino o IP 201.1.1.1, ele dever ser Armando Martins 47 encaminhado o IP 10.3.1.2.

Entendendo o Firewall

NAT - Network Address Translation DNAT (Destination NAT)

Armando Martins 48

Entendendo o Firewall

NAT - Network Address Translation

DNAT (Destination NAT)

Comando para realizao do DNAT visto anteriormente:


# iptables -t nat -A PREROUTING -d 200.1.1.1 -p tcp --dport 80 -j DNAT --to-destination 10.3.1.2

Armando Martins 49

Entendendo o Firewall

Script bsico de firewall

Agora mostraremos como criar um script de firewall bsico. Antes de tudo vamos ativar o roteamento via kernel da seguinte maneira: # echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf # sysctl -p /etc/sysctl.conf
Armando Martins 50

Entendendo o Firewall

Script bsico de firewall

Pronto, com os comandos anteriores acabamos de habilitar o roteamento via kernel o que possibilita o encaminhamento dos pacotes de dados de uma rede para outra. Muitos administradores habilitam o roteamento diretamente atravs do script de firewall, contudo eu prefiro fazer isso apenas uma vez.
Armando Martins 51

Entendendo o Firewall

Script bsico de firewall


Script para firewall: # mkdir /etc/firewall # vi /etc/firewall/firewall.sh

Armando Martins 52

Entendendo o Firewall

Script bsico de firewall


#!/bin/sh # Mudando as polticas para ACCEPT iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT # Limpando as regras em memria iptables -F -t filter iptables -F -t mangle iptables -F -t nat iptables -X -t filter iptables -X -t mangle iptables -X -t nat iptables -Z -t filter iptables -Z -t mangle iptables -Z -t nat # Libera conexes j estabilizadas. iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

Armando Martins 53

Entendendo o Firewall

Script bsico de firewall


#!/bin/sh # Entre com as regras de PREROUTING (DNAT) . . . # Entre com as regras de POSTROUTING (SNAT) . . . # Entre com as regras de INPUT . . . # Entre com as regras de FORWARD . . . # Entre com as regras de OUTPUT . . .

Armando Martins 54

Entendendo o Firewall

Script bsico de firewall

Script para firewall: Agora iremos cuidar para que toda vez que o servidor bootar as regras subam de forma automtica. 1. Criar um link simblico do arquivo que acabamos de criar para dentro de /etc/init.d/: # ln -s /etc/init.d/firewall /etc/firewall/firewall.sh 2. Vamos ligar o bit de execuo do script: # chmod +x /etc/firewall/firewall.sh

Armando Martins 55

Entendendo o Firewall

Script bsico de firewall

Script para firewall:


3. Incluindo o script para inicializao no boot. Quando a mquina for rebootada o script ser carregado: No Debian GNU/Linux: # update-rc.d firewall defaults Uma outra forma salvar as regras que esto na memria para um arquivo. Em nosso exemplo utilizaremos o arquivo firewall.txt: # iptables-save > firewall.txt Armando Martins 56

Entendendo o Firewall

Script bsico de firewall

Script para firewall:


Restaura as configuraes da iptables que se encontram no arquivo firewall.txt: # iptables-restore < firewall.txt

Com isso terminamos as explicaes bsicas de um firewall em GNU/Linux.

Armando Martins 57

Configurando Firewall

FIM Entendendo Firewall


Armando Martins 58

S-ar putea să vă placă și