VPSを実行しており、UFWを使用してそれを保護し、ポート80への接続のみを許可したいと思います。ただし、リモートで管理するには、ポート22を開いたままにして自宅からアクセスできるようにする必要があります。
私は特定のIPアドレスのポートにのみ接続を許可するようにUFWを設定できることを知っています。
ufw allow proto tcp from 123.123.123.123 to any port 22
しかし、私のIPアドレスは動的であるため、まだ解決策ではありません。
Q:ダイナミックDNS解決にDynDNSを使用していますが、IPの代わりにドメインを使用してルールを作成できますか?
私はこれを試しました:
ufw allow proto tcp from mydomain.dyndns.org to any port 22
しかし、私は得た。ERROR: Bad source address
ベストアンサー1
私はこれが可能であると信じていませんufw
。ufw
フロントエンドiptables
にもこの機能がないため、1つのアプローチは定期的に実行されるcrontabエントリを作成し、IPアドレスが変更されたことを確認することです。ある場合は更新されます。
次のことをしたい場合があります。
$ iptables -A INPUT -p tcp --src mydomain.dyndns.org --dport 22 -j ACCEPT
ただし、これはホスト名をIPとして解決し、それをルールに使用するため、後でIPが変更されてもルールは適用されません。
代替アイデア
というスクリプトを作成できますiptables_update.bash
。
#!/bin/bash
#allow a dyndns name
HOSTNAME=HOST_NAME_HERE
LOGFILE=LOGFILE_NAME_HERE
Current_IP=$(host $HOSTNAME | cut -f4 -d' ')
if [ $LOGFILE = "" ] ; then
iptables -I INPUT -i eth1 -s $Current_IP -j ACCEPT
echo $Current_IP > $LOGFILE
else
Old_IP=$(cat $LOGFILE)
if [ "$Current_IP" = "$Old_IP" ] ; then
echo IP address has not changed
else
iptables -D INPUT -i eth1 -s $Old_IP -j ACCEPT
iptables -I INPUT -i eth1 -s $Current_IP -j ACCEPT
/etc/init.d/iptables save
echo $Current_IP > $LOGFILE
echo iptables have been updated
fi
fi
源泉:ダイナミックIPホスト名(dyndns.orgなど)でIPTablesを使用する
このスクリプトを保存したら、次のようにファイルにcrontabエントリを作成できます/etc/crontab
。
*/5 * * * * root /etc/iptables_update.bash > /dev/null 2>&1
その後、エントリは5分ごとにスクリプトを実行して、ホスト名に割り当てられているIPアドレスが変更されたことを確認します。その場合は、それを許可する新しいルールを作成し、古いIPアドレスの古いルールを削除します。