| Línea 91: | Línea 91: | ||
| − | + | 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 | + | ::<pre>iptables --> -t -->tabla -->tipo_operación -->cadena -->regla_con_parámetros -->Acción -->parámetros_acción</pre> |
| − | + | Explicamos por pasos: | |
| + | |||
| + | {|class="wikitable" align=center | ||
| + | !iptables !!-t--> !! tabla--> !! tipo_operacion--> !! cadena--> !! regla_con_parámetros--> !! ACCION--> !! parámetros_ACCION | ||
| + | |-align=center | ||
| + | |iptables ||-t || filter ||-A || INPUT || -p tcp -dport 23 || -j ACCION | ||
| + | |} | ||
| + | |||
| + | |||
| + | quitando espacios: | ||
| + | |||
| + | <pre>iptables -t filter -A INPUT -p tcp -dport23 -j DROP</pre> | ||
| + | |||
| + | ¿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: | ||
| + | |||
| + | <pre>iptables -A INPUT -p tcp -dport telnet -j DROP</pre> | ||
| + | |||
| + | Si por el contrario, quisiéramos aceptar estos paquetes: | ||
| + | |||
| + | <pre>iptables -A INPUT -p tcp -dport telnet -j ACCEPT</pre> | ||
| + | |||
| + | O aceptamos tráfico http: | ||
| + | |||
| + | <pre>iptables -A INPUT -p tcp -dport http -j ACCEPT</pre> | ||
| + | |||
| + | donde también podemos especificar el interfaz de entrada (-i etho) | ||
| + | |||
| + | <pre>iptables -A INPUT -i eth0 -p tcp -dport http -j ACCEPT</pre> | ||
| + | |||
| + | también: | ||
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:
| iptables | -t--> | tabla--> | tipo_operacion--> | cadena--> | regla_con_parámetros--> | ACCION--> | parámetros_ACCION |
|---|---|---|---|---|---|---|---|
| iptables | -t | filter | -A | INPUT | -p tcp -dport 23 | -j ACCION |
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: