Limitar acceso por SSH únicamente a ciertas IP con IPTables

De Apuntes
Saltar a: navegación, buscar

Como precaución es mejor limitar el acceso por SSH únicamente a ciertas direcciones IP, para lo cual podemos utilizar un firewall, como IPTables.

IPTables

Iptables es un módulo del núcleo de Linux que se encarga de filtrar los paquetes de red, es decir, es la parte que se encarga de determinar qué paquetes de datos queremos que lleguen hasta el servidor y cuáles no. Al igual que ocurre con otros sistemas de cortafuegos, iptables funciona a través de reglas. Es decir, el usuario mediante sencillas instrucciones indica al firewall el tipo de paquetes que debe permitir entrar, los puertos por donde se pueden recibir esos paquetes, el protocolo utilizado para el envío de datos y cualquier otra información relacionada con el intercambio de datos entre redes. Cuando en el sistema se recibe o se envía un paquete, se recorren en orden las distintas reglas hasta dar con una que cumpla las condiciones. Una vez localizada, esa regla se activa realizando sobre el paquete la acción indicada. Gracias a su robustez, iptables se ha convertido hoy por hoy en una de las herramientas más utilizadas para el filtrado de tráfico en sistemas Linux.

Instalar IPTables

Usualmente, IPTables viene instalado predeterminadamente, pero si no lo está, pues entonces:

sudo apt-get update
sudo apt-get install iptables

Luego, es necesario agregar una regla que hará que sea posible la conexión entre el mismo equipo, por ejemplo, para utilizar mysql:

sudo iptables -A INPUT -i lo -j ACCEPT

Ahora agregaremos las direcciones IP de los equipos que utilizaremos para conectarnos al servidor:

sudo iptables -A INPUT -p tcp --dport 22 -s 10.1.2.3 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -s 10.1.2.4 -j ACCEPT

Es recomendable que las direcciones IP de los equipos desde donde nos conectamos sean estáticas, para evitar que en el futuro sea otra.

Se debe habilitar la conexión de respuesta a conexiones establecidas:

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

Si es un servidor web, es necesario agregar las reglas para que permita el tráfico web:

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

Por último se debe aplicar la regla que todo el tráfico restante sea desechado:

sudo iptables -A INPUT -j DROP

Podemos ver las reglas que están aplicándose:

sudo iptables -L -v

Es necesario guardar los cambios, pues todo lo que hemos hecho hasta ahora está únicamente en memoria

sudo iptables-save

Borrar toda la configuración

Si deseamos volver a empezar, ó eliminar todas las reglas, debemos:

sudo iptables -F
sudo iptables-save