Bueno, tanto como «sin dolor» es una exageración. Netfilter, el subsistema de filtrado de paquetes de Linux 2.4 y 2.6, es extraordinariamente poderoso y la sintaxis de iptables, la herramienta de espacio de usuario («userspace») es, a veces, como ponerse el cilicio y cargar un paso del viacrucis. Por supuesto hay herramientas disponibles para «facilitar» las cosas. Desde adefesios tan inflexibles como Firestarter (para principiantes, o mejor dicho expatriados de MS-Windows) hasta herramientas que si sirven para algo más de tres cosas y requieren un título en ciencias de cohetería, como Shorewall. A veces uno tiene necesidades particulares, como cuando se usa un programa P2P. Claro, siempre se puede usar moblock —hay instaladores binarios para Debian— el cual es la preferencia del paranóico, pero a veces un uso juicioso de netstat y de iptables además de saber como funciona el subsistema de redes en Debian es suficiente para detener a los «malos».
Eso me sucedió recientemente. Los malos tienen como costumbre alquilar subredes clase C dentro de una misma subred clase B para montar sus ataques contra las redes P2P y no hablo solamente de bloquear la descarga de un archivo popular, sino de inyectar virus y troyanos en los computadores de los usuarios descuidados que quieren curiosear cuanto pr0n0 pueden encontrar por ahí, usualmente usando archivos de Windows Media Video con DRM (Administración Digital de Derechos).
¿Y como se hace? Lo primero es abrir una emulación de terminal (usando GNOME Terminal, Konsole, etc.) como root. En Ubuntu abrimos una emulación de terminal y escribimos sudo -i. Luego usamos netstat -tcp para observar las conexiones de nuestro cliente P2P y allí veremos a los malos. ¿Como lo sabremos? En general, no tienen resolución inversa de nombres, así que las máquinas se verán como direcciones numéricas agrupadas en subredes clase B. Debemos apuntar estas direcciones en algún lugar accesible. Ahora, crearemos un pequeño script ejecutable que colocaremos en /etc/network/if-up.d/. Llamemoslo netfilter para ser originales. El contenido del script es algo como esto:
#!/bin/sh LIST=" \ 209.66.0.0/16 \ 209.133.0.0/16 \ 38.100.0.0/16 \ 208.10.0.0/16 \ " iptables -F for ip in $LIST; do iptables -A INPUT -s $ip -j DROP; iptables -A OUTPUT -d $ip -j DROP; done;
Este script será ejecutado cada vez que una interface de red sea activada en el sistema. Le daré puntos extra al que me diga por qué puse iptables -F en el script.
You must be logged in to post a comment.