Incluya remotamente el acceso SSH a una dirección IP específica

Incluya remotamente el acceso SSH a una dirección IP específica

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 nslookupen la IP dinámica y vacíe/reescriba la MYIPcadena 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

información relacionada