我刚刚从一家云提供商那里租了一台服务器,但这家提供商没有办法将 SSH 访问列入白名单。我正在尝试找出一种方法来远程将我的 IP 地址列入白名单,以便通过 SSH 访问我的服务器,并将其他人列入黑名单。我曾考虑使用 IP 表,但由于我的 IP 地址是动态的,所以这永远行不通。类似于 AWS 安全组。我愿意使用付费服务,只要它不贵,或者如果有人知道一种服务或一种有效的方法,让我可以在 IP 更改/锁定的情况下远程管理 iptables,那就更好了。
答案1
使用脚本更新 iptables 和 DDNS 服务相当简单。
将 IP 操作放入单独的链中:
-A MYIP -s 1.2.3.4/32 -j ACCEPT
-A MYIP -j DROP
然后在 SSH 端口上运行此链,例如
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 22 -j MYIP
然后定期(例如)运行一个脚本,该脚本对动态 IPcron
执行操作,如果检测到更改则刷新/重写链。nslookup
MYIP
#!/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