
Acabo de alquilar un servidor con un proveedor de nube que no tiene forma de incluir el acceso SSH en la lista blanca. Estoy tratando de encontrar una manera de incluir de forma remota mi dirección IP en la lista blanca para tener acceso a mi servidor a través de SSH y poner en la lista negra a todos los demás. Estaba pensando en usar tablas de IP, pero esto nunca funcionará porque mi dirección IP es dinámica. Similar a los grupos de seguridad de AWS. Estoy dispuesto a utilizar servicios pagos siempre que no sean costosos o incluso mejor si alguien conoce un servicio o una forma eficiente en la que pueda administrar iptables de forma remota en caso de cambio/bloqueo de IP.
Respuesta1
Es bastante sencillo utilizar un script para actualizar iptables y un servicio DDNS.
Coloque la acción de IP en una cadena separada:
-A MYIP -s 1.2.3.4/32 -j ACCEPT
-A MYIP -j DROP
y luego ejecute esta cadena en su puerto SSH, por ejemplo
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 22 -j MYIP
Luego, periódicamente (por ejemplo cron
), ejecute un script que realice una operación nslookup
en la IP dinámica y vacíe/reescriba la MYIP
cadena si se detecta un cambio.
#!/bin/bash
IPSAVE=/etc/sysconfig/iptables
update_iptables() {
MN=$1
CHAIN=$2
IP=`nslookup ${MN} | tail --lines=-3 | grep Address | awk '{print $2}'`
if [ `echo ${IP} | wc -m` -gt 0 ]
then
C=`grep -c "\-A ${CHAIN} \-j " ${IPSAVE}`
D=`grep "\-A ${CHAIN} \-s " ${IPSAVE} | grep -c "${IP}"`
if [ ${C} -gt 0 ] && [ ${D} -eq 0 ]
then
/sbin/iptables -F ${CHAIN}
/sbin/iptables -A ${CHAIN} -s ${IP}/32 -j ACCEPT
/sbin/iptables -A ${CHAIN} -j DROP
fi
fi
}
update_iptables my.dynamic.hostname.com MYIP