Dec
11.
Gracias a Freenet6 dispongo de una dirección IPv6 en casa. El procedimiento es sumamente sencillo, solo basta con instalar el paquete gw6c, y tocar un par de parametros en el archivo de configuración que nos crea en /etc/gw6c/gw6c.conf, esto nos creara un tunel IPv6 con dirección estatica, y de esta forma podremos conectarnos utilizando IPv6. Pero esto, trae consigo la necesidad de implementar un firewall utilizando IPv6. Para ello necesitamos el paquete ip6tables (en ArchLinux), y escribir el mismo, de la misma forma en que lo hacemos con IPv4. El resultado de mi firewall es el siguiente:
Tags: Freenet6, gw6c, IP6Tables, IPTables, IPv6#!/bin/sh # Personal Firewall v.0.1 para IPv6 export PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin ip6tables='/usr/sbin/ip6tables' # Cargamos el modulo de IPv6 modprobe ipv6 # Limpiamos todas las reglas anteriores $ip6tables -F $ip6tables -X $ip6tables -Z # Poltiicas por defecto $ip6tables -P INPUT DROP $ip6tables -P FORWARD DROP $ip6tables -P OUTPUT ACCEPT # Permitimos todo para el loopback (::1) $ip6tables -A INPUT --s ::1 -j ACCEPT # Aquellas conexiones con ESTABLISH, RELATED se permiten (TCP / UDP / ICMP) $ip6tables -A INPUT -p tcp -s 0/0 -d 2001:5c0:1000:b::4be5 -m state --state ESTABLISHED,RELATED -j ACCEPT $ip6tables -A INPUT -p udp -s 0/0 -d 2001:5c0:1000:b::4be5 -m state --state ESTABLISHED,RELATED -j ACCEPT $ip6tables -A INPUT -p ipv6-icmp -s 0/0 -d 2001:5c0:1000:b::4be5 -m state --state ESTABLISHED,RELATED -j ACCEPT # Permitimos la entrada de todo desde mi IP $ip6tables -A INPUT --source 2001:5c0:1000:b::4be5 -j ACCEPT # Permitimos el acceso a SSH (puerto 22 TCP) - HTTPD (puerto 80 TCP) $ip6tables -A INPUT -p tcp -s 0/0 -d 2001:5c0:1000:b::4be5 --dport 80 --syn -j ACCEPT $ip6tables -A INPUT -p tcp -s 0/0 -d 2001:5c0:1000:b::4be5 --dport 22 --syn -j ACCEPT # Logueamos todo el INPUT $ip6tables -A INPUT -j LOG -m limit --limit 1/s --log-level 5 --log-prefix "IP6Tables Log: " # Politicas de salida (normalización) $ip6tables -A OUTPUT -p tcp -m state --state NEW ! --syn -j DROP $ip6tables -A OUTPUT -p tcp -m state --state NEW -j ACCEPT $ip6tables -A OUTPUT -p udp -m state --state NEW -j ACCEPT $ip6tables -A OUTPUT -p ipv6-icmp -m state --state NEW -j ACCEPT
