Post on 14-Oct-2015
7/13/2019 Ahorrar Cuota de Internet Con Iptables y de Paso Mejorar La Privacidad
1/3
[Cmo se hace?] Ahorrar cuota de internet con iptables (y de
paso mejorar la privacidad)
humanos.uci.cu/2014/03/como-se-hace-ahorrar-cuota-de-internet-con-iptables-y-de-paso-mejorar-la-privacidad
Dariem
Este es un tutorial orientado sobre todo a los cubanos y a la gente de la
UCI, que somos los que generalmente tenemos problemas con la cuota
mensual de acceso a Internet. Quizs a muchos de ustedes les pasa
como a m, que la cuota de Internet prcticamente no me alcanza para el
mes y he tenido hasta que repartirla en cuotas diarias.
El problema
Este problema me ha llevado a aplicar cualquier cantidad de trucos para
eliminar las cosas superfluas de la navegacin, como por ejemplo, usar
extensiones de Firefox para no cargar automticamente las imgenes, videos, animaciones, etc. y bloquear determinados
sitios. Algunas de estas extensiones son ImgLikeOperao BlockSite Plus. Pero si nos detenemos a revisar nuestros logs del
proxy en el caso de la UCI estn accesibles para cada usuario nos encontramos que hay sitios que son imbloqueablescon estas extensiones, como son addons.mozilla.com, addons.mozilla.org, data.mozilla.com, sitios a los que se conecta e
navegador a hacer quien sabe qu cosas a travs de funcionalidades que al parecer no estn accesibles para que las
extensiones del navegador las bloqueen.
Por otro lado, existe una proliferacin de lo que se conoce como Content Delivery Network (CDN), conjunto de servidores de
alta disponibilidad contratados por los distintos sitios a proveedores de servicio de Internet donde se almacenan los contenid
estticos, de forma que empresas especializadas se encargan de manejar los altos volmenes de trfico que genera el serv
esos archivos, muchos de gran tamao, disminuyendo la carga sobre el sitio que los referencia. El problema es que muchas
veces esos contenidos (imgenes, CSS, Javascript, ) no nos interesa, slo queremos leer el texto. Y mira que esos CDN
gastan cuota! Lo bueno es que casi todos contienen las cadenas de caracteres cnd. o -cdn o cdn- en el dominio
Configuracin bsica de iptables
El super cortafuegos de Linux viene al rescate. Olvdense de todas las interfaces bonitas como Uncomplicated Firewall (ufw)
dems herramientas de lamers. Porque ya saben: real men use iptables!
En Debian/Ubuntu/Nova, desinstala todos esos paquetes que has instalado porque te da demasiado miedo usar un
cortafuegos de verdad, e instlate el paquete iptables-persistent. Con este paquete tienes un script en /etc/init.d/iptables
persistentque te permite salvar y restaurar las reglas de iptables que hayas adicionado o insertado. Tambin tienes los
archivos/etc/iptables/rules.v4y /etc/iptables/rules.v6donde se salvan estas reglas para IPv4 e IPv6 respectivamente. Co
los comandos iptablese ip6tablespuedes adicionar, insertar o eliminar reglas del ncleo, las cuales puedes probar antes d
salvarlas hacia los archivos anteriormente mencionados.
Si en tu entorno no se utiliza algunos de los protocolos IPv4 o IPv6 te recomiendo que dejes el archivo correspondiente conpolticas bsicas de denegar todo. Por ejemplo, ac en la UCI no se utiliza IPv6 (todava) as que podemos hacer lo siguient
# ip6tables -F# ip6tables -Z# ip6tables -X# ip6tables -P INPUT DROP# ip6tables -P OUTPUT DROP# ip6tables -P FORWARD DROP# /etc/init.d/iptables-persistent save
http://addons.firefoxmania.uci.cu/imglikeopera/https://addons.mozilla.org/en-us/firefox/addon/blocksiteplus/https://addons.mozilla.org/en-us/firefox/addon/blocksiteplus/http://addons.firefoxmania.uci.cu/imglikeopera/https://humanos.uci.cu/2014/03/como-se-hace-ahorrar-cuota-de-internet-con-iptables-y-de-paso-mejorar-la-privacidad/7/13/2019 Ahorrar Cuota de Internet Con Iptables y de Paso Mejorar La Privacidad
2/3
Los tres primeros comandos son para limpiar la tabla de reglas, los otros tres son para establecer como poltica por defecto
IPv6 que nada entre ni salga por la red, y el ltimo es para salvar las reglas en /etc/iptables/rules.v*, lo que garantiza que es
se carguen cada vez que se reinicie la mquina o cada vez que se corra/etc/init.d/iptables-persistent restart.
Claro, que es mucho ms fcil sencillamente deshabilitar IPv6 en el sistema operativo, aadiendo una opcin a los argumen
de tu ncleo. Esto lo logras editando /etc/default/grub, modificando la lnea que contiene la variable
GRUB_CMDLINE_LINUX_DEFAULT:
GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 quiet splash"
Luego se actualiza grub y se reinicia:
# update-grub# reboot
Despus de deshabilitar IPv6 (y reiniciar) o denegarlo por completo, te puedes centrar en configurar IPv4. Primero, limpia la
tabla de reglas y establece algunas polticas de seguridad por defecto:
# iptables -F# iptables -Z
# iptables -X# iptables -P INPUT DROP# iptables -P FORWARD DROP# iptables -P OUTPUT ACCEPT# iptables -A INPUT -i lo -j ACCEPT# iptables -A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT# iptables -A INPUT -p udp -m state --state RELATED,ESTABLISHED -j ACCEPT# iptables -A INPUT -p icmp -m icmp ! --icmp-type 8 -j ACCEPT# /etc/init.d/iptables-persistent save
Ya conocen los tres primeros comandos, en los tres siguientes slo permitimos las conexiones salientes. Luego adicionamos
excepciones que permitan algunas conexiones entrantes, en este caso a la interfaz de red loopback (127.0.0.0/8), tambin lo
paquetes de respuestas a conexiones preestablecidas, y cualquier paquete ICMP excepto las peticiones de ping Ok, ok, sno eres tan paranoico puedes permitir todos los ping, quita de la regla que tiene que ver con ICMP la parte que dice
! --icmp-type 8
Si adems quieres abrir algn puerto que te interese que sea accesible desde el exterior, por ejemplo, para conexiones SSH
(puerto 22), puedes aadir una regla como esta:
# iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
Pon el nmero de puerto segn te convenga: http(80), https(443), samba(445), Las reglas tambin se pueden escribir
editando directamente el archivo /etc/iptables/rules.v4, recomiendo que salven alguna para que les sirva de plantilla.
Utilizando iptables para filtrar paquetes por contenido
Ok, vamos al pollo del arroz con pollo.
Toda peticin HTTP o HTTPS que se dirige al proxy, contiene un encabezado que incluye el dominio al que uno desea
conectarse, por tanto, se podran filtrar esos paquetes por las cadenas de caracteres que contienen y denegar los que no no
convegan. Por ejemplo, si no desean que vaya alguna peticin para addons.mozilla.com o addons.mozilla.org, podemos aa
esta regla:
# iptables -A OUTPUT -d 10.0.0.1/32 -p tcp -m string --string "addons.mozilla." --algo kmp -REJECT --reject-with tcp-reset
7/13/2019 Ahorrar Cuota de Internet Con Iptables y de Paso Mejorar La Privacidad
3/3
Esto lo que quiere decir es que aada a la cadena de conexiones salientes ( -A OUTPUT) una regla que filtre las conexione
con destino al IP 10.0.0.1 (-d 10.0.0.1/32) que es nuestro proxy, por el protocolo TCP ( -p tcp) utilizando el mdulo de
filtrado por cadenas de caracteres (-m string) cualquier paquete que contenga la cadena addons.mozilla. (
--string "addons.mozilla.") utilizando la estrategia de bsqueda Knuth-Pratt-Morris (--algo kmp), que rechace
estos paquetes (-j REJECT) utilizando para ello un paquete de respuesta RST que indica cerrar la conexin (
--reject-with tcp-reset). Tambin se podra poner en la regla el puerto destino del proxy si desean ser ms especfi
(--dport 8080)
Otro ejemplo, los dichosos CDN que me tienen la cuota derretida. Supongamos que queremos permitir algunos y denegar
resto:
# iptables -A OUTPUT -d 10.0.0.1/32 -p tcp -m string --string "licdn." --algo kmp -j ACCEPT# iptables -A OUTPUT -d 10.0.0.1/32 -p tcp -m string --string "fbcdn.net" --algo kmp -jACCEPT# iptables -A OUTPUT -d 10.0.0.1/32 -p tcp -m string --string "cdn." --algo kmp -j REJECT --reject-with tcp-reset
Ac permitimos el CDN de LinkeIn, que contiene la cadena de caracteres licdn. y uno de los tantos de Facebook que conti
la cadena de caracteres fbcdn.net y denegamos cualquier otro dominio que contenga la cadena cdn. Recuerden que
siempre que creemos reglas con el comando iptables, las estamos creando directamente en las tablas del ncleo, pero si n
las salvamos, las perderemos cuando reiniciemos, as que no olviden salvarlas:
# /etc/init.d/iptables-persistent save
Para ms informacin: man iptables
Esto es todo, espero que les sea util.