IPアドレスではなくドメイン名に基づくファイアウォールルール

IPアドレスではなくドメイン名に基づくファイアウォールルール

クラウド仮想マシンインスタンスへのアクセスを管理するために、Guacamoleリモートデスクトップゲートウェイテスト設定を実行しています。

固定IPなしでGuacamole RDGへのアクセスを特定のドメインに制限するように、奇妙なPOC要求を顧客から受け取ったときに選択肢はありませんでした。クライアントは、動的DNSなどのサービスを使用して、自分が取得した動的IPでドメインを再確認できます。

したがって、デフォルトでは、IPアドレスではなくドメイン名に基づいてGuacamole RDGサーバーにインバウンドファイアウォールルールを設定する必要があります。基本的なネットワークロジックに加えて、この要件を満たす方法はありますか?

ドメイン名に基づいてiptablesルールを設定するには、次のコマンドを試しましたが、実行時に実際にドメイン名を解決し、解決されたIPアドレスを使用してiptablesにルールを適用します。

iptables -A INPUT -p tcp --src domain.com --dport 3128 -j ACCEPT

答え1

iptablesそれ自体はIPアドレスでのみ機能しますが、ipsetベースのルールを作成し、定期的にipsetを更新できます。

ipset create allowed hash:ip family inet     # IPv4-only
ipset create allowed6 hash:ip family inet6   # IPv6-only

デフォルトでは、すべてのIPsetは再起動後に削除されます。

ルールは次のとおりです。

iptables -A INPUT -p tcp --dport 3128  -m set --match-set allowed src -j ACCEPT
ip6tables -A INPUT -p tcp --dport 3128  -m set --match-set allowed6 src -j ACCEPT

(脚注ではFORWARDおよびOUTPUTチェーンの場合srcに置き換える必要がありますdst。)

ドメイン検索を実行し、IPset を更新するスクリプトを作成します。

#!env /bin/bash

# Domain names to look up
names=("example.com" "example.org")

ipset flush allowed
for name in ${names[@]}; do
    # Look up and add IPv4 addresses (dig may output multiple)
    ip4s=$(dig A +short ${name})
    for ip4 in ${ip4s}; do
        ipset add allowed ${ip4}
    done
    
    # Look up and add IPv6 addresses (dig may output multiple)
    ip6s=$(dig AAAA +short ${name})
    for ip6 in ${ip6s}; do
        ipset add allowed6 ${ip6}
    done
done

定期的にスクリプトを実行するには、cronjobを追加してください。たとえば、5分ごとに次のようになります。

*/5 * * * * root /path/to/myscript.sh

答え2

ipset add allowed $ip

4つのIPが応答したため、私には適していませんdig。これを行いました。

for n in $ip
do
  ipset add allowed $n
done

答え3

CSFファイアウォールにはこの機能が組み込まれています。したがって、単一のソースへのインバウンドをロックすることもできます。そして、IPを特定のサブドメインに更新する(安価だが安全な)動的DNSサービスがあります。 CSFは許可された着信IPを定期的に確認して変更します。非常に非常にうまく動作します。メンテナンス費用は非常に安いです。 VPSへのアクセスをロックするために使用します。これが人気があるはずですが、これに関する情報をたくさん見つけるのは難しいですね。だからCSFについて知ることをお勧めします。ところで、これはWebminで簡単に設定できます。そしてそれは無料です。そして人気があります。使用しているディストリビューションによってさまざまなパスが異なる場合は、設定が少しトリッキーです。https://www.configserver.com/cp/csf.html

関連情報