Iptables
遠端將 SSH 訪問列入特定 IP 地址的白名單
我剛剛租用了一個雲提供商的伺服器,它無法將 SSH 訪問列入白名單。我正在嘗試找出一種方法將我的 IP 地址遠端列入白名單,以便通過 SSH 訪問我的伺服器並將其他所有人列入黑名單。我正在考慮使用 IP 表,但這永遠不會起作用,因為我的 IP 地址是動態的。類似於 AWS 安全組。我願意使用付費服務,只要它不貴甚至更好,如果有人知道一項服務或一種有效的方式,我可以在 ip 更改/鎖定的情況下遠端管理 iptables。
使用腳本更新 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
然後定期(例如
cron
)執行一個腳本,在動態 IP 上執行 a 並在檢測到更改時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