Iptables - control de tráfico entrante y saliente

  • Categoría: Linux
  • Publicado hace más de 4 años
Ejemplos de reglas entrantes y salientes (SSH y HTTP) para servidores expuestos a internet.





Permitir conexiones entrantes

Cuando la política por defecto es DROP para las cadenas de entrada (INPUT) y salida (OUTPUT), por cada regla de firewall de salida (OUTPUT), es necesario especificar las siguientes dos reglas.


Permitir conexiones entrantes SSH

1. Petición de regla: Esta es la petición que llega desde el cliente al servidor para la conexión entrante.

2. Respuesta de regla: Esto es para la respuesta que sale desde el servidor hasta el cliente (para la solicitud de entrada correspondiente).

Ejemplo 1: Permitir conexión entrante SSH

Esto es para permitir la conexión SSH desde el exterior hacia el servidor.

Esto implica dos pasos. En primer lugar, tenemos que permitir nuevas conexiones SSH entrantes. Una vez que la conexión ssh entrante está permitida, también tenemos que permitir la respuesta para esa conexión ssh entrante.

En primer lugar, Permitir solicitud de conexión entrante SSH, como se muestra a continuación.

Cita: Mostrar


En el ejemplo anterior vemos:

iptables-A INPUT
Anexar la nueva regla a la cadena INPUT, para obtener solicitud de conexión entrante, esto siempre tiene que ser INPUT.

-i eth0
Se refiere a la interfaz de entrada. Para las conexiones entrantes, esto siempre tiene que ser '-i'.

-p tcp
Esto indica que el protocolo es TCP.

--dport 22
Esto se refiere al puerto de destino para la conexión entrante. El puerto 22 es para ssh.

-m state
Esto indica el módulo coincidente (match) que se utiliza es "state"

--state NEW,ESTABLISHED
Opciones para el módulo correspondiente "state". En este ejemplo, sólo los nuevos (NEW) y establecidos (ESTABLISHED) están permitidos. La primera vez cuando una solicitud de conexión SSH es iniciada desde el cliente al servidor, se utiliza el estado nuevo (NEW). Estado ESTABLISHED se utiliza para toda petición nueva del cliente al servidor.

En este caso recomiendo mejorar la seguridad, no queremos que entre cualquiera (al menos eso yo no quiero).

Cita: Mostrar


Cambiando 208.67.220.220 por la ip que desea conectarse, o un rango de ips 192.168.0.0/32, o varias ips 208.67.220.220,208.67.222.222

A continuación, Permitir salir (en estado ESTABLISHED) la respuesta para la conexión SSH (para la correspondiente solicitud entrante de la conexión SSH).

Cita: Mostrar


En el ejemplo anterior vemos:

iptables -A OUTPUT
Añada la nueva regla a la cadena OUTPUT. Puesto que esto es para la regla de respuesta (para la solicitud de entrada correspondiente) que sale desde el servidor, este debe ser OUTPUT.

-o eth0
Se refiere al interfaz de salida. Para las conexiones salientes, esto siempre tiene que ser '-o' y debe ser la que esta conectada a internet.

-p tcp
Esto indica que el protocolo es TCP.

--sport 22
Se refiere al puerto de origen para la conexión de salida. El puerto 22 es para ssh. Desde la petición de entrada (de la regla anterior) llegó al "destino", la respuesta saliente pasará por el puerto de origen.

-m state
Esto indica el módulo coincidente (match) que se utiliza es "state"

--state ESTABLISHED
Dado que esta es una regla de respuesta, indica que la conexión sólo se establece (no acepta una nueva conexión).


Ejemplo 2 : Permitir conexión entrante HTTP

Esto es para permitir la conexión HTTP desde el exterior hacia el servidor. Es decir, puede ver su sitio web que se ejecuta en el servidor desde el exterior.

Al igual que las anteriores reglas SSH entrantes, esto también implica dos pasos. En primer lugar, tenemos que permitir nuevas conexiones HTTP entrantes. Una vez que la conexión HTTP entrante está permitida, también tenemos que permitir la respuesta para esa conexión HTTP entrante.

En primer lugar, Permitir solicitud de conexión entrante HTTP, como se muestra a continuación.

Cita: Mostrar


A continuación, Permitir salir (en estado ESTABLISHED) la respuesta para la conexión HTTP (para la correspondiente solicitud entrante de la conexión HTTP).

Cita: Mostrar


Nota: En la anterior petición HTTP y la regla de respuesta, todo es lo mismo que el ejemplo SSH, excepto el número de puerto.


Permitir conexiones salientes

Cuando la política por defecto es DROP para las cadenas de entrada (INPUT) y salida (OUTPUT), por cada regla de firewall de salida (OUTPUT), es necesario especificar los siguientes dos reglas.


1. Respuesta de regla: Esto es para la respuesta que sale desde el servidor hasta el cliente (para la solicitud de entrada correspondiente)

2. Petición de regla: Esta es la petición que llega desde el cliente al servidor para la conexión entrante.


Permitir conexiones salientes SSH

Esto es para permitir la conexión SSH desde el servidor al exterior.

Esto implica dos pasos. En primer lugar, tenemos que permitir la conexión saliente de SSH. Una vez que la conexión saliente ssh se permite, también es necesario permitir la entrada de la respuesta  para esa conexión ssh saliente.

En primer lugar, Permitir la salida de conexión SSH, como se muestra a continuación.

Cita: Mostrar


En el ejemplo anterior vemos:

iptables -A OUTPUT
Añada la nueva regla a la cadena OUTPUT. Para obtener conexión saliente, esto siempre tiene que ser OUTPUT.


-o eth0
Se refiere al interfaz de salida. Para las conexiones salientes, esto siempre tiene que ser '-o' y debe ser la que esta conectada a internet.

-p tcp
Esto indica que el protocolo es TCP.

--dport 22
Esto se refiere al puerto de destino para la conexión saliente.

--m state
Esto indica el módulo coincidente (match) que se utiliza es "state"

--state NEW,ESTABLISHED
Opciones para el módulo correspondiente "state". En este ejemplo, sólo los nuevos (NEW) y establecidas (ESTABLISHED) están permitidos. La primera vez cuando una solicitud de conexión SSH es iniciada desde el cliente al servidor, se utiliza el estado nuevo (NEW). Estado ESTABLISHED se utiliza para toda nueva petición del cliente al servidor.

A continuación, Permitir entrar (en estado ESTABLISHED) la respuesta para la conexión SSH (para la correspondiente solicitud entrante de la conexión SSH).

iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

En el ejemplo anterior vemos:

iptables -A INPUT
Anexar la nueva regla a la cadena INPUT , para obtener solicitud de conexión entrante, esto siempre tiene que ser INPUT.

-i eth0
Se refiere al interfaz de entrada. Para las conexiones entrantes, esto siempre tiene que ser '-i' y debe ser la que esta conectada a internet.

-p tcp
Esto indica que el protocolo es TCP.

--sport 22
Se refiere al puerto de origen para la conexión de entrada. Desde la petición de salida (de la regla anterior) llegó al puerto de "destino", la respuesta entrante pasará por el puerto de origen.

--m state
Esto indica el módulo coincidente (match) que se utiliza es "state"

--state ESTABLISHED
Dado que esta es una regla de respuesta, indica que la conexión sólo se establece (no acepta una nueva conexión).


Poniendo todo junto:

Vamos a crear un script reglas.sh y que hace lo siguiente:

Eliminar todas las reglas existentes
Establecer políticas por defecto
Permitir entrada SSH
Permitir entrada HTTP
Permitir salida SSH

Primero, cree reglas.sh
nano reglas.sh



Cita: Mostrar



A continuación, como administrador dar permisos de ejecución, ejecute reglas.sh y observamos el resultado.

Cita: Mostrar




Utilizando esto como base usted debe ser capaz de escribir sus propias reglas de iptables que entran y salen del cortafuegos.
Iptables - control de tráfico entrante y saliente
10 Puntos Score: 5/10
Visitas: 891 Favoritos: 8
Ver los usuarios que votaron...
2 Comentarios Iptables - control de tráfico entrante y saliente
wena info para variar  
Uf. No digo que sea imposible pero es bastante complicado iptables...
Para dejar un comentario Registrate! o.. eres ya usuario? Accede!