Mostrando postagens com marcador segurança. Mostrar todas as postagens
Mostrando postagens com marcador segurança. Mostrar todas as postagens

Firewall Linux - iptables - Parte 3


Comandos, opções e módulos

Comandos:
Toda regra iptables tem obrigatoriamente um comando e opcionalmente um ou mais parâmetros.

Comandos (são sempre em letras maiúsculas). A maioria dos comandos exige o nome de uma chain, em outros isso é opcional, e finalmente para alguns utiliza-se apenas o comando em si.

Observação: dados entre chaves ( [xxx] ) especificam um valor opcional. Dados entre sinais de maior e menor ( <xxx> ) especificam um valor obrigatório. Acostume-se com esse padrão, pois ele é utilizado nas páginas de manual.


-A <chain>: Acrescenta uma regra ao final de uma chain.

-I <chain> [posição]: Insere uma regra em uma posição específica da chain. Caso a posição não seja informada, a regra será criada na posição 1.

-D <chain> [posição]: Deleta uma regra em uma chain. Existem duas formas de deleção: Repetindo o comando de inserção e trocando o -A/-I por -D ou deletando pelo número da regra na chain. Ex: "iptables -D INPUT 1" apaga a primeira regra da chain INPUT da tabela filter.

-L [chain]: Lista as regras. Se for informada uma chain específica, é listada apenas as regras daquela chain. Caso contrário, todas as chains são listadas. Para listar o número (ou posição) da regra dentro da chain, acrescente a opção "--line-numbers". Esse número é utilizado como referencia para as opções -I, -D e -R

-R <chain> <posição>: permite trocar uma regra com uma já existente na posição informada. Informa-se a regra atual através do nome da chain em que ela se encontra e sua posição dentro da chain (obtida com -L CHAIN --line-numbers) e a nova definição da regra.

-F <chain>: Esvazia a chain informada (apaga todas as suas regras). Caso não seja informada uma chain, todas as chains da tabela são esvaziadas.

-N <nova_chain>: Cria uma nova chain. Deve ser informado um nome que ainda não esteja em uso.

-X <nome_chain>: Apaga uma chain criada pelo usuário (com o comando -N). A chain precisa estar vazia e não ser referenciada por nenhuma regra.

-Z [chain]: Zera os contadores de pacotes e bytes de todas as chains, apenas da chain informada ou apenas de uma regra específica (informada pelo número) dentro de uma chain. Caso seja utilizado junto com -L o contador é zerado e exibido em seguida.

-P <chain> <política>: altera a política (POLICY) padrão de uma chain.

-E <nome_atual> <nome_novo>: renomeia uma chain criada com o comando -N

Opções/parametros:
Observações:
  • De um modo geral, a ordem das opções não importa. No entanto, é comum escrever os comandos no formato dos exemplos desse artigo, pois facilita a leitura e compreensão da regra.
  • Regras que não contém a opção "-j" não fazem nada com um pacote que combine com suas opções, mas contabilizam a sua passagem e podem servir para contabilidade de dados (geração de gráficos e relatórios, por exemplo).
  • As opções -i, -o, -s, -d, --dport, e --sport (e possivelmente outras, confira a página de manual!) podem ser precedidas de um sinal de exclamação (!), que inverte seu significado.
Sempre que um pacote combina com uma regra que define uma ação (opção "-j"), seu processamento é interrompido na chain atual. A excessão é a ação LOG, que faz com que o pacote seja logado nos logs do firewall (via syslog) e continua para ser processado.

-t <tabela> : Especifica em qual tabela (filter, nat ou mangle) o comando (que pode ser de criação/edição/exclusão/listagem de regras ou chains) será executado. Caso essa opção não seja informada, o comando é executado na tabela filter

Ex:

iptables -t nat -A PREROUTING ... # Cria uma regra na chain PREROUTING da tabela nat

iptables -t filter -A FORWARD ... # Cria uma regra na chain FORWARD da tabela FILTER

iptables -A FORWARD ...           # Faz a mesma coisa que a regra anterior, observe para a tabela filter o "-t filter" é opcional.

iptables -t nat -L  ...           # Visualiza as regras em todas as chains da tabela nat



-n : não resolve endereços IP para nomes, acelerando a exibição dos dados na tela. Normalmente utilizado com o comando -L.

-v : modo verboso, aumenta a exibição de detalhes. Normalmente utilizado com o comando -L.

-x : não utiliza letras (abreviações) na contagem de bytes e pacotes. Normalmente utilizado com o comando -L.

Ex:
observe a saída do seguinte comando, primeiro sem a opção -x:

root:~ # iptables -nvL FORWARD | head -1

Chain FORWARD (policy DROP 6752K packets, 407M bytes)

root:~ # iptables -nvxL FORWARD | head -1

Chain FORWARD (policy DROP 6745998 packets, 407067635 bytes)

A contagem de bytes é a mesma, mas a saída sem -x é mais fácil de visualizar. Por outro lado, utilizando-se o -x facilita a criação de scripts para contabilidade de pacotes.

-p : permite especificar o protocolo desejado. O protocolo pode ser citado pelo nome ou pelo número. Veja a relação de nomes e números de protocolos no arquivo /etc/protocols. Para criar uma regra que bata com qualquer protocolo, coloque "all".

Ex:

iptables -A FORWARD -p udp ...            # Cria uma regra utilizando o protocolo UDP na chain FORWARD da tabela filter

iptables -t nat -A PREROUTING -p tcp ...  # Cria uma regra utilizando o protocolo TCP na chain PREROUTING da tabela nat

iptables -t nat -A POSTROUTING -p all ... # Cria uma regra combinando com qualquer protocolo na chain POSTROUTING da tabela nat

Observação:


  • Ao utilizar "-p all", não se informa número de portas de origem/destino, porque nem todo protocolo utiliza o conceito de porta.
  • Procure evitar ao máximo o uso indiscriminado de "-p all", pois acaba tornando seu firewall permissivo demais. Quando você não souber quais portas/endereços precisa liberar para que determinado serviço funcione, faça uma análise do tráfego com um analisador como o tcpdump (modo texto) ou o wireshark (modo gráfico).
  • -s : permite especificar o endereço IP de origem. Se o valor for o endereço de um equipamento, basta colocar o endereço IP. Caso seja o endereço de uma rede, é necessário informar também a máscara de rede.  Para especificar uma regra que bata com qualquer valor no endereço de origem, coloque 0/0. Para especificar uma regra que não bata com determinado endereço de origem, utilize a exclamação (!).

Ex:
iptables -A FORWARD -p udp -s 192.168.1.0/255.255.255.0 # Tabela filter, chain FORWARD, protocolo UDP, toda a rede 192.168.1.0 ...

iptables -A FORWARD -p udp -s 192.168.1.0/24            # Outra maneira de escrever a regra anterior

iptables -t nat -A  PREROUTING -p tcp -s 192.168.1.213

iptables -A FORWARD -p tcp -s !192.168.5.220 ... # essa regra bate com qualquer endereço de origem, exceto o 192.168.5.220.

-d : Semelhante ao -s, porém especifica o endereço IP de destino.

Ex:

iptables -A FORWARD -p udp -d 192.168.1.0/255.255.255.0 # Tabela filter, chain FORWARD, protocolo UDP, toda a rede 192.168.1.0 ...

--sport : permite especificar a porta (tcp/udp) de origem.

Ex:

iptables -A FORWARD -p udp -d 192.168.1.0/24 --sport 25 ...

iptables -A FORWARD -p tcp -s 192.168.1.23 --sport 25 ...


--dport : permite especificar a porta (tcp/udp) de destino.

iptables -A FORWARD -p udp -d 192.168.1.0/24 --dport 25 ...

iptables -A FORWARD -p tcp -s 192.168.1.23 --dport 25 ...


-i : define a interface de rede por onde o pacote vai entrar.

Obs: só pode ser utiliza em chains relativas a entrada de pacotes na máquina, como INPUT, PREROUTING e FORWARD.

-o : define a interface de rede por onde o pacote vai sair.

Obs: só pode ser utiliza em chains relativas a saída de pacotes da máquina, como OUTPUT, POSTROUTING e FORWARD.

-j : Especifica para o TARGET (alvo) da regra, ou seja o que vai ser feito com o pacote que combine com a regra definida.

-m : permite o uso dos "match modules", que são modulos que extendem as funcionalidades do iptables. O iptables costuma já vir com um conjunto de módulos pré-instalados, e é possível instalar mais módulos, recompilando o iptables E o kernel. Abaixo uma lista com os principais módulos. Para ver quais sua distribuição possui, bem como a forma de utilização, veja a página de manual do iptables (man iptables):


  • multiport: permite criar regras que combinam com mais de uma porta de origem ou destino. Nesse caso utiliza-se --sports ou --dports, respectivamente. As portas podem ser informadas no formato lista (por exemplo "--dports 22,23,25,110", que englobaria apenas para as portas citadas) ou no formato range (faixa de portas, "--sport 1:1023", que englobaria todas as portas entre 1 e 1023)
  • mac: analisa o endereço de hardware (MAC address) de origem do pacote. Apenas pode ser utilizado em CHAINS de entrada (INPUT, FORWARDING, PREROUTING, etc).
  • state: permite classificar a conexão quanto ao estado (NEW, INVALID, RELATED, ESTABLISHED, entre outros).
  • limit: permite criar regras que trabalham baseadas em quantidade X tempo (1 por segundo, 5 por minuto, etc).
  • iprange: permite informar um range de endereços IP de origem ou destino.
  • string: procura por uma string (texto) dentro do pacote.
  • time: cria regras com base na data/hora de chegada do pacote (a regra só é valida dentro do período de tempo especificado).
  • tos: analisa o campo TOS (Type Of Service) do cabeçalho IP (normalmente utilizado para QOS).
  • addrtype: analisa pacotes segundo o tipo (UNICAST, BROADCAST, LOCAL, etc).
  • ah: combina com pacotes AH (authentication header) do IPsec.
  • esp: combina com pacotes ESP do IPsec.
  • comment: permite inserir comentários de até 256 caracteres em uma regra.
  • connlimit: permite restringir a quantidade de conexões paralelas/simultâneas a um servidor por endereço IP ou range de endereços.

Firewall Linux - iptables - Parte 2


Conceitos: Tabelas, Chains, Targets e Política Padrão.

Tabelas:
No iptables, o tratamento dos pacotes é realizado em tabelas. Cada tabela realiza basicamente um tipo operação nos pacotes, conforme vemos a seguir:

1) Tabela filter: Filtragem de pacotes (quem pode acessar o quê, e sob quais condições)
2) Tabela nat: Modificações nos endereços e/ou portas de origem e de destino dos pacotes.
3) Tabela mangle: Alterações avançadas no pacote: inserção de marcas (tags), alteração da prioridade do pacote na "fila" de envio da placa de rede, etc (não vai ser coberta aqui.)

Chains (cadeias, no sentido de correntes ou fluxos):
São contêineres para as regras. O iptables vem com um grupo padrão de chains em cada tabela, e os usuários podem criar chains adicionais, para facilitar a gerência das regras. As chains padrão são (nem todas as tabelas possuem todas as chains):

INPUT: trata os pacotes que estão entrando na máquina e não vão sair, ou seja, o destino final do pacote é a própria máquina firewall.

OUTPUT: trata dos pacotes que foram criados na própria máquina e vão sair dela.

FORWARD: trata os pacotes que atravessam a máquina (entram por uma placa de rede e saem por outra. Ex: pacotes com origem na rede local com destino à Internet ou vice-versa).

PREROUTING: trata os pacotes antes (PRE) da decisão de roteamento (ROUTING). É utilizada para alterar o DESTINO dos pacotes (DNAT) na tabela nat.

POSTROUTING: trata os pacotes após (POST) a decisão de roteamento (ROUTING). É utilizada para alterar a ORIGEM dos pacotes (SNAT) na tabela nat.

Observação: o nome das chains padrão sempre é em letras maiusculas.

Targets (ou alvos):
Define o que é feito com o pacote que combine com a regra. Alguns targets (os que fazem alterações nos pacotes) só podem ser utilizados na tabela NAT.

Observação: é possível a criação de regras sem target. Um pacote que combine com essas regras apenas incrementa a contagem de bytes e pacotes da regra (útil para contabilidade de pacotes.) Para visualizar a contagem de pacotes das

ACCEPT: Aceita os pacotes que batam com a descrição da regra

REJECT: Rejeita os pacotes que batam com a regra. É enviada uma mensagem de rejeição ao emissor do pacote.

DROP: Ignora os pacotes que batam com a regra. É semelhante ao REJECT, porém não é enviada nenhuma mensagem ao emissor.

RETURN: Cancela o processamento do pacote na chain atual e o envia de volta à chain onde estava anteriormente.

SNAT: Altera o campo de origem (source) do pacote IP, podendo alterar também a porta de origem.

DNAT: Altera o campo de destino (destination) do pacote IP, podendo alterar também a porta de destino.

REDIRECT: Faz um DNAT onde apenas a porta de destino pode ser escolhida. O endereço IP de destino sempre é o da própria máquina firewall. Utilizado para proxy tranparente.

MASQUERADE: Mascaramento de IP. Tipo especial de SNAT, utilizado principalmente para compartilhar conexões com IPs dinâmicos, como conexões dial-up (internet discada) e ADSL (Velox, por exemplo).

MARK: "Marca" o pacote com uma etiqueta, para processamento posterior (inclusive por outros programas que não o iptables). A "marca" existe apenas no próprio firewall (programas em outras máquinas não conseguem visualizar a marcação).

TCPMSS: Permite alterar o tamanho máximo do pacote, para solucionar (ou prevenir) problemas de transmissão de dados. Só pode ser utilizada com o protocolo TCP (opção -p tcp)

TOS: Permite alterar o campo TOS (Type Of Service) do cabeçalho IP.

QUEUE/NFQUEUE: Permite enviar o pacote para programas compilados com suporte a biblioteca libipq. Os programas podem manipular o pacote e devolvê-lo ao iptables.

LOG: Cria uma entrada de LOG do pacote que combina com a regra. A entrada é registrada através do SYSLOG. Após ser registrado no sistema de log, o pacote continua seguindo pela chain, para ser processado por outras regras.

ULOG: Uma mistura de QUEUE com LOG, onde o pacote é enviado para um programa para fins de LOG. Isso permite, por exemplo, logar pacotes em bancos de dados (como o MySQL) para facilitar a geração de relatórios.

Caso especial: nome de uma chain personalizada. Faz com que o pacote que bata com aquela regra seja redirecionado para uma chain personalizada (criada pelo usuário) para ser tratado pelas regras desta chain.

Policy (política padrão):
Por mais completas que sejam, suas regras de firewall nunca irão cobrir todas as possibilidades. Por isso, alteramos a POLICY (política padrão) da chain. Um pacote que atravesse toda uma CHAIN sem combinar com nenhuma REGRA é tratado pela POLICY padrão da chain. As POLICY são ACCEPT, REJECT e DROP, e têm o mesmo comportamento dos TARGETS definidos anteriormente. A POLICY padrão das CHAINS é ACCEPT (se um pacote não bater com nenhuma regra ele é aceito)  Normalmente, coloca-se a política padrão de chains como INPUT e FORWARD como DROP. Com isso, tudo o que não for explícitamente liberado será bloqueado.

Firewall Linux - iptables - Parte 1


Introdução

Historia do Firewall Linux:
Kernel 2.0 (Jan/1999): ipfwadm
Kernel 2.2 (Dez/1999): ipchains, stateless, dependia de programas externos para realizar NAT
Kernel 2.4 (Jan/2001) e
Kernel 2.6 (Dez/2003): iptables, stateful, realiza nat independente de programas externos.

Statefull X Stateless:
Uma conexão normalmente é composta de diversos pacotes. O firewall statefull associa o primeiro pacote da conexão aos demais, e consegue distinguir qual a relação desse pacote com os demais (ex: se o pacote é de uma conexão nova (NEW) ou já estabelecida (ESTABLISHED), entre outros tipos). Isso facilita as regras e checagens, além de permitir maior controle sobre operações como geração de LOGs.

Iptables ou Netfilter?
Algumas vezes vemos escrito que o firewall do Linux é o iptables. Outras vezes, que é o netfilter. Afinal, qual o correto? Na verdade, ambas as definições estão corretas:

Netfilter é a tecnologia de firewall integrada ao kernel.
Iptables é a ferramenta (programa) que configura essa tecnologia.

Outras ferramentas:
O iptables é parte de uma "família" de ferramentas que configuram diferentes protocolos de rede:
iptables: protocolo IPv4.
ip6tables: protocolo IPv6.
arptables: protocolo ARP.
ebtables: protocolo ethernet (utilizado em bridges).

Desabilitando o SELinux

O SELinux (Security-Enhanced Linux) é uma implementação de uma camada de segurança para o Linux, desenvolvido basicamente pela NSA (National Security Agency), a Agência Nacional de Segurança dos Estados Unidos. Ele vem habilitado por padrão na distribuição CentOS. O problema é que, sem configuração específica, ele impede a atualização/transferência de zonas DNS pelo bind/named.

Para verificar se o selinux está habilitado em seu sistema, execute o seguinte comando
selinuxenabled; echo $?
Caso o resultado seja 0, o SELinux está habilitado. Se o resultado for 1, então está desabilitado.

Para desabilitar o SELinux, faça o seguinte:

Edite o arquivo /etc/selinux/config. Localize a linha
SELINUX=enforcing
e troque por
SELINUX=disabled
Isso vai desabilitar o SELinux no próximo reboot. Para desabilitar imediatamente, execute o seguinte comando:
setenforce 0
Isso vai desabilitar o SELinux até o proximo reboot.

Phishing Scam: Recadastramento Visa

Novo phishing no mercado: dessa vez, finge ser uma comunicação da Visa, solicitando o recadastramento dos dados de cartões de crédito de seus usuários. O link na mensagem aponta para um site que não é o da Visa. No site são solicitados todos os dados do usuário (Nome, CPF, Número do Cartão e até o código verificador). Esses dados são então enviados por email ao cracker, que de posse dele pode efetuar compras pela internet e até fraudar documentos. Já denunciei o site às principais ferramentas de navegação segura da internet. Veja as imagens do email e do falso site abaixo:

Recebi um Scam, o que posso fazer?

Existem algumas coisas úteis que uma pessoa pode fazer após receber e identificar um scam ou um vírus.


1) Denunciar o site como sendo uma fraude:
Existem algumas empresas na internet que operam listas de sites falsos. Se você receber um email apontando para um site e tiver certeza de que trata-se de uma fraude, você pode informar isso às seguintes empresas:
  • Google: se você utiliza o Firefox, acesse a opção "Denunciar site como fraude ..." no menu "Ajuda" (veja imagem abaixo). Caso contrário, acesse esse endereço: http://www.google.com/safebrowsing/report_phish/ 
  • PhishTank.com: O site phishtank.com é operado pela mesma empresa do OpenDNS. Sites denunciados e verificados no PhishTank.com são acrescentados na lista de phishings do site. O site exige cadastro. Caso você não queira se cadastrar, envie um email com a URL para mim (antipragas@gmail.com) e eu terei o maior prazer em fazer isso.
  • Cert.br: O Cert.br é o grupo de resposta a incidentes de segurança na internet brasileira. Denúncias de sites de phishing e scams podem ser reportados via email, para cert@cert.br
2) Enviar o virus para empresas de antivirus para análise:
Caso o seu antivirus não detecte a ameaça, você pode contribuir na pesquisa da vacina enviando uma amostra (chamada de sample) para a empresa que mantém o antivirus (algumas empresas que fabricam anti-adwares também podem ter interesse em receber arquivos deste tipo). Segue abaixo uma pequena relação das principais empresas e a forma de enviar arquivos suspeitos para elas:
Instruções (em inglês) com os procedimentos de envio para outras empresas de antivirus e programas anti-spyware podem ser encontradas em http://forum.sysinternals.com/forum_posts.asp?TID=11134

3) Avisar os amigos / equipe de TI da empresa:
Se você recebeu um scam de Banco ou de Cartão de Crédito, você pode querer avisar seus amigos, principalmente aqueles que você sabe que utilizam os serviços desse Banco ou Operadora de Cartão (e que por isso estão mais expostos a serem vítimas). Se você recebeu o scam no email do trabalho, avise o responsável pela informática da sua empresa (caso haja um), para que ele tome as precauções necessárias para proteger toda a empresa.

OpenDNS: Acelere sua navegação

O OpenDNS.com é um serviço de DNS que visa acelerar a navegação web (através da aceleração na resolução de nomes durante a navegação) e que possui diversos filtros de navegação, permitindo um maior controle sobre o conteúdo acessado.


Configuração:
A configuração mínima exige apenas que você modifique as suas configurações de rede para utilizar os servidores da rede OpenDNS. Existem várias formas de se fazer isso, dependendo de como você se conecta à internet. As principais formas são explicadas de forma detalhada e rica em imagens no próprio site do OpenDNS, neste endereço. As opções que interessam ao usuário doméstico são Computer e Router. Em Computer, é detalhada a configuração em computadores com Microsoft Windows (incluindo as versões Vista e Mobile, utilizada em dispositivos móveis como Smartphones), Mac, Linux (Ubuntu e Suse Linux), e até mesmo outros dispositivos, como o console de videogame Wii (da Nintendo) e o celular Nokia S60. A opção Router exibe o caminho para configuração em roteadores de diversos fabricantes, dentre os quais  podemos citar D-Link, Linksys, Motorola, Netcomm, SpeedStream e diversos outros. Todas as instruções são detalhadas e possuem imagens, bem como páginas prontas para impressõa, para facilitar ainda mais a configuração, mesmo para quem não está acostumado a esse tipo de operação.
Se você sabe como alterar suas configurações de rede, basta configurar seus servidores DNS como sendo 208.67.222.222 e 208.67.220.220. Reinicie sua conexão de rede e pronto, você já está utilizando os serviços do OpenDNS. Agora você já deve sentir uma melhora na resolução de nomes e na abertura das páginas.

Virus: Redirecionando o YouTube para um virus

Recebi uma mensagem no Orkut de um amigo. A mensagem continha um link que apontava para o YouTube. Ao acessar o link, a surpresa: eu fui redirecionado para outro servidor, que oferecia para download um vírus com o sugestivo nome de video.scr ... Fui conferir a URL e realmente era do YouTube (cheguei a apagar e digitar manualmente http://www.youtube.com e o resultado foi o mesmo. A URL é gigantesca e creio que no meio de seus caracteres (que parecem aleatórios ou criptografados) consta algum código de redirecionamento mais um endereço externo ao YouTube. A análise do VirusTotal mostra que o vírus já é razoavelmente bem detectado entre os antivirus (69% dos antivirus do teste detectaram a ameaça), porém se fosse um vírus novo o estrago provavelmente seria grande. Fica o aviso: enquanto o YouTube não resolver essa questão de redirecionamento todo cuidado é pouco.

Análise do VirusTotal.com

Dica de segurança: Desabilitando o IPv6

O protocolo IPv6 possui diversas vantagens sobre o seu irmão mais novo velho IPv4, atualmente em uso. No entanto, atualmente a sua presença pode tornar-se um incômodo: algumas pessoas reportam problemas na resolução de nomes (DNS) quando o protocolo está ativo. Além disso, ele ainda pode tornar-se uma falha de segurança:

Imagine que você configurou o seu firewall, utilizando o iptables. Suponha que você bloqueou o acesso a pings na sua máquina, com o comando
iptables -A INPUT -p icmp -j DROP 
Até aqui tudo certo. Agora, verifique o endereço IPv6 da sua placa de rede.
debian:~# ifconfig eth0
eth0   Encapsulamento do Link: Ethernet  Endereço de HW 00:0C:29:58:2A:F7
          inet end.: 192.168.0.1  Bcast:192.168.0.255  Masc:255.255.255.0
          endereço inet6: fe80::20d:88ff:fefc:da1b/64 Escopo:Link
          UP BROADCASTRUNNING MULTICAST  MTU:1500  Métrica:1
          RX packets:231001053 errors:0 dropped:0 overruns:0 frame:0
          TX packets:213003406 errors:0 dropped:0 overruns:0 carrier:0
          colisões:0 txqueuelen:1000
          RX bytes:2227548162 (2.0 GiB)  TX bytes:3267118860 (3.0 GiB)
          IRQ:217 Endereço de E/S:0x2480
No nosso exemplo, o endereço IPv6 da placa é fe80::20d:88ff:fefc:da1b. Agora, experimente "pingar" seu endereço IPv6, com o utilitário ping6:
debian:~# ping6 -I eth0 fe80::20d:88ff:fefc:da1b
PING fe80::20d:88ff:fefc:da1b(fe80::20d:88ff:fefc:da1b) from fe80::20d:88ff:fefc:da1b eth0: 56 data bytes
64 bytes from fe80::20d:88ff:fefc:da1b: icmp_seq=1 ttl=64 time=0.169 ms
64 bytes from fe80::20d:88ff:fefc:da1b: icmp_seq=2 ttl=64 time=0.036 ms
64 bytes from fe80::20d:88ff:fefc:da1b: icmp_seq=3 ttl=64 time=0.036 ms
64 bytes from fe80::20d:88ff:fefc:da1b: icmp_seq=4 ttl=64 time=0.035 ms

--- fe80::20d:88ff:fefc:da1b ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 0.035/0.069/0.169/0.057 ms
Surpresa!!! Olha o ping funcionando ... Ué, bug do iptables? Nada disso. O iptables cuida apenas de endereços IPv4. Para proteger os endereços IPv6 de seu equipamento, você tem duas opções:
  • Utilizar o ip6tables (utilitário semelhante ao iptables, mas para endereços IPv6) ou
  • desabilitar completamente o IPv6 da máquina.
Para desabilitar o IPv6 no Debian Linux é muito simples: basta criar um arquivo com o nome /etc/modprobe.d/00local (os dois zeros no começo do nome são importantes, para garantir que o arquivo será lido antes dos outros presentes no diretório, quando da inicialização do sistema) com o seguinte conteúdo:
alias net-pf-10 off
alias ipv6 off
Após salvar o arquivo, é necessária a reinicialização do sistema (o módulo não vai sair da memória com um rmmod ipv6).