Remote-Whitelist für SSH-Zugriff auf eine bestimmte IP-Adresse

Remote-Whitelist für SSH-Zugriff auf eine bestimmte IP-Adresse

Ich habe gerade einen Server bei einem Cloud-Anbieter gemietet, der keine Möglichkeit bietet, SSH-Zugriff auf die Whitelist zu setzen. Ich versuche, einen Weg zu finden, meine IP-Adresse remote auf die Whitelist zu setzen, um per SSH auf meinen Server zugreifen zu können, und alle anderen auf die Blacklist zu setzen. Ich habe überlegt, IP-Tabellen zu verwenden, aber das wird nie funktionieren, da meine IP-Adresse dynamisch ist. Ähnlich wie bei AWS-Sicherheitsgruppen. Ich bin bereit, kostenpflichtige Dienste zu nutzen, solange sie nicht teuer sind, oder noch besser, wenn jemand einen Dienst oder eine effiziente Möglichkeit kennt, mit der ich iptables im Falle einer IP-Änderung/-Sperrung remote verwalten kann.

Antwort1

Es ist ziemlich einfach, ein Skript zum Aktualisieren von iptables und einem DDNS-Dienst zu verwenden.

Platzieren Sie die IP-Aktion in einer separaten Kette:

-A MYIP -s 1.2.3.4/32 -j ACCEPT
-A MYIP -j DROP

und führen Sie dann diese Kette auf Ihrem SSH-Port aus, zB

-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 22 -j MYIP

Führen Sie dann in regelmäßigen Abständen (z. B. cron) ein Skript aus, das nslookupdie dynamische IP überprüft und die Kette leert/neu schreibt, MYIPwenn eine Änderung erkannt wird.

#!/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

verwandte Informationen