FortiGateで外部リストを取り込める「Threat feeds」機能を使ってみた。
前回に引き続いてFortiGateの記事です。
FortiOS 6.0から追加された「Threat feeds」機能について概要と設定方法を書きます。
Threat feeds
「Threat feeds」はWEBサーバにあるリスト(IPアドレス等の一覧)をFortiGateに取り込み、リストにあるIPアドレス等の情報を通信制御に利用する機能です。
取り込むことが可能なリストはこちら。
- IPアドレス
- ドメイン
- URL
- マルウェアハッシュ
取り込んだリストを、セキュリティポリシーやプロファイルに適用して利用します。
たとえば、自社で独自に生成した攻撃者のIPアドレスや、外部で公開されているマルウェアサイトのURLリスト等を取り込むことが可能です。
数十、数百あるIPアドレス等のオブジェクトを手動で追加するのは手間ですが、「Threat feeds」機能を使うことで定期的にリストを取り込んで反映してくれるので運用がかなり楽になります。
また、昨今では通信が暗号化(SSL)されている場合が多いので、ファイアウォールで通信の内容を検査することができない場合も多くなりました。
ファイアウォールでSSLを復号化すれば良いのですが、ファイアウォールのリソースが足りなかったりクライアントPCに証明書を配布するのが大変・・・等、なかなか進まない場合も多いです。
「Threat feeds」機能を使うことでIPアドレスやドメインベースで悪意のある通信をブロックできるので、SSLの復号化不要でセキュリティレベルを上げることが可能です。
FortiOS 6.0では取り込んだIPアドレスリストをProxyポリシーでしか利用できませんでしたが、FortiOS 6.2からはファイアウォールポリシーで利用できるようになりました。
今回はIPアドレスリストとドメインリストの設定手順について説明します。
FortiOS 6.4.0で検証しています。
IPアドレスリスト
設定手順
1.ダッシュボードの「Security Fabric」→「External Connectors」→「IP Address」を選択します。
2.パラメータを入れます。
- Name :オブジェクトの名称
- URL of external resource:取り込むリストのURL
今回はこちらで公開しているリストを登録しました。
”Refresh Rate”はリストを更新(リストをGet)する間隔です。デフォルトは5分です。
3.オブジェクトが生成されます。
①をクリックするとリストを取り込むことが可能です。
②をクリックすると状態が表示されます(ウィンドウが表示されます)。
③をクリックすると取り込んだリストの内容を確認することが可能です。
4.ファイアウォールポリシーに作成したオブジェクトを登録します。
今回はポリシーの宛先に設定しています。
リストに入っているIPアドレスへの通信をブロックします。
動作確認
設定が完了したので動作確認を行います。
せっかくなので、動作確認は仕事で開発しているネットワークテスト製品の「NEEDLEWORK」で行います。
NEEDLEWORKは送信元と宛先のIPアドレスを仮想的に生成し、指定したプロトコルで通信することができます。
構成はこちら。
送信元IPアドレスが「172.16.0.100」で宛先IPアドレスが「4.59.56.18 」、プロトコルはPing(icmp)でテストします。
「4.59.56.18 」がIPアドレスリストに含まれているので通信がDropされるはずです。
リスト含まれていないIPアドレスは問題なく通信が通ることを確認するために、宛先IPアドレス「203.0.113.100」のテストも行います。
画面一番右に結果が出力されます。
ファイアウォールに取り込んだIPアドレスリストに含まれる4.59.56.18へのPing(icmp)がDropされていることがわかります(宛先 203.0.113.100へのPingは通っています)。
また、NEEDLEWORKでは通信フローを見ることができます。
宛先にパケットが届いていないことがわかります。
ドメインリスト
続いてドメインリストです。
基本的にIPリストと同じなので簡易版で説明します。
設定手順
ダッシュボードの「Security Fabric」→「External Connectors」を選択します。
「Domain Name」を選択し、IPアドレスリストと同様にオブジェクト名とURLを入力します。
DNS Filterプロファイルを作成します。
”Category Based Filter”のRemote Categoriesに、作成したオブジェクト(今回はdomain-block-listという名前)があるので、Actionを「Redirect to Block Portal」に設定します。
作成したDNS Filterプロファイルをファイアウォールポリシーに設定します。
動作確認
動作確認を行います。
IPアドレスリストと同じく「NEEDLEWORK」を使います。
69hack.comがリストに含まれているドメインです。
NEEDLEWORKでは、プロトコルにDNSを指定すると指定したドメインのAレコードを解決するクエリーを送信することができます。
69hack.comの通信がDropされています。
リストに含まれていないwww.naitwo.meの通信は通っています。
おわりに
「Threat feeds」は動的に更新されるIPアドレス等の情報を、簡単にファイアウォールに適応することができる便利な機能です。
ベンダーが用意しているブロックリストやシグネチャにプラスして独自の情報を入れることにより、セキュリティレベルを上げることもできます。
また、たとえばこんな要件がある場合、
PCのエンドポイント製品やIPS/IDSで攻撃・感染検知したIPアドレス情報を自動的にファイアウォールのポリシーに追加してブロックする。
スクリプトを書いてAPIを叩いてファイアウォールに設定・・・・。
しなくても、WEBサーバに置いたリスト(テキストファイル)に追記するだけで、取り込みから反映までファイアウォールでやってくれる。
色々活用できそうな機能なのでぜひ使ってみてください。
参考サイト:
docs.fortinet.com