![远程将特定 IP 地址的 SSH 访问列入白名单](https://linux22.com/image/761156/%E8%BF%9C%E7%A8%8B%E5%B0%86%E7%89%B9%E5%AE%9A%20IP%20%E5%9C%B0%E5%9D%80%E7%9A%84%20SSH%20%E8%AE%BF%E9%97%AE%E5%88%97%E5%85%A5%E7%99%BD%E5%90%8D%E5%8D%95.png)
我刚刚从一家云提供商那里租了一台服务器,但这家提供商没有办法将 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