ネットワークエンジニアのアレ

技術情報メインの備忘系ブログです

FortiGateで外部リストを取り込める「Threat feeds」機能を使ってみた。

FortiGate_外部リスト読み込み 前回に引き続いてFortiGateの記事です。

FortiOS 6.0から追加された「Threat feeds」機能について概要と設定方法を書きます。

Threat feeds

「Threat feeds」はWEBサーバにあるリスト(IPアドレス等の一覧)をFortiGateに取り込み、リストにあるIPアドレス等の情報を通信制御に利用する機能です。

「Threat feeds」機能

FortiGate_Threat feeds

取り込むことが可能なリストはこちら。

  • 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」を選択します。

FortiGate ThreatFeeds list import

2.パラメータを入れます。

  • Name :オブジェクトの名称
  • URL of external resource:取り込むリストのURL

今回はこちらで公開しているリストを登録しました。

panwdbl.appspot.com

”Refresh Rate”はリストを更新(リストをGet)する間隔です。デフォルトは5分です。

FortiGate ThreatFeeds list import

3.オブジェクトが生成されます。

①をクリックするとリストを取り込むことが可能です。
②をクリックすると状態が表示されます(ウィンドウが表示されます)。
③をクリックすると取り込んだリストの内容を確認することが可能です。

FortiGate ThreatFeeds list import

4.ファイアウォールポリシーに作成したオブジェクトを登録します。

今回はポリシーの宛先に設定しています。
リストに入っているIPアドレスへの通信をブロックします。

FortiGate ThreatFeeds list import

動作確認

設定が完了したので動作確認を行います。

せっかくなので、動作確認は仕事で開発しているネットワークテスト製品の「NEEDLEWORK」で行います。
NEEDLEWORKは送信元と宛先のIPアドレスを仮想的に生成し、指定したプロトコルで通信することができます。

www.ap-com.co.jp

構成はこちら。

FortiGate ThreatFeeds list import
構成

送信元IPアドレスが「172.16.0.100」で宛先IPアドレスが「4.59.56.18 」、プロトコルはPing(icmp)でテストします。
4.59.56.18 」がIPアドレスリストに含まれているので通信がDropされるはずです。


リスト含まれていないIPアドレスは問題なく通信が通ることを確認するために、宛先IPアドレス「203.0.113.100」のテストも行います。


FortiGate ThreatFeeds list import


画面一番右に結果が出力されます。
ファイアウォールに取り込んだIPアドレスリストに含まれる4.59.56.18へのPing(icmp)がDropされていることがわかります(宛先 203.0.113.100へのPingは通っています)。 FortiGate ThreatFeeds list import

また、NEEDLEWORKでは通信フローを見ることができます。
宛先にパケットが届いていないことがわかります。
FortiGate ThreatFeeds list import

ドメインリスト

続いてドメインリストです。
基本的にIPリストと同じなので簡易版で説明します。

設定手順

ダッシュボードの「Security Fabric」→「External Connectors」を選択します。
「Domain Name」を選択し、IPアドレスリストと同様にオブジェクト名とURLを入力します。

FortiGate ThreatFeeds list import


DNS Filterプロファイルを作成します。
”Category Based Filter”のRemote Categoriesに、作成したオブジェクト(今回はdomain-block-listという名前)があるので、Actionを「Redirect to Block Portal」に設定します。

FortiGate ThreatFeeds list import


作成したDNS Filterプロファイルをファイアウォールポリシーに設定します。

FortiGate ThreatFeeds list import

動作確認

動作確認を行います。
IPアドレスリストと同じく「NEEDLEWORK」を使います。

FortiGate ThreatFeeds list import
構成

69hack.comがリストに含まれているドメインです。
NEEDLEWORKでは、プロトコルにDNSを指定すると指定したドメインのAレコードを解決するクエリーを送信することができます。

FortiGate ThreatFeeds list import

69hack.comの通信がDropされています。
リストに含まれていないwww.naitwo.meの通信は通っています。

おわりに

「Threat feeds」は動的に更新されるIPアドレス等の情報を、簡単にファイアウォールに適応することができる便利な機能です。

ベンダーが用意しているブロックリストやシグネチャにプラスして独自の情報を入れることにより、セキュリティレベルを上げることもできます。

また、たとえばこんな要件がある場合、

PCのエンドポイント製品やIPS/IDSで攻撃・感染検知したIPアドレス情報を自動的にファイアウォールのポリシーに追加してブロックする。

スクリプトを書いてAPIを叩いてファイアウォールに設定・・・・。
しなくても、WEBサーバに置いたリスト(テキストファイル)に追記するだけで、取り込みから反映までファイアウォールでやってくれる。


色々活用できそうな機能なのでぜひ使ってみてください。

参考サイト: docs.fortinet.com

FortiGate VMをVirtualBoxで動かす

VirtualBox-FortiGateVM

Hyper-V、KVM、Xen、VMWare・・・。
FortiGateは多くのハイパーバイザに対応しています。

 

手元のMacで動かしたかったんですがVirtualBox版がなかった・・。

 

今回はFortiGate VMをVirtualBoxで動作させ、管理画面にブラウザで接続するまでをご紹介します。

※あくまでも検証目的での利用なので本番利用とかはしないでください

 

環境

以下の環境で作業しました。

macOS Catalina(10.15.4)

VirtualBox 6.0

qemu-img 4.2.0

事前準備

VMイメージを用意

VMイメージは「KVM」のものを用意します。

ファイル名は”fortios.qcow2”のはずです。

qemu-imgをインストール

Macのターミナルで下記コマンドを実行します。

$ brew install qemu

ディスクイメージのフォーマット変換

ディスクのフォーマットをVDI形式に変換します。

Macのターミナルで下記コマンドを実行します。

$ qemu-img convert -O vdi 【VMイメージのパスを指定】 【変換後のファイル名(パス)を指定】

 例:

$ qemu-img convert -O vdi /Users/hoge/work/fortios.qcow2 /Users/hoge/work/fortios.vdi

VirtualBoxの設定

続いてVirtualBoxの設定です。

仮想マシンの新規作成

仮想マシンの新規作成を行います。

VirtualBox-FortiGate

仮想マシンの設定1

以下の画像のように設定します。

メモリは1024MB以上であれば大丈夫です。

”Hard disk”は作成(変換した)ディスクイメージを指定します。

VirtualBox-FortiGate

仮想マシンの設定2

Paravirtualization Interface(準仮想化インタフェース)は”KVM”を指定します。

VirtualBox-FortiGate

仮想マシンの起動

作成した仮想マシンを起動します。

ログインプロンプトが出れば起動完了です。

 初回は「ユーザ名:admin、パスワード:なし」でログインできます。

VirtualBox-FortiGate

ネットワークの設定

管理画面へWEB接続するため、ネットワークの設定を行います。

※今回はホストオンリーアダプター経由で接続します

 

構成はこんな感じです。

 

Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
 

メニューの「ファイル」→「ホストネットワークマネージャー」を選択。

任意のIPアドレスを設定します。

以下の例では192.168.1.1/24を設定

VirtualBox-FortiGate

 

仮想マシンのネットワーク設定で、”アダプター1”をホストオンリーアダプターに指定、上で設定したホストオンリーアダプターを指定します。

VirtualBox-FortiGate

 

FortiFateの設定

IPアドレスの設定

コンソールにログインし、以下のコマンドを実行します。

※Port1に”192.168.1.100/24”を設定します

# config system interface

(interface)# edit port1

(port1)# set mode static

(port1)# set ip 192.168.1.100 255.255.255.0

(port1)# end

WEBアクセス

ブラウザで”https://192.168.1.100”にアクセスします。

FortigateVM-VirtualBox

 

これで完了です。

Pythonを使ってHTTPサーバを5秒で立てる

ネットワークを構築している時に、疎通確認のためにHTTPサーバが必要になる時があります。
Apacheをインストール&設定して――までするのは面倒。

そんな時に便利な、Pythonを使ってサクッとHTTPサーバを立てる方法をご紹介します。 (意外と知らない人がいたので)

PythonでHTTPサーバを立てる

Pythonが動作すればOKなので、Linux(CentOSとか)やMacの環境であれば事前準備不要です。

以下のコマンドを実行するだけでHTTPサーバが起動します。
Pythonの” SimpleHTTPServer”というモジュールを呼び出しています。

python -m SimpleHTTPServer 8080


8080はリッスンさせるポート番号でデフォルトは8000です。
コマンドを実行したディレクトリがHTTPサーバのルートディレクトリになります。

実行例

以下は実際にサーバを起動させてクライアントからアクセスさせる例です。

クライアント(IP:192.168.1.1)→ サーバ(IP:192.168.1.100)

サーバ側

#  python -m SimpleHTTPServer 8080
    Serving HTTP on 0.0.0.0 port 8080 ...
    192.168.1.1 - - [15/Aug/2019 13:18:17] "GET / HTTP/1.1" 200 -

クライアント側

 # curl 192.168.1.100:8080
  <html>
  <head>
  <meta charset="utf-8">
  <title>hoge</title>
  </head>
  <body>
  hoge
  </body>
  </html>

おわりに

サクッと疎通確認をする時に便利です。
活用してみてはいかがでしょう。

JANOG44@神戸に参加します

f:id:naitwo2:20190209161811j:plain

明日から開始される「JANOG44ミーティング」に参加します(ブース出展がメインです)。

ブース出展は7月25日(木)と26日(金)の2日間。

 

FWポリシー&ネットワークテスト自動化製品のNEEDLEWORKを展示します。

続きを読む