martes, 29 de julio de 2014

IPTABLES



Como ya les he mencionado en los post anteriores soy un amante de la seguridad informática y es un tema que me llama mucho la atención y uno de los temas base para la seguridad en redes es sobre IPTABLES, y esto no es otra cosa sino la parte del kernel Linux (un módulo) que se ocupa de filtrar paquetes. Esto dicho de otra forma, significa que IPTABLES es la parte del kernel cuyo trabajo es saber qué información/datos/paquete quieres que entre a tu ordenador, y cuáles no, sera el encargado de filtrar información a una red, es la base de todos los firewall, y como hemos descrito anteriormente el firewall es un dispositivo perimetral que se encarga de proteger mi red, y mediante IPTABLES le das las ordenes. 

Para trabajar con IPTABLES es necesario tener permisos administrativos, por lo que acá usaré sudo (pero si entras como root, no hay necesidad).

Ahora para que sea de una forma mas fácil de entender para todos los que no manejan redes y dispositivos de seguridad vamos a colocar un ejemplo en el cual podrá experimentar desde tu computador personal. (ojo no nos hacemos responsables por pruebas que no son satisfactorias... jajajaja)

Para que nuestro ordenador sea realmente seguro, tenemos que solo permitir lo que nosotros queramos. Vean su ordenador como si fuera su propia casa, en su casa ustedes por defecto NO dejan que nadie entre, solo pueden entrar determinadas personas específicas que ustedes hayan aprobado antes no? Con los firewall`s sucede igual, por defecto nadie puede entrar a nuestro ordenador, solo podrán entrar quienes nosotros deseemos.


Para lograr esto que explico, aquí los pasos:

1. Abran una terminal, en ella pongan lo siguiente y presionen [Enter]:
sudo iptables -P INPUT DROP


Esto bastará para que nadie, absolutamente nadie pueda entrar a su ordenador… y, este “nadie” los incluye a ustedes mismos :D Explicación de la línea anterior: Con ella indicamos a IPTABLES  que la política por defecto (-P) para todo lo que desee entrar a nuestro ordenador (INPUT) es obviarlo, no hacerle caso (DROP)

Nadie es bastante general, absoluto de hecho, ni ustedes mismos podrán navegar por Internet ni nada, es por eso que debemos en esa terminal poner lo siguiente y presionar [Enter]:

sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

La primera línea lo que dice es que el propio ordenador (-i lo … por cierto, lo = localhost) puede hacer lo que le plazca. Algo obvio, que puede parecer hasta absurdo… pero créanme, es tan importante como el aire jajajaja

La segunda línea la explicaré usando el ejemplo/comparación/metáfora que usé antes, me refiero a comparar al ordenador con la casa :) Por ejemplo, supongamos que vivimos con más personas en nuestra casa (madre, padre, hermanos, novia, etc). Si alguna de estas personas sale de casa, ¿es obvio/lógico que dejaremos que entre una vez regrese no?

Precisamente eso es lo que hace esa segunda línea. Todas las conexiones que nosotros iniciemos (que salgan desde nuestro ordenador), cuando por esa conexión quiera entrar algún dato, IPTABLES dejará que ese dato entre. Poniendo un ejemplo más para explicarlo, si usando nuestro navegador intentamos navegar por internet, sin estas 2 reglas no podremos, pues sí… el navegador se conectará a Internet  pero cuando intente bajar datos (.html, .gif, etc) hacia nuestro ordenador para mostrárnoslo, no podrá pues IPTABLES le negará la entrada de paquetes (datos), mientras que con estas reglas, como nosotros iniciamos la conexión desde dentro (desde nuestro ordenador) y esa misma conexión es la que intenta entrar datos, sí se le permitirá el acceso.

Con esto listo, ya tenemos declarado que nadie puede acceder a ningún servicio de nuestro ordenador, nadie excepto el propio ordenador (127.0.0.1) y además, excepto conexiones que se inicien en el propio ordenador.

Ahora, explicaré un detalle más de forma rápida, pues la 2da parte de este tutorial explicará y abarcará más sobre esto jeje, no quiero adelantar mucho :D

Sucede que por ejemplo, tienen un sitio web publicado en su ordenador, y desean que ese sitio web todos lo puedan ver, como antes declaramos que todo por defecto es NO permitido, excepto no se indique lo contrario, nadie podrá ver nuestro sitio web. Ahora haremos que cualquiera pueda ver el o los sitios webs que tengamos en nuestro ordenador, para ello ponemos:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

Esto es muy simple de explicar :D

Con esa línea estamos declarando que acepte o permita (-j ACCEPT) todo tráfico al puerto 80 (–dport 80) que sea TCP (-p tcp), y que además sea tráfico entrante (-A INPUT). Puse puerto 80, porque ese es el puerto del host web, o sea … cuando un navegador intenta abrir un sitio de X ordenador, siempre mira por defecto en ese puerto.

0 comentarios :

Publicar un comentario