將對特定 IP 位址的遠端 SSH 存取權列入白名單

將對特定 IP 位址的遠端 SSH 存取權列入白名單

我剛剛向雲端提供者租用了一台伺服器,該提供者無法將 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執行操作,並在檢測到變更時刷新/重寫鏈。nslookupMYIP

#!/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

相關內容