FortiGateのログを外部へ保管したい場合は、Syslogサーバーへの転送を設定します。FortiGate本体だけにログを残す構成と比べて、障害やセキュリティインシデントの調査時に過去ログを追いやすくなります。
この記事では、FortiGate 60F(FortiOS 7.4.9)から同一ネットワーク上の受信端末へSyslogを転送し、PING通信、管理者のログイン、ログアウトが実際に届くところまで確認します。
- 機種:FortiGate 60F
- FortiOS:7.4.9
- FortiGateの送信元IP:192.168.10.105
- Syslog受信端末:192.168.10.45
- プロトコル:UDP
- 受信ポート:5514(検証用)
Syslogの標準ポートはUDP 514ですが、今回は検証端末で権限の影響を避けるためUDP 5514を使用しました。本番環境ではSyslog製品側の待ち受けポート、UDP/TCP、ログ形式とFortiGate側の設定を一致させてください。
FortiGateからSyslogを転送する前の準備
先にSyslogサーバー側を起動し、FortiGateから到達できるIPアドレスとポートで待ち受けます。FortiGate側だけ設定しても、受信サービスが停止している場合やOSのファイアウォールで遮断されている場合はログを確認できません。
今回の検証では、Mac上の検証用UDP受信プログラムを0.0.0.0:5514で起動しました。実運用ではrsyslog、syslog-ng、Graylog、SIEM、FortiAnalyzerなど、保存・検索・アクセス制御ができる製品を使用します。
事前に確認する項目
- SyslogサーバーのIPアドレスが固定されている
- 受信ポートとUDP/TCPの待ち受けが開始されている
- FortiGateからSyslogサーバーへのルートがある
- 受信サーバー側のファイアウォールで許可されている
- FortiGateと受信サーバーの時刻・タイムゾーン・NTPが合っている
FortiGateから受信端末への疎通は、設定前に次のように確認できます。
execute ping-options repeat-count 3
execute ping 192.168.10.45
GUIでSyslog転送を有効にする
FortiGateの管理画面で、ログ&レポート > ログ設定を開きます。グローバル設定のSyslogロギングを有効にし、IPアドレス/FQDNへSyslog受信サーバーのアドレスを入力して、画面下部の適用を選択します。

イベントログを送信する場合はイベントロギングを有効にします。FortiGate自身が送受信するPING、DNS、管理通信なども対象にする場合は、必要に応じてローカルトラフィック ロギングも有効にします。ローカルトラフィックは量が増えやすいため、必要な項目に絞ってください。
CLIでポート・送信元IP・形式を設定する
GUIでは受信先IPを設定できますが、検証用ポート5514や送信元IPまで明示する場合はCLIを使用します。今回の設定は次のとおりです。
config log syslogd setting
set status enable
set server "192.168.10.45"
set mode udp
set port 5514
set facility local7
set source-ip "192.168.10.105"
set format default
end

| 設定 | 意味 |
|---|---|
| server | Syslog受信サーバーのIPアドレスまたはFQDN |
| mode | udpはUDP転送、reliableはTCPによる転送 |
| port | 受信サーバーが待ち受けるポート。既定は514 |
| facility | Syslogのファシリティ。既定はlocal7 |
| source-ip | Syslogパケットの送信元IP |
| format | default、CSV、CEF、RFC5424、JSONなどの形式 |
source-ipには、Syslogサーバーへ到達する経路上でFortiGateが使用できるIPアドレスを指定します。構成によっては指定せず、自動選択に任せる方が適切です。
送信するログをフィルタする
送信対象と最低重要度はconfig log syslogd filterで指定できます。次はinformation以上の転送トラフィックとローカルトラフィックを送信する例です。
config log syslogd filter
set severity information
set forward-traffic enable
set local-traffic enable
end
大量のログを無条件に送ると、ネットワーク帯域や受信サーバーの保存容量を消費します。最初は必要なログ種別と重要度を決め、受信量を確認してから範囲を広げてください。
実際に通信を発生させてSyslogを確認する
転送設定後、FortiGateから1.1.1.1へPINGを3回実行し、さらに管理者アカウントでSSHログイン・ログアウトを行いました。
execute ping-options repeat-count 3
execute ping 1.1.1.1
受信端末では、次の実ログを確認できました。
logdesc="Admin login successful":管理者のSSHログイン成功logdesc="Admin logout successful":管理者のSSHログアウト成功type="traffic" subtype="local" service="PING" action="accept":FortiGate自身から1.1.1.1へのPING通信

画像の角括弧内は受信プログラム側のUTC時刻、ログ本文のdate、time、tzはFortiGate側の時刻情報です。検証機ではタイムゾーンが異なっていたため表示時刻に差があります。インシデント調査で時系列を正しく追えるよう、本番運用前にNTPとタイムゾーンを合わせてください。
CLIで送信カウンターを確認する
Syslogデーモンが処理したログ種別と件数は、次の診断コマンドでも確認できます。
diagnose test application syslogd 3
syslog配下にtrafficやeventの件数が増えていれば、FortiGate内でSyslog送信処理が行われています。ただし、件数が増えていても受信サーバーまで到達しているとは限らないため、最終確認は受信側で行います。
Syslogが届かない場合の確認項目
- 受信サーバーのIPアドレス、ポート、UDP/TCPが一致しているか
- 受信サービスが対象ポートで待ち受けているか
- FortiGateから受信サーバーへPINGできるか
- FortiGateの
source-ipが実在するインターフェースIPか - 受信サーバーのOSファイアウォールや上位機器で遮断されていないか
config log syslogd filterで対象ログが有効か- ファイアウォールポリシーのログ記録が有効か
- 重要度のしきい値より低いログを確認しようとしていないか
到達状況をパケット単位で確認する場合は、FortiGateのパケットキャプチャ手順も利用できます。ポリシーヒットや本体ログを先に確認する場合は、通信ログ確認手順を参照してください。
Syslog運用時の注意点
- UDPは到達確認や再送を行わないため、配送保証が必要な場合は受信製品に合わせてTCPの
reliableやFortiAnalyzerを検討する - Syslogには内部IP、ユーザー名、URL、ホスト名などが含まれるため、閲覧権限と保存先を制限する
- インターネットへUDP 514を直接公開しない
- ログ保存期間とディスク使用量を監視する
- FortiGateと受信サーバーのNTP・タイムゾーンを統一する
- 設定変更前にFortiGateの設定をバックアップする
Syslog転送設定を削除する
検証後に転送設定を完全に削除する場合は、受信先などを解除してから無効化します。FortiOSでは先にstatus disableを設定すると他項目を編集できなくなるため、次の順番で実行します。
config log syslogd setting
set status enable
unset server
unset source-ip
unset port
set status disable
end
最後に次のコマンドを実行し、set status disableだけが表示されることを確認します。
show full-configuration log syslogd setting
まとめ
FortiGate 60FからSyslogサーバーへログを転送し、管理者ログイン・ログアウトとPING通信の実ログを受信できることを確認しました。設定後はFortiGate側のカウンターだけで判断せず、受信サーバー側でログ本文まで確認することが重要です。
FortiGate 60Fの設定手順は、FortiGate設定ガイドにまとめています。

コメント