
クラウド プロバイダーからサーバーをレンタルしたのですが、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
次に、定期的に (例)動的 IP に対して を実行し、変更が検出された場合にチェーンをフラッシュ/書き換えるcron
スクリプトを実行します。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