Vous êtes sur la page 1sur 4

Regras p/

IPTables
As regras do Iptables so muitas vezes um desafio at mesmo para os administradores mais experientes.
Escrever regras de firewall quase como aprender um novo dialeto. Existem muitas combinaes possveis
entre os parmetros disponveis e "regras de concordncia", que determinam o que funciona e o que no.

Obs.: Devido ao UTF, os dois traos usados nos exemplos aparecem como "-" em muitos
navegadores. Ao us-los, lembre-se de substituir o "-" por dois traos (- -).

Aqui est um resumo dos parmetros do Iptables, que vai ajud-lo a escrever seus prprios scripts e entender
melhor os scripts de exemplo que encontrar pela web:

-A INPUT:Especifica que a regra se aplica a pacotes de entrada, ou seja, pacotes recebidos pelo servidor, em
qualquer interface.

-A OUTPUT:A regra se aplica a pacotes de sada, transmitidos pelo prprio servidor.

-A FORWARD:Este parmetro usado ao compartilhar a conexo com a Internet, permitindo que os micros
da rede local acessem atravs do servidor. Os pacotes de outros micros, encaminhados pelo servidor, so
tratados como "FORWARD", diferentemente dos pacotes transmitidos pelo prprio servidor, que so tratados
como "OUTPUT". Voc pode definir regras diferentes para cada situao.

-p tcp:Especifica que a regra se aplica a pacotes TCP, o que o mais comum.

-p udp:Alguns servios usam tambm portas UDP. Um bom exemplo so os servidores DNS, que escutam
tanto na porta 53 TCP, quanto na porta 53 UDP. Este parmetro permite definir regras que se aplicam a estes
casos, abrindo ou fechando as portas UDP, como em:

iptables -A INPUT -p udp --dport 53 -j ACCEPT

A maioria das regras do Iptables exige que voc especifique o protocolo, fazendo com que voc tenha que
repetir a regra caso queira abrir uma porta simultaneamente para TCP e UDP. Ao executar algo como
"iptables -A INPUT --dport 53 -j ACCEPT" (sem especificar o protocolo), voc receber um erro como:

iptables v1.3.3: Unknown arg --dport

Try iptables h or iptables help for more information.

Nesses casos, voc pode usar o parmetro "-p ALL", que se aplica simultaneamente aos trs protocolos
(TCP, UDP e ICMP), sem que voc precise incluir uma regra separada para cada um, como no exemplo da
regra que bloqueia qualquer tipo de conexo proveniente de um determinado endereo:

iptables -A INPUT -p ALL -s 88.191.79.206 -j DROP

Como as portas UDP tambm so usadas por alguns servios, muito comum bloquear as portas de 0 a 1023
UDP, autorizando apenas as portas que realmente devem ficar abertas, como em:
iptables -A INPUT -p udp --dport 53 -j ACCEPT

iptables -A INPUT -p udp --dport 0:1023 -j DROP

Note que voc nunca deve fechar todas as portas UDP, pois as portas altas so usadas aleatoriamente para
pacotes de resposta para DNS e diversos outros protocolos. Alguns administradores mais paranicos fecham
todas as portas UDP at a 32000, por exemplo. No existem muitos problemas em fechar uma faixa maior de
portas, desde que voc sempre deixe uma larga faixa de portas altas abertas, de forma a receber os pacotes de
resposta.

Ao contrrio do TCP, no possvel criar uma regra genrica para permitir todos os pacotes de resposta UDP
(como a "iptables -A INPUT -p tcp --syn -j DROP"), pois no UDP no so abertas conexes. Os pacotes so
simplesmente transmitidos diretamente, sem aviso prvio.

-p icmp:Alm do TCP e UDP, existe o protocolo ICMP, usado para pacotes de controle, pings e envio de
mensagens. Um exemplo de uso a regra para desativar a resposta a pings. Na verdade, ela atua bloqueando
o pedido de ping antes que ele seja repassado ao sistema:

iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

-i eth0:A opo "-i" permite definir a interface onde os pacotes devem ser recebidos ou enviados. Por
exemplo, usar uma regra como:

iptables -A INPUT -p tcp -j REJECT

simplesmente desconectaria seu micro da rede, pois bloquearia comunicaes em qualquer interface.
Porm, se voc especificasse a interface, ele bloquearia apenas pacotes recebidos atravs dela, como em:

iptables -A INPUT -i eth2 -p tcp -j REJECT

O mesmo se aplica quando voc quer permitir conexes em determinadas portas, mas apenas a partir da
placa de rede local. Para permitir conexes via SSH apenas a partir da placa eth0, voc poderia usar:

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

-o eth0: similar ao parmetro "-i", mas especifica uma interface de sada. Este parmetro menos usado,
pois normalmente nos preocupamos em impedir que o firewall aceite conexes em determinadas portas, em
vez de tentar interceptar as respostas. Entretanto, esta opo pode ser til em casos em que voc precisa
fechar uma porta de sada apenas para determinada interface. Este um exemplo de uso, onde bloqueio
pacotes de sada na porta 1863 apenas para a placa eth1:

iptables -A OUTPUT -p tcp -o eth1 --dport 1863 -j DROP

--dportou --destination-port:Especifica uma porta. O uso mais comum para esta opo para abrir portas
de entrada (e depois aplicar uma regra que fecha as demais), como na regra que abre para conexes na porta
22, que mostrei no exemplo anterior.

-s(source): O parmetro "-s" permite especificar um endereo IP ou domnio de origem, de forma a aceitar ou
recusar as conexes. Embora seja muito fcil forjar endereos IP dentro da rede local, as coisas so muito
mais complicadas na Internet. Permitir o acesso a determinadas portas (como a do SSH) apenas para
determinados endereos, ou faixas de endereos, uma medida de segurana interessante em muitas
situaes.

Este um exemplo de regra, que abre a porta 631 apenas para hosts dentro da faixa e mscara especificada:

iptables -A INPUT -p tcp -s 72.232.35.0/255.255.255.248 --dport 631 -j


ACCEPT

-d(destiny): Destinado ao endereo IP ou domnio citado. muito usado ao bloquear o acesso a


determinados sites a partir dos micros da rede local como, por exemplo:
iptables -A FORWARD -d torrentreactor.net -j REJECT

-m mac --mac-source 00:11:D8:76:59:2E:Esta a regra que permite especificar endereos MAC dentro de
regras do Iptables que vimos h pouco. Ela uma forma de dificultar o uso de endereos IP falseados para
ganhar acesso ao servidor, pois permite relacionar o IP ao endereo MAC da placa instalada. Lembre-se,
porm, que ela s pode ser usada em rede local e que os endereos MAC so quase to fceis de falsear
quanto os endereos IP. Um exemplo de uso seria:

iptables -A INPUT --dport 22 -m mac --mac-source 00:11:D8:76:59:2E -j


ACCEPT

--syn:Cria uma regra vlida apenas para novas conexes, no impedindo que o outro micro responda a
conexes iniciadas pelo servidor, como em:

iptables -A INPUT -p tcp --syn -j DROP

-j: usado no final de cada regra, especificando uma ao, que pode ser:

-j ACCEPT:Aceita o pacote. Ele encaminhado ao destino sem passar pelas demais regras.

-j REJECT :Rejeita educadamente o pacote, enviando um pacote de resposta ao emissor. Quando uma porta
est fechada em modo reject, o emissor recebe rapidamente uma resposta como "connect to host 192.168.1.1
port 22: Connection refused".

-j DROP:O DROP mais enftico. O pacote simplesmente descartado, sem aviso. O emissor fica um
longo tempo esperando, at que eventualmente recebe um erro de time-out.

-j LOG: Este ltimo parmetro permite logar conexes. interessante usar esta regra principalmente em
portas muito visadas, como a do SSH, pois assim voc tem uma lista de todos os endereos que acessaram
seu servidor na porta especificada. Para ativar o log, voc deve duplicar a regra que abre a porta, usando a
opo "-j LOG" na primeira e "-j ACCEPT" na segunda, como em:

iptables -A INPUT -p tcp --dport 22 -j LOG

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

As mensagens so gravadas no arquivo "/var/log/messages" de forma bastante detalhada, incluindo a data e


hora da conexo, o IP e MAC do micro que fez a conexo (SRC), alm da porta (DPT). Voc pode ver o
mesmo log, porm com as entradas escritas de forma resumida, usando o comando "dmesg".

Jun 29 15:49:46 spartacus kernel: IN=eth0 OUT=


MAC=00:e0:7d:9b:f8:01:00:15:00:4b:68:db:08:00 SRC=192.168.1.2
DST=192.168.0.1 LEN=52 TOS=000 PREC=000 TTL=64 ID=32704 DF PROTO=TCP
SPT=56848 DPT=22 WINDOW=2164 RES=000 ACK URGP=0

No se assuste com o volume de informaes, pois o log inclui todas as tentativas de conexo. O fato de um
determinado IP ter aberto uma conexo com a porta 22 do seu servidor, no significa que o usurio realmente
obteve acesso ao SSH. Ele pode ter recebido o prompt para digitar a senha, mas isso no significa que ele
realmente conseguiu fazer login.

Note que alterar a ordem das regras altera o resultado. Em caso de duas regras conflitantes, vale a que vem
primeiro. Por exemplo, ao usar:

iptables -A INPUT -p tcp -j REJECT

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

a porta 22 permanecer fechada, pois os pacotes sero descartados pela primeira regra, sem terem chance
de serem autorizados pela segunda. justamente por isso que sempre necessrio colocar as regras menos
restritivas primeiro, declarando as portas autorizadas, para s ento fechar as demais.
O mesmo se aplica ao logar transmisses. Se voc usar algo como:

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

iptables -A INPUT -p tcp --dport 22 -j LOG

o log no funcionar, pois os pacotes destinados porta 22 sero aceitos pela primeira regra e no
passaro pela segunda, que faz o log. As regras que fazem log devem sempre vir antes das regras que
autorizam as conexes.

Tags: iptables, fw, security


Created: 5 years ago.
Last edited: 5 years ago.
Reviewed: 5 years ago.
Read 43 times.

Comments

5 years ago can you make one in english?


jordan4girl3

5 years ago Would you mind to explain easily for newbies?


kazztan0325

Other tutorials from paulomaia


No other tutorials.

Linux Mint | Blog | Forums

Vous aimerez peut-être aussi