
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 nslookup
die dynamische IP überprüft und die Kette leert/neu schreibt, MYIP
wenn 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