今回はFortiGateでトラフィックログを表示させる方法をご紹介します。
トラフィックログとは
FortiGateではIPv4ポリシーなどで許可・拒否した通信のログである、
トラフィックログをロギングすることができます。
トラフィックログは設定したIPv4ポリシーが正しく動作しているかの確認や、
トラブルシューティングにも役立つログです。
トラフィックログは『ログ&レポート』→『転送トラフィック』で確認することができます。
CLIでも確認することが可能ですが、GUIの方が視認性が高く確認しやすいです。
『execute log filter category 0』コマンドで、
表示するログのカテゴリを指定します。
今回はカテゴリ0:トラフィックログを指定しています。
『execute log display』でログを表示します。
実行例は下記の通りとなります。
横に長いのでスクロールして確認してみてください。
FortiGate # execute log filter category 0 FortiGate # execute log display 35 logs found. 10 logs returned. 1: date=2021-02-13 time=02:10:45 logid="0000000013" type="traffic" subtype="forward" level="notice" vd="root" eventtime=1613211045827797060 tz="-0800" srcip=192.168.0.1 identifier=26789 srcintf="port1" srcintfrole="undefined" dstip=172.16.0.1 dstintf="port2" dstintfrole="undefined" poluuid="d884e39e-662c-51eb-91d8-3ccfd5af915b" sessionid=29046 proto=1 action="accept" policyid=1 policytype="policy" service="PING" dstcountry="Reserved" srccountry="Reserved" trandisp="noop" duration=61 sentbyte=84 rcvdbyte=84 sentpkt=1 rcvdpkt=1 appcat="unscanned"
もしかすると『ログ&レポート』→『転送トラフィック』を開いても、
何も表示されないかもしれません。
表示させるまでに設定が必要な項目や、
ログを確認する際にも注意が必要なポイントがありますので、
トラフィックログを表示させる方法をご紹介していきます。
トラフィックログを表示させる方法
FortiGateでトラフィックログを表示させるために、
設定に関して3点、ログを確認する際に関して2点ポイントがありますので、
通信を発生させているはずなのにトラフィックログが表示されない場合は、
この合計5点を確認するようにしてみてください。
- IPv4ポリシーでログ設定を『すべて』にしていない
- ポリシー違反ログを表示させる方法
- ログの表示先設定
ログの確認する際に関するポイント
- メモリ上にトラフィックログを保持させる方法
- セッションがクローズされてからロギングされる
ログ設定①:IPv4ポリシーでログ設定を『すべてのトラフィック』にしていない
IPv4ポリシーの『許可トラフィックをログ』の設定を確認してください。
『すべてのトラフィック』:許可した通信含めて該当したすべての通信をロギング
つまり、Pingなどの疎通確認をした許可通信をトラフィックログに表示させたい場合は、
『すべてのトラフィック』の設定にしていないと表示されないということです。
CLIの場合は、設定したいIPv4ポリシーで下記を入力して、
『すべてのトラフィック』の設定をしてください。
config firewall policy edit 1 set logtraffic all next end
『すべてのトラフィック』とする懸念事項としては、
通信が大量に発生している場合は大量のトラフィックログがロギングされますので、
トラフィックログを保存する場合は大量のストレージが必要になることです。
ログの保存先としてはFortiGateでもディスク搭載モデルがありますし、
Syslogサーバを利用することも考えられます。
また、FortiGateCloudというFortinet社提供のクラウドサービスを利用することで、
有償版は1年間、無償版は7日間ログを保存することができます。
ログの容量で決まるのではなく、保存期間で決まりますので、
こちらのサービスを利用することでストレージ容量を気にしなくてよくなります。
ログの保存期間やクラウド上にログを保存するという点で、
社内やシステムのセキュリティポリシーに違反していないかなどを、
ご確認の上ご利用を検討してください。
ログ設定②:ポリシー違反ログを表示させる方法
通信はIPv4ポリシーの上から順に該当するか評価されていき、
該当するIPv4ポリシーがない場合は暗黙の拒否に該当し通信が拒否されます。
デフォルトでは暗黙の拒否に該当した通信をロギングすることが無効になっていますので、
わざと許可されていない通信を発生させても、トラフィックログには表示されません。
以下のロギングする設定を有効にすることで、
ポリシー違反のトラフィックログをログに表示させることができます。
GUIの場合は『ポリシー&オブジェクト』→『IPv4ポリシー』から、
末尾の『暗黙の拒否』を選択し『編集』を押下します。
もしくは、『暗黙の拒否』をダブルクリックします。
『違反トラフィックをログ』を有効にして、『OK』を押下してください。
CLIでも設定可能です。
CLIの場合は下記コマンドを入力してください。
config log setting set fwpolicy-implicit-log enable end
こちらも設定を有効にすることで、
多少なりともログ容量が増えてしまうことをご理解の上ご利用ください。
なおIPv4ポリシーで拒否と設定している通信に関しては、
IPv4ポリシーを『すべてのトラフィック』に設定することでロギングされるようになります。
ログ設定③:デフォルトでは本体のメモリ上にトラフィックログは保存されない
ディスク非搭載のモデルの場合、ログはメモリ上に保存されます。
本体のメモリ上に保存されるログはデフォルトでは、
重要度(severity)がwarning以上のログのみ表示するという設定になっています。
インタフェースのUp/Downなどは表示されますが、
トラフィックログは重要度が低いため表示されません。
ロギングする重要度(severity)を変更することで、
メモリ上にもトラフィックログを表示させることが可能です。
設定変更はCLIでのみ可能です。
config log memory filter set severity information end
ログは一定量に達すると古いものから削除されていきます。
メモリ上ですので、保存できる容量はごくわずかです。
実通信が発生している環境など、
通信量が多い環境では1分もロギングできないかと思いますので、
あくまで検証や疎通試験などの確認目的の一時的な設定であることをご理解ください。
また、メモリ上に保存されているログは揮発性です。
電源OFF/ONや再起動でログが揮発しなくなってしまうことにもご注意ください。
ログ確認①:ログの表示先設定
FortiGateのGUI上ではトラフィックログを含む各種ログを、
FortiGateCloud上のログとメモリ上のログを表示させることができます。
FortiGate実機のGUIで、『ログ&レポート』→『転送トラフィックログ』を表示した際に、
右上のアイコンを確認してください。
ここでは実機のメモリ上のログを表示しています。
FortiGateCloud上ではトラフィックログが表示されているのに、
実機のGUIでは表示されない場合は、アイコンがメモリになっていることが考えられます。
このアイコンをFortiGateCloudに変更することで、
FortiGateCloud上のログが表示されるようになります。
ログ確認②:セッションがクローズされてからロギングされる
設定は正しいし、通信も発生させているのにロギングされないという場合は、
セッションがクローズしていない場合があります。
FortiGateはセッションがクローズしたときにロギングを行います。
詳細の説明は少し難しい内容になってしまいますので、
通信が発生してもすぐにロギングされないということだけご理解いただければと思います。
詳細を知りたい方は以下を一読ください。
ICMP、UDP、TCPのデフォルトのセッションタイムアウトの時間は下記の通りとなります。
- ICMP:60s
- UDP:180s
- TCP:3600s
ICMPやUDPはセッション管理されませんが、
ForiGateのセッションテーブル上にこの秒数だけ表示されるとご理解ください。
ICMPやUDPの通信はセッションテーブル上のタイムアウトの時間を待って、
セッションテーブルから削除され、ロギングされるという流れになります。
セッション管理されるTCPに関しては、
TCPの通信としてクローズ処理が行われた場合と、
セッションのクローズ処理がなされずにセッションタイムアウトを超過した際に、
セッションテーブルから削除され、ロギングされるという流れになります。
セッションテーブルは『get system session list』などで確認することができます。
EXPIREに表示されている時間がセッションタイムアウトの時間となります。
FortiGate # get system session list PROTO EXPIRE SOURCE SOURCE-NAT DESTINATION DESTINATION-NAT tcp 3599 192.168.11.7:57065 - 192.168.11.14:80 - tcp 3600 192.168.11.7:50383 - 192.168.11.14:22 - udp 171 192.168.11.14:3694 - 192.168.11.1:53 - icmp 54 192.168.0.1:60836 - 172.16.0.1:8 - icmp 55 192.168.0.1:61092 - 172.16.0.1:8 - icmp 56 192.168.0.1:61348 - 172.16.0.1:8 - icmp 57 192.168.0.1:61604 - 172.16.0.1:8 - icmp 58 192.168.0.1:61860 - 172.16.0.1:8 - udp 176 192.168.11.14:3694 - 208.91.112.52:53 - udp 174 192.168.11.14:3694 - 208.91.112.53:53 -
さいごに
トラブルの際はログを見ることで、解決の糸口が見つかることもあります。
自己解決できなくて、社内の他のエンジニアや、
販売代理店・メーカーへ問い合わせをするにしても、
ログがあることで解決までのスピードを早める可能性がありますので、
可能であれば是非取得して欲しい内容となります。
その他の設定に関してはこちら