ノート:
- このチュートリアルでは、Oracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了するときに、これらの値をクラウド環境に固有の値に置き換えます。
DNSファイアウォールを使用したOracle Cloud Infrastructure内部ネットワークの保護
イントロダクション
仮想マシン(VM)インスタンスの動作を制御するには、その動作を制御する必要があります。ほとんどの場合、ドメイン・ネーム・システム(DNS)問合せは忘れられ、制御または監視されず、侵害されたマシンがコマンドおよび制御(C2)サーバーに接続し、悪意のあるソフトウェアをダウンロードするための道が開いたままになります。C2サーバーおよびその他のタイプの悪意のあるサーバーに対するこれらのアウトバウンド問合せを制御およびブロックできるようにすると、ネットワークにセキュリティ・レイヤーが追加され、VMおよびネットワークがさらに危険にさらされるのを回避できます。
目的
- Oracle Cloud Infrastructure(OCI)プライベートDNSサービスを使用して、DNSファイアウォールを構成し、ロギングを追加してインスタンスのDNSクエリをより適切に制御および可視化することで、内部OCIネットワークを悪意のあるアウトバウンドDNSクエリから保護します。
前提条件
-
OCIテナンシへのアクセス。
-
DNSの基本的な理解
-
Virtual Cloud Network (VCN)。
構成:デフォルトでは、すべてのVCNが独自のDNSリゾルバで作成され、Linuxマシンでの構成に注意を払う場合は、次の内容で
/etc/resolv.conf
ファイルに構成されます(Oracle Linux 9の例)。[opc@linu-lab ~]$ cat /etc/resolv.conf ... nameserver 169.254.169.254
自動プライベートIPアドレス指定(APIPA)アドレス
169.254.169.254
は、複数のサービス(DNSリゾルバ)のOCIネットワークで使用されます。 -
任意のDNSファイアウォール・プロバイダのアカウント(オプション)。
タスク1: OCIコンソールでのDNSリゾルバの特定
VCNがすでに作成されていることを確認し、VCN名をクリックします。「Virtual Cloud Network Details」ページで、「DNS Resolver」をクリックします。
タスク2: 転送エンドポイントの構成
-
「リソース」で、「エンドポイント」および「エンドポイントの作成」をクリックします。
-
「エンドポイントの作成」ページで、次の情報を入力し、「エンドポイントの作成」をクリックします。
- 名前:名前を入力します。
- サブネット:フォワーダ・エンドポイントを配置するサブネットを選択します。
- エンドポイント・タイプ: 「転送」を選択します。
数分かかり、完了したらDNSフォワーダが作成されます。これにより、必要に応じてDNSファイアウォールへの問合せのリダイレクトを構成できます。
DNSリゾルバは、インスタンスの問合せの解決方法の順序に従います。
まず、アタッチされているすべてのプライベート・ビュー、リゾルバ・ルール、および最後にOracle独自のパブリック・インターネット・リゾルバを使用してホスト名を解決します。詳細は、Configuration and Resolutionを参照してください。
次のステップでは、ローカルではない(プライベート・ビューに存在しない)すべての問合せを転送し、問合せを制御するためにDNSファイアウォール・サービス、または会社によって管理されている他のDNSサーバーに送信します。
OpenDNS、Quad9、ControlDなどの無料サービスを選択するか、Cisco Umbrella、ControlD、NextDNS、InfoBloxなどのはるかに多くの制御と機能を備えた有料サービスを選択できます。
ノート:タスク3で説明したDNSプロバイダとの接続はありません。これらは、シンプルさ、使いやすさおよび構成のために例として使用されます。同様のサービスを提供するベンダーは他にも数多くあります。お客様の要件に最も適したサービスを見つけてください。
タスク3: リゾルバ・ルールの作成
-
無料のDNSファイアウォール・サービスの使用
リゾルバはルールを順序で評価し、最初の一致で停止することに注意してください。内部ドメインに他のルールがある場合は、そのルールが最後であるため、他のすべての問合せをDNSファイアウォールにリダイレクトできます。
このチュートリアルでは、Quad9サービスを使用します。これは、基本的に構成なしで非常に使いやすい無料サービスです。ControlDなどの他の無料サービスでは、複数のカテゴリの問合せをブロックするように構成できます。
-
「リソース」で「ルール」および「ルールの管理」をクリックします。
-
「ルールの管理」ページで、次の情報を入力します。
-
ルール条件: 「なし」を選択すると、「すべて一致」クライアントが作成されます。これは、プライベート・ビューまたは前のルールによって解決されていないすべての問合せがリゾルバ・フォワーダに転送され、OCIインターネット・パブリック・リゾルバによって解決されないことを意味します。
-
ソース・ポイント:タスク2で作成したフォワーダ・エンドポイントを選択します。
-
宛先IPアドレス: Quad9 DNSサーバー
9.9.9.9
を使用します。
-
-
「変更の保存」をクリックし、リゾルバが更新されるまで数分待ちます。
すべてのインスタンス問合せは、Quad9 DNSファイアウォール・サービスに送信され、一部のインスタンスが悪意のあるIPに接続しようとするとブロックされます。
または
-
-
有料DNSファイアウォール・サービスの使用
より多くの制御、機能、およびロギングが必要な場合は、無料のサービスがケースのソリューションではない可能性があります。有料サービスでは、無料のサービスよりもはるかに多くの制御と機能が提供され、ホスト名に対して不審な問合せを行っているインスタンスを検出できる場合があります。
このチュートリアルでは、NextDNSを使用し、動作させるために必要な追加のステップがいくつかあります。
まず、アカウントが必要です。NextDNSは、1か月当たり最大300Kの問合せを含む無料層を提供します。これは、サービスをテストするのに十分以上である必要があります。アカウントを取得したら、ログインし、VCNの新しいプロファイルを作成します。
-
「新規」をクリックし、名前を入力します。
-
「設定」をクリックし、ログを保存するリージョンを選択します。USA、ヨーロッパまたはスイスのいずれかを選択できます。
-
「セキュリティ」をクリックし、フィードなどのオプションを使用して、AIを使用して悪意のあるIPをフィルタリングおよびブロックする方法を選択します。
-
「プライバシー」をクリックし、既知の悪意のあるIP、トラッカー、広告サーバーなどのリストを追加します。
-
DenyListおよびAllowListで拒否リストおよび許可リストを作成することもできます。
このサービスの最良の部分は、ロギングおよび分析機能です。これにより、非常に奇妙なホスト名に対する何十万ものクエリを行っているノートパソコンでブラウザ拡張機能を見つけられるようになり、その結果、拡張機能が削除されました。
-
「設定」をクリックすると、IPv4、IPv6、DoT (DNS over TLS)およびDOH (DNS over HTTP)の異なるエンドポイントがあることがわかります。
-
このチュートリアルでは、IPv4を使用し、リゾルバに特定のIPがあります。IPアドレスをリンクするだけで、NextDNSが問合せがどこから来ているかを認識し、プロファイルに対してログに記録できます。
そのためには、(NATを介して)インターネットにアクセスできるインスタンスの1つにログインし、次のコマンドを実行してIPをプロファイルにリンクする必要があります。
[opc@linux-lab ~]$ curl https://link-ip.nextdns.io/d34ff7/fd11c0xxxxx67cab 158.101.204.149[opc@linux-lab ~]$
「拡張オプションの表示」、「リンクされたIP」をクリックし、プロファイルの正しいリンクを取得します。
このスクリプトは、OCI NAT GatewayのIPを返します。このIPは、すべての問合せを行うためにOCI DNSリゾルバによって使用されます。
NextDNSリゾルバのIPv4 IPを指すように、リゾルバ・ルールで最後に1つの変更を行う必要があります。
-
VCNリゾルバ・ページで、「ルール」をクリックし、以前に追加したルールを削除して、IP
45.90.28.43
を指す新しいルールを作成します。OCI DNSリゾルバがこの変更で更新されると、このVCNでDNS問合せを行うすべての内部インスタンスは、NextDNSファイアウォール・サービスを使用します。
拒否リストの作成
拒否リストを作成し、それが機能するかどうかを確認します。NextDNSコンソールに移動し、作成したプロファイルを選択してDenyListをクリックします。ドメイン
malicious.site
を追加し、「Enter」をクリックします。内部インスタンスで、このドメインのIPを解決しようとします。
[opc@linux-lab ~]$ dig +short A malicious.site 0.0.0.0
予期したとおり、問合せはどのIPにも解決されず、
0.0.0.0
が戻されます。この上、問合せはログに記録されています。「分析」タブに、このプロファイルに対して行われたすべての問合せに関する情報が表示されます。これ以降、VCN内の内部インスタンスによって行われたすべての問合せは、リゾルバ・ルールを使用して問合せをDNSファイアウォールに転送します。
-
ノート:
これらすべてのプロバイダには、エニーキャスト・ネットワークと高い耐障害性とスケーラブルなアーキテクチャがあり、サーバーの障害を維持する必要がありますが、独自のアーキテクチャの回復力を高めたい場合は、リゾルバ・ルールでフォワーダとして使用されるネットワークLoad BalancerをOCIに実装し、DNSプロバイダによって指定された複数のIPをNetwork Load Balancerバックエンドとして使用する必要があります。DNSプロバイダのIPの1つがダウンした場合(非常に異常な場合)、Network Load Balancerはトラフィックを他のIPに切り替えます。
プライベートDNSエンドポイント・フォワーダがデプロイされているサブネットのセキュリティ・リストでは、DNS問合せを受信できるように、ポートUser Datagram Protocol (UDP)およびTransmission Control Protocol (TCP)ポート53での接続を許可する必要があります。
このサブネットには、NATゲートウェイを介したインターネット接続が必要です。これを許可するようにセキュリティ・リストとルーティング表の両方が正しく構成されていることを確認します。
関連リンク
承認
- 作成者 - Carlos Jorge Santos (OCI Cloud Engineer - Networking Domainスペシャリスト)
その他の学習リソース
docs.oracle.com/learnの他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。
製品ドキュメントは、Oracle Help Centerを参照してください。
Protect your Oracle Cloud Infrastructure Internal Network using a DNS Firewall
G16359-01
September 2024