Iptables -Introdução 
• Os firewalls existem no Linux desde o kernel 1.1, com o 
ipfw, originário do BSD. 
• Esse filtro era userspace, ou seja, rodava como um 
programa comum no sistema, similarmente ao BIND 
(servidor de nomes). 
• Com o kernel 2.0 veio o ipfwadm, que ainda era uma 
ferramenta userspace e controlava as regras de filtragem 
do kernel. 
• Na versão 2.2 do kernel, veio o ipchains (ainda presente 
em algumas distribuições) e em 1999, veio o iptables 2, 
presente a partir do kernel 2.3.15.
Iptables -Introdução 
O iptables é um firewall nativo do Linux e que faz parte 
do seu kernel e por isto tem um desempenho melhor 
que firewalls instalados como aplicações. Com isso, ele é 
bastante seguro e rápido.
Cadeias e políticas-padrão 
No iptables, existem tabelas de filtragem (chains), e três 
delas são básicas e não podem ser apagadas: INPUT, 
OUTPUT e FORWARD. 
A chain INPUT trata dos pacotes de entrada, aqueles que 
chegam da rede. 
A chain OUTPUT trata dos pacotes de saída, aqueles que vão 
para a rede. 
E finalmente a chain FORWARD trata do encaminhamento 
de pacotes, ou seja, roteamento.
Cadeias e políticas-padrão
Comandos do Iptables 
iptables -A  adiciona uma nova regra ao fim da lista de 
regras 
iptables -P <nome-da-cadeia> <alvo> muda a política 
padrão de uma cadeia, de forma que todo pacote desta 
cadeia ficará sujeito a esta política, caso não exista nenhuma 
regra anterior que se aplique a mesma. 
iptables -D  apaga uma regra específica da lista 
iptables -L  lista as regras existentes na lista. 
Roteador 
iptables -F remove todas as entradas adicionadas na lista 
de regras do iptables
Alvos das regras 
iptables -I  Insere uma nova regra ao início da lista de 
regras 
-j – define o alvo do pacote caso o mesmo se encaixe em uma 
regra. As principais ações são ACCEPT, DROP, REJECT. 
ACCEPT  aceita o pacote 
REJECT  rejeita educadamente o pacote, enviando um 
pacote de resposta ao emissor. 
DROP  o pacote simplesmente é descartado, sem aviso. 
LOG  Permite fazer log Roteador 
dos pacotes que se encaixam 
na regra.
Parâmetros para a filtragem de 
pacotes 
-p – especifica o protocolo aplicado à regra. Se enquadra 
aos protocolos da camada de transporte, como tcp, udp e 
icmp 
Ex: iptables - A INPUT –p tcp –j ACCEPT
Parâmetros para a filtragem de 
pacotes 
-s – especifica a origem (source) do pacote ao qual a regra 
deve ser aplicada. A origem pode ser um host ou uma rede. 
Nesta opção geralmente utilizamos o IP seguido de sua 
sub-rede: 
Ex: iptables –A INPUT –s 172.16.53.1 –j DROP 
iptables –A INPUT –s 172.16.53.1 –j ACCEPT 
Este comando descarta todo pacote de entrada vindo da 
origem 172.16.53.1 
O segundo comando aceita todo pacote de entrada vindo 
da origem 172.16.53.1
Parâmetros para a filtragem de 
pacotes 
-d – especifica o destino do pacote (destination) ao qual a 
regra deve ser aplicada. Sua utilização se dá da mesma 
maneira que a ação –s. 
Ex: iptables –A OUTPUT –d 172.16.53.1 –j DROP 
iptables –A OUTPUT –d 172.16.53.1 –j ACCEPT 
Este comando descarta todo pacote de saída com destino 
à máquina 172.16.53.1 
O segundo comando aceita todo pacote de saída com 
destino à máquina 172.16.53.1
Parâmetros para a filtragem de 
pacotes 
-i – especifica a interface de entrada a ser utilizada e 
como um Firewall possui mais de uma interface esta 
regra acaba sendo muito importante para distinguir a 
qual interface de rede o filtro deve ser aplicado. 
Ex: iptables –A INPUT –i eth0 –j DROP 
O comando permite que todo pacote que entra pela 
interface eth0 seja selecionado para ser descartado pelas 
regras do firewall.
Parâmetros para a filtragem de 
pacotes 
-o – especifica a interface de saída a ser utilizada e se aplica 
da mesma forma que a regra –i, mas este parâmetro é 
menos usado, pois normalmente nos preocupamos em 
impedir que o firewall aceite conexões em determinadas 
portas, ao invés de tentar interceptar as respostas. 
Ex: iptables –A FORWARD –o eth0 –j DROP 
O comando permite que todo pacote que sai pela interface 
eth0 seja selecionado para ser descartado pelas regras do 
firewall.
Parâmetros para a filtragem de 
pacotes 
--sport – porta de origem (source port). Com esta regra é 
possível aplicar filtros com base na porta de origem do 
pacote. 
Ex: iptables –A INPUT –p tcp –-sport 22 –j DROP 
O comando permite que todo pacote de entrada usando o 
protocolo TCP e com origem na porta 22 seja descartado.
Parâmetros para a filtragem de 
pacotes 
--dport – porta de destino (destination port) especifica a 
porta de destino do pacote e funciona de forma similar à 
regra sport. 
iptables –A OUTPUT –p tcp –-dport 22 –j DROP 
O comando permite que todo pacote de saída usando o 
protocolo TCP e com destino na porta 22 seja descartado.
Parâmetros para a filtragem de 
pacotes 
-m mac --mac-source – é a regra que permite especificar 
endereços MAC dentro de regras do iptables. Ele é uma 
forma de dificultar o uso de endereços IP falseados para 
ganhar acesso ao servidor, pois permite relacionar o IP ao 
endereço MAC da placa instalada. Não é 100% eficaz pois o 
endereço MAC pode ser trocado via ifconfig e ele não é 
válido para a camada de rede, ou seja, quando sai da rede 
local, ele é descartado. 
iptables -A INPUT –p tcp --dport 22 –m mac --mac-source 
00:1B:24:46:29:88 –j DROP
Parâmetros para a filtragem de 
pacotes 
Comando faz com que qualquer pacote de entrada com 
destino na porta 22 advindo da máquina que possua MAC 
00:1B:24:46:29:88 seja descartado. 
iptables -A INPUT –p tcp --dport 22 –m mac --mac-source 
00:1B:24:46:29:88 –j REJECT 
Comando faz com que qualquer pacote de entrada com 
destino na porta 22 advindo da máquina que possua MAC 
00:1B:24:46:29:88 seja rejeitado.
Parâmetros para a filtragem de 
pacotes 
multiport - com o modulo multiport é possível que 
especifiquemos múltiplas portas a serem afetadas pela 
regra, sob o limite máximo de 15. 
EX: iptables –A INPUT –p tcp –i eth0 –m multiport –- 
dport 80,25,53,110 –j DROP 
Este comando indica em uma só regra por via de multiport 
que o firewall descartará (-J DROP) qualquer pacote que 
entre pela interface eth0 (-i eth0) destinado às portas 
80,25, 53, 110.
Bloqueando domínios 
É possível ainda permitir ou bloquear com base no domínio, 
tanto para entrada como para saída. Isto permite bloquear sites 
e programas diretamente a partir do firewall, sem precisar 
instalar um servidor Squid e configurá-lo. 
Iptables –A OUTPUT –d www.orkut.com –j DROP 
O comando impede que pacotes de saída destinados ao 
domínio sejam enviados, ou seja, impede que o domínio seja 
acessado a partir da própria máquina local. 
Originalmente o iptables sabia trabalhar apenas com endereços 
IP. A possibilidade de criar regras baseadas em domínios são 
um recurso um pouco mais recente, onde o firewall faz um 
lookup no domínio, para saber qual o IP atual.
Salvando as regras criadas no 
Firewall 
Toda regra criada no Iptables fica gravada em memória 
RAM, sendo posteriormente apagada quando o sistema é 
ligado ou reiniciado. 
Para que o administrador de redes não seja obrigado a ter 
que refazer todas as regras de firewall sempre que o 
sistema é ligado, existe um comando do iptables que 
possibilita que salvemos as regras criadas em um arquivo, 
que depois pode ser usado para restaurar as regras no 
firewall. 
Para então salvar as regras criadas em um arquivo, 
devemos usar o comando: 
iptables-save > nome_do_arquivo
Salvando as regras criadas no 
Firewall 
Após isto, o arquivo criado terá todas as regras do firewall 
criadas. 
Em uma próxima ocasião quando o sistema for reiniciado, as 
regras podem ser restauradas através do comando 
iptables-restore < nome_do_arquivo 
Este comando acessará o arquivo e colocará em memória 
todas as regras que estavam gravadas no arquivo.
Roteamento no Linux 
O roteamento em um sistema Linux é nativo do kernel, ou 
seja, ao iniciar o serviço de rede, o kernel já ativou o 
roteamento de pacotes. O serviço roda inicialmente de 
uma forma local, roteando apenas os pacotes da própria 
máquina. Para que o kernel possa rotear pacotes de outras 
máquinas é preciso dizer que ele deve fazer isso, que é feito 
inserindo o valor 1 no arquivo 
/proc/sys/net/ipv4/ip_forward.
Roteamento no Linux 
Verificando o valor de ip_forward 
# cat /proc/sys/net/ipv4/ip_forward 
Mudando o valor de ip_forward 
# echo 1 > /proc/sys/net/ipv4/ip_forward 
Verificando o novo valor de ip_forward 
# cat /proc/sys/net/ipv4/ip_forward 
Também é possível fazer isso, e de uma forma mais 
adequada, editando-se o arquivo /etc/sysctl.conf.

SENAI - Segurança firewall

  • 1.
    Iptables -Introdução •Os firewalls existem no Linux desde o kernel 1.1, com o ipfw, originário do BSD. • Esse filtro era userspace, ou seja, rodava como um programa comum no sistema, similarmente ao BIND (servidor de nomes). • Com o kernel 2.0 veio o ipfwadm, que ainda era uma ferramenta userspace e controlava as regras de filtragem do kernel. • Na versão 2.2 do kernel, veio o ipchains (ainda presente em algumas distribuições) e em 1999, veio o iptables 2, presente a partir do kernel 2.3.15.
  • 2.
    Iptables -Introdução Oiptables é um firewall nativo do Linux e que faz parte do seu kernel e por isto tem um desempenho melhor que firewalls instalados como aplicações. Com isso, ele é bastante seguro e rápido.
  • 3.
    Cadeias e políticas-padrão No iptables, existem tabelas de filtragem (chains), e três delas são básicas e não podem ser apagadas: INPUT, OUTPUT e FORWARD. A chain INPUT trata dos pacotes de entrada, aqueles que chegam da rede. A chain OUTPUT trata dos pacotes de saída, aqueles que vão para a rede. E finalmente a chain FORWARD trata do encaminhamento de pacotes, ou seja, roteamento.
  • 4.
  • 5.
    Comandos do Iptables iptables -A  adiciona uma nova regra ao fim da lista de regras iptables -P <nome-da-cadeia> <alvo> muda a política padrão de uma cadeia, de forma que todo pacote desta cadeia ficará sujeito a esta política, caso não exista nenhuma regra anterior que se aplique a mesma. iptables -D  apaga uma regra específica da lista iptables -L  lista as regras existentes na lista. Roteador iptables -F remove todas as entradas adicionadas na lista de regras do iptables
  • 6.
    Alvos das regras iptables -I  Insere uma nova regra ao início da lista de regras -j – define o alvo do pacote caso o mesmo se encaixe em uma regra. As principais ações são ACCEPT, DROP, REJECT. ACCEPT  aceita o pacote REJECT  rejeita educadamente o pacote, enviando um pacote de resposta ao emissor. DROP  o pacote simplesmente é descartado, sem aviso. LOG  Permite fazer log Roteador dos pacotes que se encaixam na regra.
  • 7.
    Parâmetros para afiltragem de pacotes -p – especifica o protocolo aplicado à regra. Se enquadra aos protocolos da camada de transporte, como tcp, udp e icmp Ex: iptables - A INPUT –p tcp –j ACCEPT
  • 8.
    Parâmetros para afiltragem de pacotes -s – especifica a origem (source) do pacote ao qual a regra deve ser aplicada. A origem pode ser um host ou uma rede. Nesta opção geralmente utilizamos o IP seguido de sua sub-rede: Ex: iptables –A INPUT –s 172.16.53.1 –j DROP iptables –A INPUT –s 172.16.53.1 –j ACCEPT Este comando descarta todo pacote de entrada vindo da origem 172.16.53.1 O segundo comando aceita todo pacote de entrada vindo da origem 172.16.53.1
  • 9.
    Parâmetros para afiltragem de pacotes -d – especifica o destino do pacote (destination) ao qual a regra deve ser aplicada. Sua utilização se dá da mesma maneira que a ação –s. Ex: iptables –A OUTPUT –d 172.16.53.1 –j DROP iptables –A OUTPUT –d 172.16.53.1 –j ACCEPT Este comando descarta todo pacote de saída com destino à máquina 172.16.53.1 O segundo comando aceita todo pacote de saída com destino à máquina 172.16.53.1
  • 10.
    Parâmetros para afiltragem de pacotes -i – especifica a interface de entrada a ser utilizada e como um Firewall possui mais de uma interface esta regra acaba sendo muito importante para distinguir a qual interface de rede o filtro deve ser aplicado. Ex: iptables –A INPUT –i eth0 –j DROP O comando permite que todo pacote que entra pela interface eth0 seja selecionado para ser descartado pelas regras do firewall.
  • 11.
    Parâmetros para afiltragem de pacotes -o – especifica a interface de saída a ser utilizada e se aplica da mesma forma que a regra –i, mas este parâmetro é menos usado, pois normalmente nos preocupamos em impedir que o firewall aceite conexões em determinadas portas, ao invés de tentar interceptar as respostas. Ex: iptables –A FORWARD –o eth0 –j DROP O comando permite que todo pacote que sai pela interface eth0 seja selecionado para ser descartado pelas regras do firewall.
  • 12.
    Parâmetros para afiltragem de pacotes --sport – porta de origem (source port). Com esta regra é possível aplicar filtros com base na porta de origem do pacote. Ex: iptables –A INPUT –p tcp –-sport 22 –j DROP O comando permite que todo pacote de entrada usando o protocolo TCP e com origem na porta 22 seja descartado.
  • 13.
    Parâmetros para afiltragem de pacotes --dport – porta de destino (destination port) especifica a porta de destino do pacote e funciona de forma similar à regra sport. iptables –A OUTPUT –p tcp –-dport 22 –j DROP O comando permite que todo pacote de saída usando o protocolo TCP e com destino na porta 22 seja descartado.
  • 14.
    Parâmetros para afiltragem de pacotes -m mac --mac-source – é a regra que permite especificar endereços MAC dentro de regras do iptables. Ele é uma forma de dificultar o uso de endereços IP falseados para ganhar acesso ao servidor, pois permite relacionar o IP ao endereço MAC da placa instalada. Não é 100% eficaz pois o endereço MAC pode ser trocado via ifconfig e ele não é válido para a camada de rede, ou seja, quando sai da rede local, ele é descartado. iptables -A INPUT –p tcp --dport 22 –m mac --mac-source 00:1B:24:46:29:88 –j DROP
  • 15.
    Parâmetros para afiltragem de pacotes Comando faz com que qualquer pacote de entrada com destino na porta 22 advindo da máquina que possua MAC 00:1B:24:46:29:88 seja descartado. iptables -A INPUT –p tcp --dport 22 –m mac --mac-source 00:1B:24:46:29:88 –j REJECT Comando faz com que qualquer pacote de entrada com destino na porta 22 advindo da máquina que possua MAC 00:1B:24:46:29:88 seja rejeitado.
  • 16.
    Parâmetros para afiltragem de pacotes multiport - com o modulo multiport é possível que especifiquemos múltiplas portas a serem afetadas pela regra, sob o limite máximo de 15. EX: iptables –A INPUT –p tcp –i eth0 –m multiport –- dport 80,25,53,110 –j DROP Este comando indica em uma só regra por via de multiport que o firewall descartará (-J DROP) qualquer pacote que entre pela interface eth0 (-i eth0) destinado às portas 80,25, 53, 110.
  • 17.
    Bloqueando domínios Épossível ainda permitir ou bloquear com base no domínio, tanto para entrada como para saída. Isto permite bloquear sites e programas diretamente a partir do firewall, sem precisar instalar um servidor Squid e configurá-lo. Iptables –A OUTPUT –d www.orkut.com –j DROP O comando impede que pacotes de saída destinados ao domínio sejam enviados, ou seja, impede que o domínio seja acessado a partir da própria máquina local. Originalmente o iptables sabia trabalhar apenas com endereços IP. A possibilidade de criar regras baseadas em domínios são um recurso um pouco mais recente, onde o firewall faz um lookup no domínio, para saber qual o IP atual.
  • 18.
    Salvando as regrascriadas no Firewall Toda regra criada no Iptables fica gravada em memória RAM, sendo posteriormente apagada quando o sistema é ligado ou reiniciado. Para que o administrador de redes não seja obrigado a ter que refazer todas as regras de firewall sempre que o sistema é ligado, existe um comando do iptables que possibilita que salvemos as regras criadas em um arquivo, que depois pode ser usado para restaurar as regras no firewall. Para então salvar as regras criadas em um arquivo, devemos usar o comando: iptables-save > nome_do_arquivo
  • 19.
    Salvando as regrascriadas no Firewall Após isto, o arquivo criado terá todas as regras do firewall criadas. Em uma próxima ocasião quando o sistema for reiniciado, as regras podem ser restauradas através do comando iptables-restore < nome_do_arquivo Este comando acessará o arquivo e colocará em memória todas as regras que estavam gravadas no arquivo.
  • 20.
    Roteamento no Linux O roteamento em um sistema Linux é nativo do kernel, ou seja, ao iniciar o serviço de rede, o kernel já ativou o roteamento de pacotes. O serviço roda inicialmente de uma forma local, roteando apenas os pacotes da própria máquina. Para que o kernel possa rotear pacotes de outras máquinas é preciso dizer que ele deve fazer isso, que é feito inserindo o valor 1 no arquivo /proc/sys/net/ipv4/ip_forward.
  • 21.
    Roteamento no Linux Verificando o valor de ip_forward # cat /proc/sys/net/ipv4/ip_forward Mudando o valor de ip_forward # echo 1 > /proc/sys/net/ipv4/ip_forward Verificando o novo valor de ip_forward # cat /proc/sys/net/ipv4/ip_forward Também é possível fazer isso, e de uma forma mais adequada, editando-se o arquivo /etc/sysctl.conf.