El tener una Ip dinámica puede suponer un problema a la hora de configurar IP Tables para limitar el acceso por SSH a nuestro servidor.
Existen varios servicios como No-IP o Dyn DNS entre otros, que nos pueden proporcionar un ‘hostname’ a nuestra IP dinámica.
Una vez tenemos asignado un hostname a nuestro ordenador, pasamos a configurar IP Tables en el servidor:
*Todos los comandos aqui descritos deben ejecutarse como usuario root.
# Cadena SSH iptables -N SSH # Creamos la cadena SSH iptables -A INPUT -p tcp -m tcp --dport 22 -j SSH # Las conexiones al puerto 22/tcp saltan a la cadena SSH iptables -A INPUT -p tcp -m tcp --dport 22 -j DROP # Si la conexión no coincide con la cadena SSH, no aceptamos los paquetes. # Cadena DYNAMIC iptables -N DYNAMIC # Creamos la cadena DYNAMIC. iptables -A SSH -j DYNAMIC # Enlazamos la cadena SSH a la cadena DYNAMIC
Ahora tenemos la regla de IP Tables configurada para aceptar paquetes que provengan de la cadena DYNAMIC, ahora solo nos falta añadir a la cadena DYNAMIC nuestro hostname como el unico que tendra acceso por SSH al sistema.
Para ello crearemos un script que nos resolvera nuestra IP cada minuto y modificara IP Tables con la nueva información.
# Usamos nuestro editor de texto preferido para crear el script # En este caso usamos Nano. cd /root nano dinamica.sh
Una vez tengamos abierto el fichero, añadimos las siguientes lineas:
#!/bin/bash iptables -F DYNAMIC # Eliminamos el contenido de la cadena DYNAMIC iptables -A DYNAMIC -s mi-dns-hostname.com -j ACCEPT # Aceptamos paquetes de mi-dns-hostname.com
*Hemos de reemplazar mi-dns-hostname.com por el hostname que tengamos asignado. Guardamos el fichero y salimos del editor.
A continuación, le damos los permisos necesarios al fichero de nuestro script para que sea ejecutado por cron
chmod 700 dinamica.sh
Editamos el fichero que contiene los comandos que ejecuta cron:
crontab -e
Y añadimos al final del fichero la siguiente linea para que nuestro script se ejecute cada minuto:
*/1 * * * * ./dinamica.sh
A tener en cuenta…
Hay una serie de aspectos que hemos de tener en cuenta cuando ponemos un hostname en una regla IP Tables:
- Los hostnames se resuelven cuando se añade la regla al firewall y no cuando se reciben paquetes de datos. Para tener la regla en nuestro firewall actualizada, debemos recargar la regla cada cierto tiempo para que refleje cualquier cambio que se haya producido en el DNS.
- Hemos de tener en cuenta que en el momento en que añadimos un hostname a nuestro firewall estamos poniendo en compromiso la seguridad de nuestro sistema, ya que si por cualquier motivo los servidores DNS se caen o son hackeados, estos van a devolver datos incorrectos, lo que implica un posible agujero de seguridad en nuestro sistema.