Documente Academic
Documente Profesional
Documente Cultură
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
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
Entendendo o Firewall
composta de 3 chains:
a tabela default, isto significa que quando no referenciamos nenhuma chain no comando iptables, a chain filter chamada.
Armando Martins 7
Entendendo o Firewall
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
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
Basicamente utilizada para fazer QoS. No trataremos desse assunto neste tutorial.
Armando Martins 10
Entendendo o Firewall
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
Os pacotes so encaminhados para esta chain quando a origem no o firewall, mas o destino o firewall.
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
Chain responsvel pelos pacotes que tem origem no firewall e destino no firewall.
Armando Martins 14
Entendendo o Firewall
Armando Martins 15
Entendendo o Firewall
Armando Martins 16
Entendendo o Firewall
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
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
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
-j
# 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
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
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
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
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
DROP e REJECT
Exemplo:
# iptables P INPUT DROP # iptables P INPUT REJECT
Armando Martins 25
Entendendo o Firewall
Sintaxe opes
iptables
suas
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
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
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
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:
S vai liberar o acesso via ssh para o host 10.3.4.11, avisando que o pacote foi rejeitado para os outros hosts:
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:
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
Armando Martins 35
Entendendo o Firewall
Sintaxe opes
iptables
suas
referentes a
Ao:
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:
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
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
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
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
Representao de uma comunicao entre dois hosts, onde o IP de origem esta sendo mascarado.
Armando Martins 43
Entendendo o Firewall
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
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
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
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
Armando Martins 48
Entendendo o Firewall
Armando Martins 49
Entendendo o 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
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
Armando Martins 52
Entendendo o Firewall
Armando Martins 53
Entendendo o Firewall
Armando Martins 54
Entendendo o 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
Entendendo o Firewall
Armando Martins 57
Configurando Firewall