A veces queremos restringir el acceso a una web o una carpeta sólo a ciertas ips, pero nos encontramos con el problema de que esas ips son de conexiones a internet con ips dinámicas como la típica que podemos tener en casa o en el móvil.
Lo primero que hay que hacer es asociar esas ips a un servicio de dns dinámico como el que da dyndns, noip, duckdns o freedns
Una vez que ya tenemos el servicio de dns dinámico instalado en el ordenador o conexión a internet que vamos a usar tenemos que crear un script en el servidor para sacar esa ip. algo así:
vim /scripts/ips_dinamicas_nginx.sh |
#!/bin/bash echo "Allow "$(dig +short minemonico.noip.com)";" > /etc/nginx/sites-available/ips_dynamicas.conf |
De esta forma cada vez que se ejecute este scrip nos guardará en /etc/nginx/sites-available/ips_dynamicas.conf «Allow nuestra_ip;»
La asignamos permisos de ejecución:
chmod 755 /scripts/ips_dinamicas_nginx.sh |
Añadimos este script al cron para que se ejecute cada 5 minutos
*/5 * * * * /scripts/ips_dinamicas_nginx.sh |
Y sólo nos queda añadir el fichero donde damos acceso a nuestra ip al location correspondiente
location / { include /etc/nginx/sites-available/ips_dynamicas.conf; deny all; #denegamos el acceso al resto de ips } |