iptables.resumo

Upload: zezeppelin

Post on 14-Jul-2015

23 views

Category:

Documents


0 download

TRANSCRIPT

Curso de Firewall IPTABLES

Resumo e Exerccios

MSc Eng. Ali Faiez Taha CIRP - Centro de Informtica de Ribeiro Preto - USP

Sumrio

1

1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10

Manipulando chains

Controle de uso do Iptables instalado no Linux Fedora 5: Outras opes do iptables . . . . . . . . . . . . . . . . . . Especicando interfaces de origem/destino . . . . . . . . . Especicando um protocolo . . . . . . . . . . . . . . . . . Especicando portas de origem/destino . . . . . . . . . . Especicando pacotes syn . . . . . . . . . . . . . . . . . . Especicando fragmentos . . . . . . . . . . . . . . . . . . Especicando uma exceo . . . . . . . . . . . . . . . . . Especicando LOG como alvo . . . . . . . . . . . . . . . . Firewall com NAT . . . . . . . . . . . . . . . . . . . . . . 1.10.1 Criando chains na tabela nat . . . . . . . . . . . . 1.10.2 Source NAT . . . . . . . . . . . . . . . . . . . . . . 1.10.3 Destination NAT . . . . . . . . . . . . . . . . . . . 1.10.4 Redirecionamento de portas . . . . . . . . . . . . . 1.10.5 Exemplos com NAT: . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

3

3 4 5 5 5 6 6 6 6 7 7 7 8 8 9

2

Exerccios:

10

2

Captulo 1Manipulando chains

1.1 Controle de uso do Iptables instalado no Linux Fedora 5:Inicializar o Iptables : service iptables start Parar o Iptables : service iptables stopAdio de regras :

iptables -t lter -A INPUT -d 192.168.0.10 -j DROP Adicionar a regra e fazer o teste com o ping e vericar os resultados $> ping 192.168.0.10

Listagem das regras :

iptables -t [tabela] -L [chain] [opes] $> iptables -t lter -L INPUT $> iptables -L INPUT -n $> iptables -L INPUT -n -v $> iptables -L -x $> iptables -L INPUT -n line-numbers Os campos mostrados so: pkts, bytes, target, prot, opt, in, out, source, destination

Apagar regras:

$> iptables -t lter -D INPUT 1 $> iptables -D INPUT -d 192.168.0.10 -j DROP

Inserir regras:

$> iptables -t lter -I INPUT 1 -s 192.168.0.10 -d 192.168.0.20 -j ACCEPT $> iptables -t lter -I INPUT 2 -d 192.168.0.30 -p icmp -j DROP

Substituir regras:

$> iptables -R INPUT 2 -d 192.168.0.30 -p icmp -j ACCEPT

Criao de chains:

iptables [-t tabela] [-N novochain] $> iptables -t lter -N internet Para inserir regras no chain internet: $> iptables -t lter -A internet -s 200.100.200.100 -j DROP Para criar um jump (pulo) (-j) do chain INPUT para o chain internet :$> iptables -t lter -A INPUT -j internet

3

CAPTULO 1.

MANIPULANDO CHAINS

4

Renomear chains: iptables -t lter -E chain-antigo novo-chain No se pode mudar os chains defaults do iptables.

$> iptables -t lter -E internet redeuniversal

Listando os nomes das tabelas atuais: Ver o contedo do arquivo /proc/net/ip_tables_names: $> cat /proc/net/ip_tables_names Limpar regras de um chain:

iptables [-t tabela] [-F chain] $> iptables -t lter -F INPUT $> iptables -t lter -F

Apagar chains:

$> iptables -t lter -X internet $> iptables -X

Zerar o contador de bytes dos chains:

$> iptables -t lter -Z INPUT $> iptables -Z

Policiamento padro de um chain:

Determina o destino de um pacote quando ele chegar ao nal das regras contidas em um chain. O padro ACCEPT.iptables [-t tabela] [-P chain] [ACCEPT/DROP]

$> iptables -t lter -P INPUT DROP

1.2 Outras opes do iptablesEspecicao de Entrada e Sada, origem e destino: -s ou src ou source: source -d ou d ou dst: destination Endereos IP: 192.168.0.100 Hostname: serv_abc Endereo FQDN: desktop_secretaria.empresa.com.br Rede/Mscara:192.168.0.0/24, 200.100.200.0/24. O padro 0/0 (todas as mquinas de todas as redes)Recomenda-se usar sempre endereos IP nas regras, o que evita atrasos na resoluo de DNS. Bloqueio de trfego vindo da rede 200.100.200.*

$> iptables -A INPUT -s 200.100.200.0/24 -j DROP

Bloqueia conexes com o destino 10.1.2.3

$> iptables -A OUTPUT -d 10.1.2.3 -j DROP

Bloqueia o trfego da mquina www.dominio.com.br ao endereo 200.100.200.33

$> iptables -A INPUT -s www.dominio.com.br -d 200.100.200.33 -j DROP

CAPTULO 1.

MANIPULANDO CHAINS

5

1.3 Especicando interfaces de origem/destinoEst na pgina 27 da apostila: Guia FOCA LINUX : http://granito2/Firewall/FocaLinux.Iptables/index.html Opo -i (ou in-interface) e -o ( ou out-interface) especicam as interfaces deorigem/destino de pacotes. ATENO: A interface -i nunca pode ser especicada em uma chain OUTPUT. A interface -o nunca pode ser especicada em uma chain INPUT. O CHAIN OUTPUT da tabela lter somente poder conter a interface de sada. O CHAIN FORWARD da tabela lter o nico que aceitra as especicaes de ambas as interfaces. Se as interfaces forem um MODEM (ppp0) e uma placa de Rede (eth0), podemos

fazer o controle de trfego de qualquer endereo IP vinda da interface do MODEM. $> iptables -A INPUT -s 200.100.200.123 -i ppp0 -j DROP ou ento: iptables -A INPUT -s 200.100.200.123 -i ppp+ -j DROP ppp+ signica qualquer interface de MODEM (ppp0 a ppp9)Para bloquear qualquer trfego local para a Internet:

$> iptables -A OUTPUT -o ppp+ -j DROP

Para bloquear a passagem de trfego da interface ppp0 para a interface eth1 (da rede interna):

$> iptables -A FORWARD -i ppp0 -o eth1 -j DROP

1.4 Especicando um protocoloUsa-se a opo Exemplos: $> iptables $> iptables $> iptables-p (ou protocol).

Os protocolos podem ser TCP, UDP e ICMP.

-A INPUT -s 200.100.200.123 -p udp -j DROP -A INPUT -i eth0 -p icmp -j DROP -A OUTPUT -o eht0 -p tcp -j DROP

1.5 Especicando portas de origem/destinoDevem ser especicadas aps o protocolo e podem ser precedidas por um das seguintes opes:

source-port ou sport : Especica uma porta ou faixa de portas de origem destination-port ou dport: Especica uma porta ou faixa de portas de destinoUma faixa de portas pode ser especicada atravs de PortaOrigem:PortaDestino: #Bloqueia qualquer pacote indo para 200.100.200.123 na faixa de portas 0 a 1023 $> iptables -A OUTPUT -d 200.100.200.123 -p tcp dport 0:1023 -j DROP

PortaOrigem default = 0 PortaDestino default = 65535

CAPTULO 1.

MANIPULANDO CHAINS

6

Especica mltiplas portas: iptables -A INPUT -p tcp -i eth0 -m multiport dport 21,23,25,80 -j DROP

1.6 Especicando pacotes synPacotes que inicializam uma conexo. O Iptables consegue bloquear somente pacotes que iniciam uma conexo, sem afetar os pacotes restantes.Para que uma conexo ocorra necessrio que a mquina obtenha a resposta a pacotes syn enviados, caso ele seja bloqueado a resposta nunca ser retornada e a conxo no ser estabelecida.$> iptables -A INPUT -p tcp syn dport 23 -i eht0 -j DROP

1.7 Especicando fragmentosA opo -f permite especicar regras que conram com fragmentos. Fragmentos so simplesmente um pacote maior dividido em pedas para poder ser transmitido para remontagem do pacote pela mquina destino. Somente o primeiro fragmento possui detalhes de cabealho para ser processado, o restante somente possuem alguns cabealhos necessrios para dar continuidade ao processo de remontagem do pacote no destino. Os pacotes vindos de 200.100.200.123 sero descartados. Com a opo -f pode-se evitar o ood por fragmentos, que, dependendo da intensidade podem trava a mquina destino.$> iptables -A INPUT -s 200.100.200.123 -f -j DROP

1.8 Especicando uma exceoPrecedida pelo sinal ! Rejeitar todos os pacotes EXCETO os que vem do endereo 200.100.200.100: $> iptables -t lter -A INPUT ! -s 200.100.200.100 -j DROP Bloqueia todos os pacotes EXCETO os que iniciam conexes (! syn), EXCETO para pacotes vindos pela interface eth0 (! -i eth0): $> iptables -A INPUT -p tcp ! syn -s 200.100.200.100 ! -i eth0 -j DROP Bloqueia todos os pacotes vindos de 200.100.200.100, EXCETO os do protocolo tcp: iptables -A INPUT -s 200.100.200.100 ! -p tcp -j DROP

1.9 Especicando LOG como alvoUsado para registrar a passagem de pacotes no syslog do sistema Linux. Usado para vericar o trfego dos pacotes, tentativas de conxo, auditoria, melhoria das regras, etc. # Para registrar o bloqueio de pacotes vindos de 200.200.200.1 pela interface ppp0: $> iptables -A INPUT -s 200.200.200.1 -i ppp+ -j LOG # Para efetuar o bloqueio : $> iptables -A INPUT -s 200.200.200.1 -i ppp+ -j REJECT

Deve-se, antes, registrar o LOG e, depois, REJEITAR os pacotes

CAPTULO 1.

MANIPULANDO CHAINS

7

1.10 Firewall com NATNAT = Network Address Translatin, serve para fazer a traduo de endereos que atravessam o reotador. As trs chaisn da tabela NAT so: PREROUTING, OUTPUT e POSTROUTING Masquerading: Mquinas de uma rede interna podem acessar a Internet atravs de uma mquina Linux, redirecionamento de porta, proxy transparente, etc. usado quando se tem um endereo IP vlido, uma conexo PPP, IP Dinmico. Usando tambm quando se tem uma conexo ADSLcom IP permanente.1.10.1

Criando chains na tabela natnecessrio especicar a opo -t nat

O procedimento o mesmo usado para se criar um novo chain.$> iptables -t nat -N intra-net Para inserir as regras neste chain ser

OBS: deve-se habilitar o suporte ao masquerading no Linux:$> iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE $> echo 1 > /proc/sys/net/ipv4/ip_forward

Aps isso o seu Linux j est congurado. Agora os clientes da rede precisaro ser congurados para usar o endereo IP do servidor Linux como GATEWAY. Congure tambm um servidor DNS e instale um servidor Proxy (opcionais) para acelerar o desmepenho das requisies/resoluo de nomes das mquinas em rede.1.10.2 Source NAT

Modica o endereo de origem das mquinas cliente antes dos pacotes serem enviados. Toda operao de SNAT feita no chain POSTROUTING # Modica o endereo IP dos pacotes vindos da mquina 192.168.1.2 da rede interna # que tem como destino a interface eth1 para 200.200.217.40 (que o nosso endereo # IP da interface ligada a Internet). $> iptables -t nat -A POSTROUTING -s 192.168.1.2 -o eth1 -j SNAT to 200.200.217.40 Tambm possvel especicar faixas de endereos e portas que sero substitudas: $> iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT to 200.200.217.40200.200.217.50 Modica o endereo IP de origem de todas as mquinas da rede 192.168.1.0/24 que tem o destino a interface eth0 para 200.241.200.40 a 200.241.200.50. O endereo IP selecionado escolhido de acordo com o ltimo IP alocado. $> iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT to 200.200.217.40200.200.217.50:1-1023 Idntico ao anterior, mas faz somente substituies na faixa de portas de origem de 1 a 1023. $> iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT to 200.200.217.40200.200.217.50 to 200.200.217.70-200.200.217.73 Faz o mapeamento para a faixa de portas 200.200.217.40 a 200.200.217.50 e de 200.200.217.70 a 200.200.217.73. Se por algum motivo no for possvel mapear uma conexo NAT, ela ser derrubada. Tenha certeza que as respostas podem chegar at a mquina que fez o NAT. Se estiver fazendo SNAT em um endereo livre em sua rede (como 200.200.217.73).OBS1: OBS2:

CAPTULO 1.

MANIPULANDO CHAINS

8

OBS3: Como notou acima, o SNAT usado quando temos uma conexo externa com um ou mais IP's xos. O Masquerading uma forma especial de SNAT usada para funcionar em conexes que recebem endereos IP aleatrios (PPP). OBS4: No se esquea de habilitar o redirecionamento de pacotes aps fazer suas regra de NAT com o comando: echo "1" >/proc/sys/net/ipv4/ip_forward, caso contrrio o redirecionamento de pacotes no funcionar.

1.10.3

Destination NAT

Modica o endereo de destino das mquinas clientes. Muito utilizado para fazer o redirecionamento de pacotes, proxyes transparentes e balanceamento de carga. Toda operao de DNAT feita no chain PREROUTING. # Modica o endereo IP destino dos pacotes de 200.200.217.40 vindo da interface eth0 para 192.168.1.2. $> iptables -t nat -A PREROUTING -s 200.200.217.40 -i eth0 -j DNAT to 192.168.1.2 Tambm possvel especicar faixas de endereos e portas que sero substitudas no DNAT: $> iptables -t nat -A PREROUTING -i eth0 -s 192.168.1.0/24 -j DNAT to 200.200.217.40200.200.217.50 Modica o endereo IP de destino do trfego vindos da interface 192.168.1.0/24 para um IP de 200.241.200.40 a 200.241.200.50. Este um excelente mtodo para fazer o balanceamento de carga entre servidores. O endereo IP selecionado escolhido de acordo com o ltimo IP alocado. $> iptables -t nat -A PREROUTING -i eth0 -s 192.168.1.0/24 -j DNAT to 200.200.217.40200.200.217.50:1024:5000 Idntico ao anterior, mas faz somente substituies na faixa de portas de destino de 1024 a 5000. A operao acima a mesma realizada pelo ipmasqadm dos kernels da srie 2.2. OBS1: Se por algum motivo no for possvel mapear uma conexo NAT, ela ser derrubada. OBS2: No se esquea de conferir se o ip_forward est ajustado para 1:echo "1" >/proc/sys/net/ipv4/ip_forward

1.10.4

Redirecionamento de portas

Permite passar conexes com destino a uma porta para outra porta na mesma mquina. O alvo REDIRECT usado para fazer esta operao, junto com o argumento to-port especicando a porta que ser redirecionada. Este o mtodo especco para se fazer um proxy transparente. Todas as operaes de redirecionamento de portas realizado no chain PREROUTING eOUTPUT da tabela nat.

$> iptables -t nat -A PREROUTING -i eth0 -p tcp dport 80 -j REDIRECT to-port 81 Redireciona as conexes indo para a porta 80 para a porta 81 (rodando squid) no rewall. ATENO: O Proxy Squid possui suporte a proxy transparente, e poder atender as requisies acima da regra acima. Monitore as conexes feitas na tabela NAT:

cat /proc/net/ip_conntrack

CAPTULO 1.

MANIPULANDO CHAINS

9

1.10.5

Exemplos com NAT:

Testar e carregar o mdulo de NAT:$> modprobe iptable_nat

iptables -A FORWARD -j ACCEPT -p tcp dport 21 iptables -t nat -A PREROUTING -i eth1 -p tcp dport 21 -j DNAT to 192.168.0.100Redirecionando conexes FTP entrantes para o host 192.168.0.100

iptables -A FORWARD -j ACCEPT -p tcp dport 22 iptables -t nat -A PREROUTING -i eth1 -p tcp dport 22 -j DNAT to 192.168.0.100:22 iptables -A FORWARD -j ACCEPT -p tcp dport 80 iptables -t nat -A PREROUTING -i eth1 -p tcp dport 80 -j DNAT to 192.168.0.100:80Redirecionando conexoes SSH e WWW entrantes para o host 192.168.0.100 Mais exemplos: http://www.eriberto.pro.br/iptables/

Captulo 2Exerccios:

1 - Instalar o iptables no seu Linux e criar um arquivo onde devero ser colocadas as regras e chains. 2 - Congurar de modo a bloquear conexes ICMP, TELNET e FTP de entrada. 3 - Limitar as conexes ao servio SSH de seu servidor e bloquear as demais conexes de fora para sua mquina. 4 - Habilitar o servidor WEB em porta de conexo no padro e estabelecer as regras de acesso. 5 - Registrar em LOG o trfefo do seu Firewall. 6 - Utilizar o script para examinar os LOGs do Firewall Iptables instaladohttp://granito2.cirp.usp.br/Firewall/lista.portas.iptables

7 - Examinar os campos referentes a horrios, interfaces de Entrada/Sada, endereos de Origem/Destino, MAC ADDRESS, etc 8 - Salvar e Recuperar as regras usando os comandos iptables-save e iptables-restore. 9 - Montar um sistema NAT com o Fedora, usando duas placas de Rede. Referncia: http://www.vivaolinux.com.br/artigos/impressora.php?codigo=4248 10 - Proteger seu Firewall contra os seguintes tipos de ataque:

Ping da morte SYN FLOOD IP SPOOFING11 - Elaborar um Firewall dedicado a uma Intranet atendendo os seguintes itens:

Regras para bloqueios de certos sites. Regras para bloqueios a certos sites atravs de determinados IPs da Intranet. Um computador da rede interna dever permitir a comunicao via RDESKTOP (porta 3389) para apenas alguns IPs da rede externa. Congurar a rede interna para DHCP e tabelar os endereos de MAC de cada computador de modo a travar IPs com MAC ADDRESS. Registrar em arquivos de LOG todo o trfego dessa Intranet. Analisar os logs e tabelar as portas de Entrada e Sada mais utilizadas. Identicar os trfegos anmalos, abusos e tentativas de invaso nas diversas portas de E/S. Congurar o Firewall para permitir o redirecionamento de portas e redirecionamento de servidores.10