M.M.U.L.P.P: Segurança da LAN doméstica com IPv6
Segurança da LAN doméstica com IPv6
Sua LAN está protegida, mas não é o NAT que faz isso.
Estou usando IPv6 em casa e no home office há alguns meses, e você provavelmente também pode usar já.
É curioso como a gente se sente seguro atrás do NAT do modem. Eu certamente me sentia mais tranquilo usando IPv4 com NAT feito pelo modem, sabendo que o NAT impedia que minhas máquinas dentro da LAN recebessem uma requisição de conexão vinda da Internet. Afinal, na Internet ninguém sabe o que há por trás do IP público que está no meu modem.
De onde vem o medo pelo fim do NAT que o IPv6 traz?
O medo vem do fato de que qualquer máquina na Internet (v6) pode mandar pacotes diretamente para o meu computador atrás do modem, pois ele é globalmente acessível no endereço xxxx:yyyy:zzzz:aaaa:bbbb:cccc:dddd:eeee. Isto é, todo host IPv6 é globalmente endereçável.
Mas lembre-se: globalmente endereçável ≠ globalmente acessível.
A sensação de segurança decorrente do NAT é falsa: [IPv6 Security Myth #3 – No IPv6 NAT Means Less Security]
Resumo do link acima: ao usar IPv4, quem dá segurança à sua LAN é o firewall SPI (stateful packet inspection) do modem, não o NAT.
Como seu modem oferece segurança à sua LAN
Quando seu computador na sua LAN doméstica se comunica com um host na Internet, ele manda o pacote ao modem, esse pacote é registrado pelo modem (quem mandou o pacote, de qual porta veio, pra qual porta vai, e pra qual IP (v4 ou v6) o pacote vai), e o modem encaminha o pacote ao IP (v4 ou v6) de destino.
O pacote de resposta vem da Internet e chega ao modem, que por sua vez verifica se o IP e a porta de origem do pacote de resposta casam com aquele pacote que saiu há pouco. Caso não casem, o modem bloqueia o pacote. Aí está a sua segurança. Este é o stateful packet inspection que o modem faz.
Veja como fica o firewall IPv6 do modem com Stateful Packet Inspection. Note que simplesmente retiramos a etapa de tradução do endereço de destino no retorno do pacote. Mas a segurança continua lá.
Exemplo da tela de configuração do meu modem Technicolor TD5336:
O modem já vem configurado para boquear todo e qualquer acesso à LAN vindo da WAN (isto é, da Internet).
Veja que prático, o modem já vem com a regra configurada: todo pacote pode sair da LAN para a Internet (WAN, no linguajar do modem), mas nenhum novo pacote pode vir da Internet para a LAN. Resolvido! \o/
Mais ou menos. Já ouviu falar da importância dos pacotes ICMP para o IPv6?
Modem fechado demais
No IPv6, os pacotes ICMP (chamados de ICMPv6) têm um papel central, mais do que no IPv4. Como no IPv6 a comunicação se dá diretamente entre seu laptop e o host na Internet, sem um NAT para intermediar, é o seu laptop que precisa receber os pacotes ICMP em caso de problemas nessa comunicação.
Veja aqui uma bela lista de todos os tipos de pacotes ICMPv6.
O mais importante e que normalmente vem desativado nos modems é o Packet too big, que os roteadores utilizam para informar que um pacote é maior que o MTU. [Mais detalhes]
Além, claro, dos tipos Echo request e Echo reply (ping e pong, respectivamente).
Um site que testa o sucesso dos pacotes ICMPv6 na sua conexão é este:
Abra seu modem
O primeiro passo nos meus dois modems após ativação da conexão IPv6 foi pedir ao firewall para permitir a entrada de todos os tipos de pacotes ICMPv6. Aqui está como ficou o filtro de IP no modem Technicolor TD5336:
A regra acima é bem simples: permitir todo pacote ICMPv6 vindo da WAN para a LAN.
É neste mesmo item de configuração que você pode abrir a comunicação com suas máquinas na LAN. Por exemplo, eu adicionei mais uma regra para permitir a comunicação com a porta TCP/22:
Note que basta não definir os IPs de origem e destino para que a porta TCP/22 seja permitida para toda a LAN.
Ainda não acredito que meu NFS/SMB/rsync/HTTP/DNS/FTP não está vazando para a Internet
Eu entendo. É difícil acreditar mesmo. Também custei a acreditar. Mas há uma forma fácil de testar: Eu uso o serviço de shell remoto devio.us há vários anos e ele foi minha principal ferramenta para testar a conectividade entre minha pacata LAN e a tempestuosa Internet.
Abrir no modem uma determinada porta. Por exemplo, a porta TCP/9000
Se não houver algum serviço escutando nessa porta, ponha o netcat para escutar: nc -l 9000
ssh usuário@devio.us
usuário@devio.us $ nc -vz meu:ip:v6:do:laptop 9000
O resultado que indica sucesso é nc for Connection to meu:ip:v6:do:laptop 9000 port [tcp/*] succeeded!
Agora experimente abrir no laptop mas não no modem alguma outra porta, por exemplo, a TCP/9001:
nc -l 9001
Entre no shell remoto e tente se conectar a essa porta:
usuário@devio.us nc -vz meu:ip:v6:do:laptop 9001
O resultado que indica sucesso agora é Connection timed out, pois o modem não está permitindo essa conexão.
E com isso nós provamos que o modem está protegendo sua LAN, mesmo quando você usa IPV6 e o seu laptop tem uma porta aberta. Se você não abrir a porta no firewall do modem, ninguém no mundo conseguirá se conectar a essa porta no seu laptop.
Sabia que é possível conectar duas redes IPv4 através da Internet usando uma VPN IPv6? Os próximos posts vão mostrar como fazer isso usando OpenVPN. É assim que eu conecto minha rede de casa à do meu home office remoto.
Desempenho do IPv6 versus IPv4
Uma solução para associar de maneira estável o IPv6 dos hosts da sua LAN a um hostname (isso é complicado porque o provedor muda o prefixo IPv6 de tempos em tempos