| Línea 48: | Línea 48: | ||
:Todas las reglas en iptables tienen definida su condición por los parámetros, que constituyen su parte primordial. Algunos de estos parámetros son: (se puede ver la lista completa en [man iptables] | :Todas las reglas en iptables tienen definida su condición por los parámetros, que constituyen su parte primordial. Algunos de estos parámetros son: (se puede ver la lista completa en [man iptables] | ||
| − | :-i | + | :'''-i'''--->Interfaz de entrada (eth0,eth1,eth2...) |
| − | :-o | + | :'''-o '''--->Interfaz de salida (eth0,eth1,eth2...) |
| − | :--sport | + | :'''--sport'''--->Puerto de Origen |
| − | :--dport | + | :'''--dport'''--->Puerto de Destino |
| − | :-p | + | :'''-p --protocol'''--->El protocolo de la regla o el paquete a comprobar. El protocolo específico puede ser, tcp,udp,icmp o all. Por defecto la opción es, all. |
| − | :-j --jump Esto especifica el objetivo de la regla, o sea una acción. | + | :'''-j --jump'''--->Esto especifica el objetivo de la regla, o sea una acción. |
| − | :--line-numbers Cuando listamos las reglas, agrega el número que ocupa cada regla dentro de la cadena. | + | :'''--line-numbers'''--->Cuando listamos las reglas, agrega el número que ocupa cada regla dentro de la cadena. |
| − | * | + | *Y finalmente, las''' ACCIONES''' que estarán siempre al final de cada regla que determinará que hacer con los paquetes afectados. Si no se especifica ninguna acción, se ejecutará la opción por defecto que cada cadena tiene asignada. Las acciones serïan: |
| − | :ACCEPT | + | :'''ACCEPT'''---> Paquete aceptado. |
| − | :REJECT | + | :'''REJECT'''---> Paquete rechazado. Se envía notificación a través del protocolo ICMP. |
| − | :DROP | + | :'''DROP'''---> Paquete rechazado. Sin notificación |
| − | :MASQUERADE Enmascaramiento de la dirección IP origen de forma dinámica.Esta acción es sólo válida en la tabla NAT en la cadena postrouting. | + | :'''MASQUERADE'''--->Enmascaramiento de la dirección IP origen de forma dinámica.Esta acción es sólo válida en la tabla NAT en la cadena postrouting. |
| − | :DNAT | + | :'''DNAT'''---> Enmascaramiento de la dirección destino, muy conveniente para re-enrutado de paquetes. |
| − | :SNAT | + | :'''SNAT'''---> enmascaramiento de la IP origen de forma similar a masquerade, pero con IP fija. |
| Línea 84: | Línea 84: | ||
| − | ::''MUY IMPORTANTE. Cuidado con el orden en el cual disponemos las reglas.'' | + | :::''MUY IMPORTANTE. Cuidado con el orden en el cual disponemos las reglas.'' |
| − | ::'''IPTABLES LEE DE MANERA SECUENCIAL LAS CADENAS DE REGLAS'''. | + | :::'''IPTABLES LEE DE MANERA SECUENCIAL LAS CADENAS DE REGLAS'''. |
| − | ::''Es decir, comienza por la primera y verifica que se cumpla la condición y la ejecuta sin verificar las siguientes.'' | + | :::''Es decir, comienza por la primera y verifica que se cumpla la condición y la ejecuta sin verificar las siguientes.'' |
| − | ::''Por consiguiente, si la primera regla en la tabla filter de la cadena input es rechazar cualquier paquete,'' | + | :::''Por consiguiente, si la primera regla en la tabla filter de la cadena input es rechazar cualquier paquete,'' |
| − | ::''las siguientes reglas no serán verificadas, y se rechazará cualquier paquete.'' | + | :::''las siguientes reglas no serán verificadas, y se rechazará cualquier paquete.'' |
| Línea 102: | Línea 102: | ||
!iptables !!-t--> !! tabla--> !! tipo_operacion--> !! cadena--> !! regla_con_parámetros--> !! ACCION--> !! parámetros_ACCION | !iptables !!-t--> !! tabla--> !! tipo_operacion--> !! cadena--> !! regla_con_parámetros--> !! ACCION--> !! parámetros_ACCION | ||
|-align=center | |-align=center | ||
| − | |iptables ||-t || filter ||-A || INPUT || -p tcp -dport 23 || -j | + | |iptables ||-t || filter ||-A || INPUT || -p tcp -dport 23 || -j DROP |
|} | |} | ||
Que es un firewall?
Como traducción, un cortafuegos. En realidad es un muro virtual de protección. ¿Contra qué nos protege? Controla a voluntad la entrada y/o salida de tráfico en nuestra red o redes o sea el filtrado de paquetes.
Para que un firewall tenga actividad, es necesario que por lo menos haya dos redes conectadas, lo mas simple: nuestro ordenador y la red Internet. Pero también podemos implementarlo en caso de tener una red en la oficina o en nuestra propia casa, donde aplicaremos las restricciones o los accesos que deseemos para cada máquina.
Un firewall puede ser hardware o software. En nuestro caso veremos el software que trae el kernel Linux y la manera de configurarlo según nuestras necesidades. Puede ser muy simple o de una complicación extrema, dependiendo de la cantidad de máquinas, la naturaleza del filtrado y la relación permisividad-restricción que hagan posible el tráfico, porque al fin y al cabo necesitamos comunicarnos con otras máquinas. Lo conocemos como IPTABLES.
Aclaramos que en versiones anteriores al kernal 2.4.* se llamaba ipchain, pero a partir de esta versión se cambió a Iptables, mucho mas potente.
Iptables está basado en el uso de TABLAS dentro de las tablas, CADENAS, formadas por agrupación de REGLAS, parámetros que relativizan las reglas y finalmente una ACCION, que es la encargada de decir qué destino tiene el paquete.
Describimos los elementos y luego vemos un sencillo script básico.
A partir de aquí, dividiremos las opciones en algunos grupos
Describimos algunos de los comandos mas comunes.
La estructura o el esqueleto de una regla basicamente sería:
iptables --> -t -->tabla -->tipo_operación -->cadena -->regla_con_parámetros -->Acción -->parámetros_acción
Explicamos por pasos agregando debajo valores reales:
| iptables | -t--> | tabla--> | tipo_operacion--> | cadena--> | regla_con_parámetros--> | ACCION--> | parámetros_ACCION |
|---|---|---|---|---|---|---|---|
| iptables | -t | filter | -A | INPUT | -p tcp -dport 23 | -j DROP |
Ahora quitando espacios:
iptables -t filter -A INPUT -p tcp -dport23 -j DROP
¿Qué nos dice esta cadena de reglas?
Que en la tabla filter, la cadena input filtra los paquetes con protocolo tcp que entran por el puerto 23 (puerto asignado a telnet) y éstos son rechazados (DROP) sin ninguna notificación.
Algunas consideraciones. De acuerdo con lo hemos comentado antes, podríamos escribir lo mismo de otra forma,por ej. quitando "-t filter", ya que es la tabla por defecto, además podemos cambiar el número de puerto por"telnet" que en realidad es su puerto asignado. Queda:
iptables -A INPUT -p tcp -dport telnet -j DROP
Si por el contrario, quisiéramos aceptar estos paquetes:
iptables -A INPUT -p tcp -dport telnet -j ACCEPT
O aceptamos tráfico http:
iptables -A INPUT -p tcp -dport http -j ACCEPT
donde también podemos especificar el interfaz de entrada (-i etho)
iptables -A INPUT -i eth0 -p tcp -dport http -j ACCEPT
también: