Firewall Site

8
Rede e Firewall Voltar Configurações de rede + Firewall (iptables) em Linux Em nossos práticas iniciais de firewall em Linux com o iptables, utilizamos o live CD do Kurumin. Diferentemente de uma instalação, quando utilizamos o sistema desta forma, a cada boot todas as configurações do servidor e firewall devem ser refeitas. Seguem abaixo informações a respeito dos comandos necessários ao funcionamento da rede e firewall em linux, independente da utilização do live CD ou do sistema operacional já instalado. Configurar a rede manualmente O programa utilizado para configurar e visualizar as informações relacionadas é chamado ifconfig. Eis um exemplo de saída desse comando: host:~> ifconfig eth0 Link encap:Ethernet HWaddr 00:A0:C9:E8:63:AB inet addr:200.17.98.174 Bcast:200.17.98.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3727007 errors:0 dropped:0 overruns:0 frame:3 TX packets:4869672 errors:0 dropped:0 overruns:0 carrier:0 collisions:679247 txqueuelen:100 Interrupt:10 Base address:0xb400 lo Link encap:Local loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:3924 Metric:1 RX packets:404950 errors:0 dropped:0 overruns:0 frame:0 TX packets:404950 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 A interface lo indica o dispositivo virtual chamado loopback, que permite ao host acessar seus próprios serviços TCP/IP. O endereço IP dessa interface é sempre 127.0.0.1, com máscara 255.0.0.0. Por ser um dispositivo virtual, ele não possui endereço físico (MAC). Na maioria dos dispositivos e sistemas essa interface é definida na configuração default do sistema, por isso não é necessário configurá-la. Além de listar as interfaces ativas, o comando ifconfig pode ser usado para ligar/desligar/configurar redeefirewall - heliotecnologo https://sites.google.com/site/heliotecnologo/redee... 1 de 8 19-10-2014 10:04

description

Firewall Site

Transcript of Firewall Site

  • Rede e Firewall

    Voltar

    Configuraes de rede + Firewall (iptables) em Linux

    Em nossos prticas iniciais de firewall em Linux com o iptables, utilizamos o live CD do Kurumin.Diferentemente de uma instalao, quando utilizamos o sistema desta forma, a cada boot todas asconfiguraes do servidor e firewall devem ser refeitas.

    Seguem abaixo informaes a respeito dos comandos necessrios ao funcionamento da rede e firewallem linux, independente da utilizao do live CD ou do sistema operacional j instalado.

    Configurar a rede manualmente

    O programa utilizado para configurar e visualizar as informaes relacionadas chamado ifconfig.Eis um exemplo de sada desse comando:

    host:~> ifconfig

    eth0 Link encap:Ethernet HWaddr 00:A0:C9:E8:63:AB inet addr:200.17.98.174 Bcast:200.17.98.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3727007 errors:0 dropped:0 overruns:0 frame:3 TX packets:4869672 errors:0 dropped:0 overruns:0 carrier:0 collisions:679247 txqueuelen:100 Interrupt:10 Base address:0xb400

    lo Link encap:Local loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:3924 Metric:1 RX packets:404950 errors:0 dropped:0 overruns:0 frame:0 TX packets:404950 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0

    A interface lo indica o dispositivo virtual chamado loopback, que permite ao host acessar seusprprios servios TCP/IP. O endereo IP dessa interface sempre 127.0.0.1, com mscara255.0.0.0. Por ser um dispositivo virtual, ele no possui endereo fsico (MAC). Na maioria dosdispositivos e sistemas essa interface definida na configurao default do sistema, por isso no necessrio configur-la.

    Alm de listar as interfaces ativas, o comando ifconfig pode ser usado para ligar/desligar/configurar

    redeefirewall - heliotecnologo https://sites.google.com/site/heliotecnologo/redee...

    1 de 8 19-10-2014 10:04

  • uma determinada interface, ou para definir novas interfaces de rede na mquina. Execute um manifconfig para verificar maiores detalhes sobre o comando. Eis alguns exemplos de uso:

    Para desativar a interface eth0:

    ifconfig eth0 down

    Para ativar a interface eth0 com uma configurao pr-definida:

    ifconfig eth0 up

    Para ativar a interface eth0 com uma configurao especfica:

    ifconfig eth0 10.0.0.17 netmask 255.0.0.0 up

    Para associar um segundo endereo IP (virtual) interface eth0:

    ifconfig eth0:1 66.193.175.173 netmask 255.255.254.0

    Os novos sistemas Debian possuem um arquivo de configurao no qual todas as configuraes derede podem ser modificadas. Este arquivo se chama interfaces e fica armazenado no diretrio/etc/network. Quando for configurar um sistema deste tipo, prefira SEMPRE esta opo.

    Segue exemplo do arquivo:

    # This file describes the network interfaces available on your system# and how to activate them. For more information, see interfaces(5).

    # The loopback network interfaceauto loiface lo inet loopback

    # The primary network interfaceauto eth0iface eth0 inet static address 10.200.20.1 netmask 255.255.254.0 network 10.200.20.0 broadcast 10.200.21.255 gateway 10.200.20.254 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 10.200.20.254

    auto ath0iface ath0 inet static address 192.168.0.1 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 [...]

    No esquecer a linha iniciada em "auto", que diz ao sistema que a inteface deve ser iniciada no boote tambm "baixada" e "levantada" nos comandos "ifdown -a" e "ifup -a".

    Aps modific-lo, execute os comandos ifdown -a e ifup -a para que o arquivo seja relido.

    Adicionando gateway ou rota default

    A tabela de roteamento indica quais as rotas ativas em uma mquina. Ela pode ser obtida atravs docomando route. Eis uma sada tpica desse comando:

    redeefirewall - heliotecnologo https://sites.google.com/site/heliotecnologo/redee...

    2 de 8 19-10-2014 10:04

  • host:~> route

    Kernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Iface10.200.20.0 * 255.255.254.0 U 0 0 0 eth0127.0.0.0 * 255.0.0.0 U 0 0 0 lodefault 10.200.20.254 0.0.0.0 UG 0 0 0 eth0

    A tabela acima indica que:

    - A rede 10.200.20.0 pode ser acessada atravs da interface ethernet eth0.

    - O gateway default o dispositivo 10.200.20.254

    O comando route tambm usado para configurar as rotas usadas pelo sistema. Execute um manroute para maiores detelhes do programa.

    Eis alguns exemplos de uso desse comando:

    Para adicionar/remover uma rota para a rede 192.120.10.0 via dispositivo eth0:

    route add -net 192.120.10.0 netmask 255.255.255.0 dev eth0

    route del -net 192.120.10.0 netmask 255.255.255.0 dev eth0

    Para adicionar/remover uma rota default usando 10.200.20.254 como gateway:

    route add default gw 10.200.20.254

    route del default gw 10.200.20.254

    Para adicionar uma rota para o host 10.0.0.125 atravs do dispositivo eth0:

    route add -host 10.0.0.125 dev eth0

    Para adicionar uma rota para a rede 200.192.112.0 atravs do dispositivo eth1:

    route add -net 200.192.112.0 netmask 255.255.255.0 dev eth1

    Alm de rotear seus prprios pacotes, um host pode tambm rotear pacotes recebidos em outrasinterfaces, agindo portanto como gateway para outras redes. Essa funo denominada "IPforwarding".

    Leia tambm este artigo da Dicas-L que ensina como manter as rotas aps um boot.

    Habilitar o roteamento no servidor

    Para habilitar o roteamento, preciso modificar o parmetro do kernel que controla esta funo. Paraexecutar esta tarefa, execute o comando sysctl -a e observe o valor da parmetronet.ipv4.ip_forward. Se o roteamento estiver habilitado, o valor do parmetro dever ser 1 (quesignifica verdadeiro).

    Para fazer com que a mudana permanea aps a reinicializao do servidor, preciso editar oarquivo /etc/sysctl.conf. Insira uma nova linha conforme o exemplo abaixo:

    redeefirewall - heliotecnologo https://sites.google.com/site/heliotecnologo/redee...

    3 de 8 19-10-2014 10:04

  • net.ipv4.ip_forward = 1

    Aps a edio do arquivo, executar o comando sysctl -p para que o arquivo seja lido e a atualizaoseja feita pelo sistema operacional.

    Trabalhando com iptables

    Leiam o livro "Dominando Linux Firewall Iptables". A leitura rpida e fcil.

    O Guia Foca tambm pode nos ajudar muito com o iptables.

    Por sua grande importncia, algumas funes especficas do iptables sero destacadas nos itensabaixo.

    Mudar a poltica padro do firewall

    A poltica padro do iptables, para todas as tabelas e chains, por default, vem configurada comoACCEPT. Isto quer dizer que o firewall estaria configurado como "fecha um acesso, fecha outro acesso,..., e libera todo o resto". Para mudar a poltica padro para DROP e transformar o firewall para o tipo"libera acesso 1, libera acesso 2, ..., libera acesso x e depois fecha tudo", aconselhvel digitar oseguinte comando:

    iptables -t tabela -P chain DROP

    A princpio, aconselha-se apenas mudar a poltica default para DROP na tabela filter, nas chainsFORWARD e INPUT. As razes so claras, no?

    Permitir a volta dos pacotes

    Outra importante caracterstica do iptables, que inibe a necessidade de criao de uma segundaregra para a volta dos pacotes, a criao da seguinte regra:

    iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

    # ESTABLISHED so os pacotes de volta de conexes, em outras palavras, do protocolo orientado conexo, o TCP

    # RELATED so os pacortes relacionados a outros pacotes no orientados a conexo

    Mascaramento de IP

    A fim de permitir que os equipamentos (servidores, estaes, ...) da rede interna (IPs privados)possam acessar a Internet, que possue IPs vlidos, foi criada uma funo que faz um NAT (traduode endereo) do IP privado para o IP vlido da interface externa do firewall:

    iptables -t nat -A POSTROUTING -o ethX -j MASQUERADE

    #ethX a inteface de rede externa do firewall

    Regras de loopback

    redeefirewall - heliotecnologo https://sites.google.com/site/heliotecnologo/redee...

    4 de 8 19-10-2014 10:04

  • Diversos servios em um servidor necessitam da interface de loopback para funcionarem ou mesmopara serem acessados a partir de um determinado servidor. Por esta razo, ao mudarmos a polticadefault do firewall para DROP, necessrio criar as seguintes regras:

    iptables -I INPUT -i lo -j ACCEPT

    #libera os pacotes que entram (-i) pela interface de loopback

    # -I, a exemplo do -A, significa a adio de uma regra ao firewall, mas ao incio, e no no final dalista, como o -A

    iptables -I OUTPUT -o lo -j ACCEPT

    #libera os pacotes que saem (-o) pela interface de loopback

    iptables -I INPUT -i ! lo -s 127.0.0.0/255.0.0.0 -j DROP

    #exclui os pacotes que chegam ao servidor com um IP de origem pertencente rede 127.0.0.0/8mas que no (!) chega pela interface de loopback

    Salvando e carregando regras

    O iptables possui um programa auxiliar que permite "salvar" as regras. Este comando chamadoiptables-save e, na verdade, no salva as regras, mas a direciona para a sada especificada peloadministrador. Em geral, como a sada padro est apontando para a tela (console), o comando listaas regras nesta janela. Para redirecionar a sada para algum arquivo, utilize o caractere ">" como nocomando abaixo:

    sudo iptables-save > /home/seu_usuario/regras_firewall.txt

    sudo cp /home/seu_usuario/regras_firewall.txt /etc/regras.txt

    Esses comandos, executados como root, criaro um arquivo denominado regras_firewall.txt nodiretrio /etc contendo a sada do programa iptables-save.

    Outra grande vantagem do iptables-save a possibilidade de visualizar as regras de uma formasemelhante digitada ao inser-las, ao contrrio do iptables -L que pode suprimir alguns dadosimportantes (como interfaces onde as regras so aplicadas).

    Para carregar as regras apartir de um arquivo anteriormente criado com o comando iptables-save,utilize o comando iptables-restore da seguinte forma:

    iptables-restore /etc/regras_firewall.txt

    Carregando as regras durante a inicializao do servidor

    Uma maneira simples de carregar as regras do firewall desenvolver um script (programa que utiliza comandos dosistema operacional - esta no uma "definio definitiva" :-D, mas nos atende hoje) que execute o(s) comando(s)necessrio(s) a esta tarefa e adicionlo na lista de scripts executados durante o boot do sistema. Para carregar asregras do iptables previamente salvas no arquivo /etc/regras_firewall.txt, como apresentado anteriormente,poderia-se, por exemplo, criar um script como abaixo:

    --

    redeefirewall - heliotecnologo https://sites.google.com/site/heliotecnologo/redee...

    5 de 8 19-10-2014 10:04

  • #!/bin/sh

    echo "Carregando regras no firewall..."

    iptables-restore < /etc/regras_firewall.txt

    --

    No podemos nos esquecer que, para tornar o script executvel, o comando chmod +xnome_do_arquivo deve ser utilizado (man chmod para maiores detalhes).

    Caso no esteja familiarizado com os nveis de inicializao (runlevel) dos sistemas Linux/Unix, porfavor consulte o fim desta pgina. Este conhecimento necessrio ao bom entendimento do restantedo contedo.

    Voltando inicializao, aps criar um script e sav-lo no diretrio /etc/init.d, deve-se ir aodiretrio correspondente ao runlevel e criar um apontador para este script. Veja o exemplo abaixo:

    cd /etc/rcS.d

    sudo ln -s ../init.d/inicia_firewall S99inicia_firewall

    O nome S99inicia_firewall no foi escolhido por acaso. O "S" significa que o script ser executado e onmero,no nosso exemplo o "99", indica a ordem em que o script executado levando emconsiderao os demais scripts no mesmo diretrio.

    Aps todos estes passos, basta reiniciar o servidor que o firewall tambm ser iniciado.

    Nveis de inicializao

    O Linux e sistema UNIX em geral possuem diferentes nveis de inicializao (runlevel). Em geral, osLinux utilizados por ns utilizam o nvel de inicializao 5. Segue abaixo a lista dos nveis, bem comosuas caractersticas principais:

    Runlevel 0 (halt) - Shuts down everything and brings the system to halt.Runlevel 1 (single user) - Useful for maintenance work.Runlevel 2 (multi-user) - multi-user, but with no network services exported.Runlevel 3 (multi-user) - normal/full multi-user mode.Runlevel 4 (multi-user) - reserved for local use. Usually the same as 3.Runlevel 5 (multi-user) - multiuser, but boots up into X Window, using xdm, or similar.Runlevel 6 (Reboot) - As 0, but reboots after closing everything down.

    O runlevel configurado no arquivo /etc/inittab, em uma linha como a abaixo:

    id:5:initdefault

    Dentro do diretrio /etc existe um subdiretrio chamado init.d. Este diretrio contm os scripts deinicializao do sistema. Nem todos os scripts deste diretrio so executados ao se inicializar ocomputador, isto depender do runlevel escolhido no arquivo inittab.

    Para saber quais scripts executados na inicializao, o sistema recorre a alguns diretrios criados enumerados de acordo com o prprio nvel de inicializao. Esses diretrios tambm esto dentro do

    redeefirewall - heliotecnologo https://sites.google.com/site/heliotecnologo/redee...

    6 de 8 19-10-2014 10:04

  • /etc, e so nomeados obedecendo o seguinte padro: rcX.d, onde X o nmero do nvel deinicializao.

    Os diretrios em questo possuem apontamentos para os scripts de inicializao do sistema contidosno diretrio /etc/init.d, e no os scripts propriamente ditos. Isto no quer dizer que um arquivo nopossa ser criado neste diretrio, apenas que a utilizao do script uma boa prtica. Como assim???Por exemplo, caso seja necessrio modificar 1 ou mais scripts de inicializao, recorre-se apenas aum repositrio central, evitando o retrabalho e ganhando em agilidade e evitando erros. Osapontamentos, tambm chamado links, so criados com o comando "ln -s arquivo_origemarquivo_destino" (recorrer ao man para saber como utilizar o ln).

    Logando acessos

    Um bom observador j deve ter notado que em uma "rede ideial", sem erros de acesso ou eventos desegurana, o firewall no deveria barrar qualquer pacote, uma vez que os pacotes fora das regrascom ACCEPT no existiriam. Este mundo perfeito no existe. Por esta razo, interessante que osadministradores saibam quais pacotes esto sendo filtrados, barrados.

    Alm de auxiliar a identificao de possveis problemas de segurana, a utilizao de logs facilita otroubleshooting de problemas ou erros na configurao do firewall, listando os pacotes barrados porele.

    Arquivo Exemplo - Regras Firewall

    regras_firewall.txt

    # Generated by iptables-save v1.3.1 on Mon May 8 19:57:05 2006*nat:PREROUTING ACCEPT [0:0]:POSTROUTING ACCEPT [0:0]:OUTPUT ACCEPT [0:0]-A POSTROUTING -o eth0 -j MASQUERADECOMMIT# Completed on Mon May 8 19:57:05 2006# Generated by iptables-save v1.3.1 on Mon May 8 19:57:05 2006*filter:INPUT DROP [0:0]:FORWARD DROP [0:0]:OUTPUT ACCEPT [0:0]-A INPUT -i lo -j ACCEPT-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT-A INPUT -s 192.168.0.0/255.255.255.0 -i eth1 -p udp -m udp --dport 3128 -j ACCEPT-A INPUT -j LOG-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT-A FORWARD -s 192.168.0.0/255.255.255.0 -d www.orkut.com -j DROP-A FORWARD -s 192.168.0.0/255.255.255.0 -p tcp -m tcp --dport 80 -j ACCEPT-A FORWARD -s 192.168.0.0/255.255.255.0 -p tcp -m tcp --dport 443 -j ACCEPT-A FORWARD -s 192.168.0.0/255.255.255.0 -p udp -m udp --dport 53 -j ACCEPT-A FORWARD -j LOG-A OUTPUT -o lo -j ACCEPT

    redeefirewall - heliotecnologo https://sites.google.com/site/heliotecnologo/redee...

    7 de 8 19-10-2014 10:04

  • -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT-A OUTPUT -j LOGCOMMIT# Completed on Mon May 8 19:57:05 2006

    Fazer login | Atividade recente no site | Denunciar abuso | Imprimir pgina | Tecnologia Google Sites

    redeefirewall - heliotecnologo https://sites.google.com/site/heliotecnologo/redee...

    8 de 8 19-10-2014 10:04