UFW:動的IPアドレスを持つドメインからのトラフィックのみを許可する

UFW:動的IPアドレスを持つドメインからのトラフィックのみを許可する

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

私はこれが可能であると信じていませんufwufwフロントエンド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アドレスの古いルールを削除します。

おすすめ記事