"todo lo que entra por el protocolo ICMP, rechazarlo"
este protocolo es de primer nivel .TCP e ICMP son protocolos de los llamados "de primer nivel ". muchos de ustedes se estaran preguntando si pueden usar HTTP o FTP como parametros del filtro -p.La respuesta es no.HTTP , FTP,SSH, Telnet,son todos protocolos de segundo nivel que se trasmiten bajo el protocolo TCP/IP .Entonces , en primer lugar tenemos el protocolo TCP/IP, y en segundo lugar tenemos el protocolo que corre dentro de el, que puede ser cualquiera de los anteriormente mencionados .Bien , habiendo comprendido esto , podemos ahora filtrar por protocolo de segundo nivel .Y para eso , podemos utilizar los numero de puertos del sistema . veamos un ejemplo en pseudoreglas:
"todo lo que entra por el protocolo TCP,puerto 80,aceptarlo"
Con esto , lo que estoy permitiendo es que todo acceso web a mi laptop sea permitido.Bien ,veamos ahora el mismo ejemplo,pero con un comando real de iptables:
iptables -A INPUT -p tcp dport 80 -j ACCEPT
el orden que acabamos de indicar es el correcto. El parametro --dport requiere obligatoriamente del parametro -p .Si no ,¿como sabe iptables de que protocolo estamos hablando ? puerto 80 ¿de que protocolo ?.
Filtrar por direcciones fuente y destino
ahora que sabemos como filtrar los paquetes que llegan a nuestra computadora segun el puerto de entrada , vamos a avanzar un poco mas . Algo muy necesario cuando se arman Firewalls es definir direcciones de origen y destino .veamos algunos ejemplos en pseudocodigo :
"todo lo que venga a mi computadora desde la direccion 10.0.0.1 , aceptarlo"
"todo lo que salga de mi computadora hacia la direccion 10.0.0.2, negarlo"
en general , el poder manejarnos con direcciones ip nos permite tener un control bastante minucioso de lo que entra y lo que sale de nuestra comutadora . veamos ahora los ejemplos anteriores con reglas reales de ip tables :
iptables -A INPUT -s 10.0.0.1 -j ACCEPT
iptables -A OUTPUT -d 10.0.0.2 -j DROP
Aqui aparece la gran diferencia entre las dos reglas . en primer lugar , en la primera estamos creando una regla en la cadena de entrada (INPUT) , y en la segunda estamos creando una regla en la cadena de salida (OUTPUT) . con el comando -s estamos definiendo SOURCE (FUENTE) y con el comando d estamos definiendo destiny (destino).pero lo mas interesante de tdo esto es que podemos empezar a combinar filtros de manera que podamos hacer un control mas minucioso de lo que sucede en las interfaces de redde nuestro sistema :
iptables -A INPUT -s 10.0.0.10 -p tcp dport 80 -j DROP
iptables -A INPUT -s 10.0.0.10 -p tcp dport 21 -j ACCEPT
en el primer comando , lo que hacemos es decirle a iptables que todo lo que ingrese desde la direccion IP 10.0.0.10 y tenga como puerto destino es nuestra mquina al correspondiente de HTTP sea negado . De la misma forma , a la misma direccion IP le permitimos el acceso al puerto 21 .
A medida que vayamos aprendiendo nuestro filtros , iremos viendo la manera de combinarlos para sacar el maximo provecho al sistema de filtros de paquetes iptables.
FILTRAR POR INTERFAZ DE RED
En muchos casos , suele suceder que tenemos mas de una placa de red en nuestra computadora.imaginemos la siguiente situacion :tenemos una computadora que actua como intermediaria entre dos redes que pueden ser , por ejemplo , internet y una LAN . Entonces tendremos una placa de red conectada a internet y la otra placa de red conectada a nuestra red de area local . cada placa de red tendra una direccion IP especifica , que lo mas probable es que pertenescan a redes diferentes .Entonces , puede ser necesario indicar desde que interfaz de red escuchar los paquetes para filtrarlos .veamos un ejemplo : tenemos un servidor web que queremos que sea accedido solo desde nuestra red de area local .para eso , simplemente tenemos que definir que todo acceso al puerto 80 de nuestro servidor desde la interfaz de red correspondiente a la conexion a internet sea negado . suponiendo que eth0 es la placa de red que tenemos conectada a internet , veamos como hacer esto :
iptables -A INPUT -i eth0 -p tcp dport 80 -j DROP
aqui vemos un parametro nuevo , -i , que lleva como subparametro el nombre de la interfazde red que vamos a filtrar.
bien , basta de parametro de filtros por hoy , vamos a ver muchos en adelante , pero ahora es necesario aclarar algunas cosas para que ya mismo podamos comenzar a construir firewalls seguros .
orden de las reglas :
uno de los grandes problemas del armado de firewalls , aparte de conocer perfectamente cuales son los puertos abiertos de la maquina que deben ser filtrados , es definir las reglas en el orden correcto no podemos ponerlas en el orden que se nos plazca ,porque lo mas probable es que nos encontremos con un funcionamiento totalmente imprecindible .entonces,para evitar problemas , vamos a comenzar definiendo que iptables lee las regals de arriba para abajo. si , suena un poco raro , pero es asi . veamos el siguiente ejemplo :
iptables -A INPUT -p tcp dport 80 -j ACCEPT
iptables -A INPUT -p tcp dport 80 -j DROP
fijense qeu las reglas son totalmente contradictorias , primero decimos que aceptamos el acceso al puerto 80 de nuestra computadora , y luego decimos lo contrario .bien , las dos reglas obviamente no entraran en juego .como mencionamos anteriormente ,iptables lee las reglas de arriba a abajo . entonces, en el ejemplo anterior , lo que sucedera es ques i se permitira el acceso al puerto 80 . ¿que sucede con la segunda regla? directamente es salteada .una ves que iptalbes realizo lo pedido con respecto al puerto 80 , no vuelve a procesar las reglas con filtros iguales , en el caso anterior la segunda regla directamente no tiene efecto .
esto es muy importante que quede en claro , mas que nada para cuando comencemos a armar firewalls grandes.siempre hay que tener en cuenta esta regla . una ves que un paquete cumple con los requisitos necesarios para ser detectado por el primer filtro que lo intercepte , se ejecutarala accion correspondiente y no se volvera a evaluar dicho paquete por mas que existan reglas posteriores cuyos filtros tambien lo detecten .
MODELO BASICO DE FIREWALL:
con los conocimientos de la entrega anterior y de la que estan leyendo en este momento , ya estan preparados para montar firewalls seguros , aprenderemos a armar firewalls con ejemplos , asi que vaamos directamente al grano x'DDD
. tenemos un servidor proxy con una sola placa de red , el servidor proxy se escarga de compartir una conexion de internet a varias computadoras de una red interna qeu tiene direcciones del tipo 10.0.0.1 10.0.0.2 10.0.0.3 etc .hasta ahoara , todo bien . la cuestion es que el servidor tiene un servidor apache correindo en el puerto 80 , y nuestra intencion es que solo puedan ingrasar en las paginas que contiene desde la red interna , y no desde internet .
nuestro firewall deberia lucir como el siguiente :
#ejemplo de firewall numero 1 .
iptables -F
iptables -A INPUT -s 10.0.0.0/24 -p tcp dport 80 -j ACCEPT
iptables -A INPUT -s tcp dport 80 -j DROP
lo que hacemos con la primera regla es borrar todas las reglas de la tabla principal de firewall definido anteriormente .la primera regla permite el acceso al puerto especificado desde cualquier maquina de la red interna (10.0.0.0/24).la segunda regla niega todo acceso al puerto 80.entonces , este firewall funciona del suguiente modo : si proviene un paquete de la red interna , entonces la primera regla lo detecta y permite su paso;luego saltea la segunda regla porque ya fue ejecutada una accion con dicho paquete .ahora bien , si el paquete no proviene de la red interna , entonces el filtro de la primera regla no va a detectarlo , por lo que pasara directamente a la segunda regla , en donde se dice que cualquier paquete que venga hacia el puerto 80 se rechace . con esto logramos que desde nuestra red interna puedan ingresar desde el servidor web , pero no puedan hacerlo desde la red externa ( o desde cualquier otro equipo que este fuera de la red 10.0.0.0/24).
si nuestro equipo hubiera tenido dos placas de red (digamos ,eth0 para internet ,y eth1 para la red interna ) , entonces prdriamos haber armado el firewall de la siguiente manera :
#ejemplo de firewall numero 2
iptables -F
iptables -A INPUT -i eth1 -p tcp dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp dport 80 -j DROP
EN CONCLUSION :
en este tuto hemos aprendido el modelo basico para armar firewalls , asi como algunos filtros que nos seran de gran utilidad . en el proximo tuto y si es que este tiene exito jejeje
voy a enseñar mas filtros y analizaremos un firewall ,del mundo real . como siempre , recuerden que por mas firewall que pongan ,si los servicios que brinda su equipo tienen vulnerabilidades , entonces el equipo sera vulnerable . controlen las versiones , controlen los puertos abiertos , nunca dejen nada librado al azar practiquen lo que les enseñe
. hasta muy pronto espero que este tuto haya servido para algo , fiuuuu que era largo cheee

saludos aaronexe











Autor

En línea



para que el usuario tenga varias formas de configurar su propia computadora



