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:

#!/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

Tags: , , , ,

Creative Commons License
Esta obra es publicada bajo una licencia Creative Commons.