FortiGate ハードニングの優先度と確認手順|設定チェックリスト

  • URLをコピーしました!
目次

はじめに

FortiGate は出荷時設定のままでも稼働しますが、出荷時の既定値には利便性や互換性を優先したものが含まれ、セキュリティの観点では見直しが推奨される項目があります。外部に露出した管理インターフェース、変更されていない管理者アカウント名、未使用のまま開いているポートやプロトコルは、攻撃者にとって足がかりになり得ます。

一方で、見直すべき設定は管理者アカウント・管理アクセス・Firewall Policy・ログ・リモートアクセス・暗号化・物理アクセスと多岐にわたり、どこから着手すべきか判断しづらいという課題があります。

この記事でわかること
  • FortiGate のハードニングで押さえる設定領域の全体像
  • 優先度別(必ず/推奨/環境に応じて)の堅牢化チェックリスト
  • 各設定の確認コマンドと、通信への影響・切り戻しの考え方
  • Security Rating を使った堅牢化状況の自己監査
  • 各テーマの詳細手順への入り口(クラスター内の関連記事)

FortiGate のハードニングは、管理面・通信面・物理面という 3 つの攻撃面を縮小する作業に整理できます。着手順としては、影響範囲が広く効果の大きい管理者アカウントと管理アクセスの制限から始め、その後に Firewall Policy・ログ・暗号化へ広げる流れがおすすめです。設定後は Security Rating でスコア化し、抜け漏れを継続的に確認する運用につなげられます。

FortiGate ハードニングの全体像

ハードニングの対象は広範ですが、攻撃者がどこを狙うかという視点で見ると、管理面・通信面・物理面の 3 つに整理できます。この区分は、後述の優先度づけや Security Rating の監査項目とも対応します。

管理面: 管理者と管理アクセスの保護

FortiGate そのものへログインし設定を操作する経路です。攻撃者がここを掌握すると、ポリシーの改変やログの消去まで可能になるため、影響が最も大きい領域になります。

対象となる設定には、管理者アカウント名の変更、パスワードポリシーの有効化、ログイン失敗時のロックアウト、管理者の 2 要素認証、外部インターフェースでの管理アクセス無効化、HTTPS/SSH のみの許可、管理ポートの非標準化、Trusted Host や Local-in-Policy による接続元制限などが含まれます。これらは設定変更による効果が大きく、優先度の高い項目として扱います。

通信面: ポリシーと開放ポートの最小化

FortiGate を通過する通信、および FortiGate 自身が受信する通信を絞り込む領域です。

Firewall Policy を「すべて許可」で構成せず必要な通信のみを許可する設計、送信元・宛先インターフェースに ANY を使わない設計、ジオブロッキングや ISDB(IP レピュテーション)によるリスクの高い通信先の制御、未使用ポリシーの精査、未使用インターフェース・プロトコルの無効化、Local-in-Policy による開放ポートの制限などが該当します。攻撃対象領域(アタックサーフェス)の縮小に直結する領域です。

物理面: 機器そのものへのアクセス制御

FortiGate 本体に物理的に触れられる状況を前提とした対策です。

物理アクセスが可能な場合、コンソール経由のログインや別ファームウェアのロードが行われる可能性があります。USB からの自動インストール(auto-install)の無効化、maintainer アカウントの扱い(FOS 7.2.4 以降は削除済み)、TPM による機密データの暗号化、BIOS のセキュリティレベルなどが対象です。データセンターのように物理的に保護された環境か、そうでないかで適用判断が変わるため、環境に応じて検討する項目として整理します。

これら 3 面に加えて、ログ管理・バージョン管理・暗号化方式は領域横断で関わります。本記事ではまず優先度別のチェックリストで全体を俯瞰し、各設定の詳細は後続のテーマ別セクションから関連記事へ案内します。

優先度別ハードニングチェックリスト

ハードニング項目を、影響範囲と効果・適用リスクの観点で 3 段階に整理します。各項目に CLI・出荷時設定・推奨値・確認方法を添えます。設定変更には通信へ影響するものが含まれるため、利用率の低い時間帯やメンテナンスウィンドウでの適用と、適用後の確認をおすすめします。

参考: Fortinet「Best Practices — Hardening」
“System hardening reduces security risk by eliminating potential attack vectors”
(システムのハードニングは、潜在的な攻撃経路を排除してセキュリティリスクを低減する)
https://docs.fortinet.com/document/fortigate/8.0.0/best-practices/555436/hardening

優先して対応したい項目(優先度: 高)

影響範囲が広く、適用による通信影響が小さい管理面の項目です。

管理者アカウント名の変更

既定アカウント名 admin は広く知られ、総当たり攻撃の起点になりやすいため、super_admin プロファイルの新規アカウントを作成し、そのアカウントでログインしたうえで既定の admin を改名または削除します。

config system admin
    edit "new_admin"
        set accprofile "super_admin"
        set vdom "root"
        set password <password>
    next
end

確認: show system admin | grep edit で既定の admin が残っていないこと。

パスワードポリシーの有効化

出荷時はポリシー無効のため、長さ・文字種・有効期限を定義します。出荷時設定: disable/推奨値: enable。

config system password-policy
    set status enable
    set apply-to admin-password
    set min-lower-case-letter 1
    set min-upper-case-letter 1
    set min-number 1
    set min-non-alphanumeric 1
    set expire-status enable
end

確認: show full-configuration system password-policy | grep status

ロックアウトしきい値・期間の調整

ログイン失敗時のロックを設定し、総当たりの成功率を下げます。出荷時設定: しきい値 3・期間 60 秒(しきい値の範囲は 1〜10)しきい値を上げるほど侵入リスクが高まる点に留意します。

config system global
    set admin-lockout-threshold 3
    set admin-lockout-duration 60
end

確認: show full-configuration system global | grep admin-lockout

外部インターフェースの管理アクセス制限

外部(インターネット接続)インターフェースでは管理アクセスを許可しない構成を推奨します。内部の管理インターフェースでも HTTP・Telnet を避け、HTTPS と SSH のみを許可します。

config system interface
    edit <external-interface>
        unset allowaccess
    next
    edit <mgmt-interface>
        set allowaccess https ssh
    next
end

確認: show system interface <name> | grep allowaccess

HTTP の HTTPS リダイレクトと TLS 1.2 以上

いずれも出荷時に堅牢側の設定ですが、変更されていないかを確認します。出荷時設定: リダイレクト enable・tlsv1-2 tlsv1-3

config system global
    set admin-https-redirect enable
    set admin-https-ssl-versions tlsv1-2 tlsv1-3
end

確認: show full-configuration system global | grep admin-https

管理者の 2 要素認証

FortiToken/FortiToken Mobile による 2 要素認証を管理者に割り当てます。登録済みユニットには試用トークンが 2 つ付属します。GUI では「システム」>「管理者」で各管理者に対し 2 要素認証を有効化します。役割ごとに管理者アカウントを分けると、操作の追跡が容易になります。

確認: show system admin | grep two-factor

Trusted Host による接続元制限

管理者がログインできる送信元アドレスを制限します。HTTPS・SSH・SNMP など多くの管理アクセスに適用されます。ping は Trusted Host の例外で全ネットワークに応答するため、ping も絞る場合は Local-in-Policy を併用します。

config system admin
    edit <admin>
        set trustedhost1 10.0.0.0 255.255.255.0
    next
end

確認: show system admin | grep trustedhost

ログの外部保存

FortiGate の既定はメモリロギングで、再起動するとログが消えます。FortiAnalyzer・FortiCloud など外部への送信を推奨します。送信時の暗号化も設定できます。

config log fortianalyzer setting
    set status enable
    set server <faz-ip>
    set enc-algorithm high
end

確認: show full-configuration log fortianalyzer setting

推奨される項目(優先度: 中)

効果は大きい一方、運用方法の変更や通信影響の確認を伴う項目です。

管理ポートの非標準化

HTTPS・SSH の管理ポートを既定(443/22)から変更します。接続時はポート番号の指定が必要になり(例: https://<ip>:7734)、他サービスとのポート競合に注意します。

config system global
    set admin-sport 7734
    set admin-ssh-port 2345
end

確認: show full-configuration system global | grep admin-sport

アイドルタイムアウトと SSH grace time の短縮

放置端末の悪用や接続確立後の認証猶予を短くします。出荷時設定: アイドルタイムアウト 5 分・grace time 120 秒(範囲 10〜3600 秒)

config system global
    set admintimeout 5
    set admin-ssh-grace-time 30
end

確認: show full-configuration system global | grep -e admintimeout -e grace-time

ログイン免責事項(バナー)

ログイン前後に同意を要する免責文を表示します。出荷時設定: disable。文面は置き換えメッセージでカスタマイズできます。

config system global
    set pre-login-banner enable
end

確認: show full-configuration system global | grep pre-login-banner

強い暗号化のグローバル設定

強い暗号のみを許可します。出荷時設定: strong-crypto enablessl-static-key-ciphers enabledh-params 2048。推奨値は dh-params 8192、静的キーの無効化です。strong-crypto を無効にせざるを得ない環境では、ssh-hmac-md5 disablessh-cbc-cipher disable で SSH 側を補強します。

config system global
    set strong-crypto enable
    set ssl-static-key-ciphers disable
    set dh-params 8192
end

確認: show full-configuration system global | grep -e strong-crypto -e dh-params -e ssl-static

未使用インターフェース・プロトコルの無効化

使用していないインターフェースを無効化し、情報収集に使われ得るプロトコルを停止します(多くは既定で無効)。

config system interface
    edit <unused-port>
        set status down
    next
end

確認: show system interface <name> | grep -e status -e lldp-transmission -e device-identification

ISDB(IP レピュテーション)によるリスクの高い通信先の制御

Firewall Policy にレピュテーションの最低レベルを設定し、基準以上のリスクを持つ通信を破棄します。しきい値の設定によっては正常な通信が遮断される可能性があるため、ログ監視や検証環境で影響を確認してから本適用することを推奨します。

config firewall policy
    edit <policy-id>
        set reputation-minimum 3
    next
end

確認: show firewall policy <policy-id> | grep reputation

仮想パッチ(virtual patch)

即時にアップグレードできない場合の一時的な緩和策として、FortiOS 宛(管理接続・SSL VPN 等)の既知脆弱性を FortiGuard 配信シグネチャで緩和します。Local-in-Policy で virtual-patch を有効化します。詳細は専用スポーク記事で扱います。

NTP 同期

正確な時刻により、証明書やログの監査の一貫性を確保します。Local-in-Policy と併用すると、NTP サービスの提供先を制御できます。

config system ntp
    set type custom
    set ntpsync enable
    config ntpserver
        edit 1
            set server <ntp-ip>
        next
    end
end

確認: show system ntp

環境に応じて検討する項目(優先度: 低)

物理環境やバージョン、運用方針によって適用可否が変わる項目です。適用前に影響と前提条件を確認します。

USB 自動インストールの無効化

FortiGate を物理的に保護できない場合、USB からのファームウェア・コンフィグ自動インストールを無効化します。出荷時設定はバージョンや機種で異なり、資料が基準とする FOS 7.4.7 では有効、現行の公式ドキュメント(8.0)では無効と案内されています。適用前に show で現状を確認することをおすすめします。

config system auto-install
    set auto-install-config disable
    set auto-install-image disable
end

確認: show full-configuration system auto-install | grep auto

maintainer アカウントの扱い

物理アクセスとシリアル番号があれば管理者パスワードをリセットできる maintainer アカウントは、物理的に保護されていない環境ではリスクになり得ます。FOS 7.2.4 より前のバージョンでは既定で有効のため、必要に応じて無効化します。無効化したうえで全管理者のパスワードを失うと、ファームウェアの再インストール(設定は出荷時へリセット)以外に復旧手段がなくなる点に注意します。

config system global
    set admin-maintainer disable
end

FOS 7.2.4 以降では maintainer アカウントは削除済みで、この設定は不要です。該当バージョンではパスワード紛失時の復旧手段が変わるため、定期的な設定バックアップの保管をおすすめします。

参考: Fortinet Community「Resetting a lost admin password」
“Starting with v7.2.4, the ‘maintainer’ account was removed”
(v7.2.4 以降、maintainer アカウントは削除された)
https://community.fortinet.com/t5/FortiGate/Technical-Tip-Resetting-a-lost-admin-password/ta-p/197045

TPM による機密データの暗号化

TPM を搭載するモデルでは、private-data-encryption を有効化してマスター暗号化パスワードを保護できます。出荷時設定: disable。FOS 7.6.1 以降は鍵がランダム生成に変わり、暗号化を有効にした状態のバックアップは、無効化した機器や別の鍵を持つ機器へは復元できません。RMA や移行時の復元手順に影響するため、運用フローと合わせて検討します。

config system global
    set private-data-encryption enable
end

確認: show full-configuration system global | grep private-data-encryption

ジオブロッキング

グローバルな接続を必要としないサービスでは、Firewall Policy で特定地域からのアクセスを制限し、攻撃対象領域を縮小します。リモートアクセスや DMZ の公開サービスの送信元制御にも有用です。

Local-in-Policy による開放ポートの制限

FortiGate 自身が受信する通信を絞り込みます。たとえば WAN 側の ICMP や、利用していない動的ルーティングのポートを閉じる用途に使えます。

config firewall local-in-policy
    edit 1
        set intf wan1
        set srcaddr all
        set dstaddr all
        set action deny
        set service ALL_ICMP
        set schedule always
    next
end

確認: show firewall local-in-policy

参照: 管理者まわりのコマンドは「Hardening your FortiGate — System administrator best practices」、暗号化・物理・ファームウェアまわりは「Best Practices — Hardening」(FortiOS 8.0)を確認しています。
https://docs.fortinet.com/document/fortigate/8.0.0/best-practices/555436/hardening

テーマ別の堅牢化ポイント

各テーマの詳細な手順とコマンドは、クラスター内の関連記事で個別に扱います。

管理者アカウント名・パスワードポリシー・ロックアウト・2 要素認証の設定手順は、関連記事『FortiGate 管理者アカウントと認証の堅牢化』で詳しく解説します。外部インターフェースの管理アクセス制限・管理ポート変更・Trusted Host・Local-in-Policy の使い分けは、関連記事『FortiGate 管理アクセス制限の手順』を参照してください。

通信制御の観点では、ALL 許可や ANY インターフェースを避ける Firewall Policy 設計と ISDB(IP レピュテーション)の活用を関連記事『FortiGate Firewall Policy と IP レピュテーション』に、ログの外部保存・Security Rating 監査・フォレンジックを見据えたログ管理を関連記事『FortiGate ログ管理とフォレンジック』にまとめます。

リモートアクセスでは、FortiToken による 2 要素認証と ZTNA の構成を関連記事『FortiGate リモートアクセスの 2 要素認証と ZTNA』で、即時アップグレードが難しい場合の緩和策となる仮想パッチを関連記事『FortiGate 仮想パッチによる脆弱性緩和』で扱います。暗号化のグローバル設定・TPM・NTP・未使用インターフェースの整理などは、関連記事『FortiGate 暗号化と物理アクセスの堅牢化』に集約します。

Security Rating で堅牢化状況を自己監査する

設定後の抜け漏れ確認には、FOS 6.2.0 以降のセキュリティレーティング機能が活用できます。ローカルの監査情報を使う標準機能でもセキュリティ設定の監査が行え、有償ライセンスでは監査項目が増え、変化する脅威に合わせて項目が更新されます。

監査結果は A〜F のランクとスコアで示され、スコアは B 以上を目安にすると堅牢化の到達度を把握しやすくなります。レポートは FSBP・PCI・CIS に沿った形で CSV・JSON として取得でき、定期的な自己点検の基盤になります。標準機能と有償ライセンスの監査項目数は変動するため、利用環境での最新の項目数は GUI 上で確認することをおすすめします。

バージョンと推奨リリースの確認

ハードニング設定と並行して、稼働中の FortiOS バージョンの妥当性も確認します。Fortinet の推奨リリースは四半期ごとに見直されるため、最新の推奨はその時点の公式情報で確認します。サポート切れ(EOS)のバージョンは利用を避け、計画的なアップグレードをおすすめします。

アップグレード時の差分吸収やコンフィグフォーマットの変更については関連記事『FortiGate アップグレードパスの確認手順』を、自動アップグレードの挙動については関連記事『FortiGate 強制自動アップグレードの注意点』を参照してください。脆弱性情報の確認は関連記事『FortiGate PSIRT の確認手順』にまとめています。

まとめ

FortiGate のハードニングは、管理面・通信面・物理面の攻撃面を縮小する継続的な作業です。影響が大きく低リスクな管理者・管理アクセスの制限から着手し、出荷時設定と推奨値を確認しながら段階的に広げる進め方が扱いやすくなります。設定後は Security Rating で到達度を点検し、抜け漏れを継続的に確認します。

  • ハードニングは管理面・通信面・物理面の攻撃面を縮小する作業
  • 着手は影響が大きく低リスクな管理者・管理アクセスの制限から
  • 各設定は出荷時設定と推奨値を確認し適用後に show で検証
  • ISDB やポート変更など通信影響を伴う設定は事前検証を推奨
  • maintainer や private-data-encryption はバージョンで挙動が変化
  • Security Rating でスコア化し抜け漏れを継続的に点検
  • 各テーマの詳細手順はクラスター内のスポーク記事を参照

以上、最後までお読みいただきありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

関西を拠点に活動する、現役インフラエンジニア。経験20年超。

大手通信キャリアにて、中〜大規模インフラ(ネットワーク・サーバ・クラウド・セキュリティ)の設計・構築およびプロジェクトマネジメントに従事。現場で直面した技術課題への対処や、最新の脆弱性情報への実務対応を、一次情報として発信しています。

保有資格
CCIE Lifetime Emeritus(取得から20年以上)/ VCAP-DCA / Azure Solutions Architect Expert

▶ 運営者プロフィール(詳細)

目次