Iptables

遠端將 SSH 訪問列入特定 IP 地址的白名單

  • December 17, 2020

我剛剛租用了一個雲提供商的伺服器,它無法將 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

引用自:https://serverfault.com/questions/1046531