はじめに
FortiGate の管理者まわりは、出荷時のままだと既定アカウント名 admin が使われ、権限も super_admin に集中しがちです。アカウント名が既知のまま、単一アカウントを複数人で共有する運用は、総当たり攻撃の的になりやすく、操作の追跡も難しくなります。
本記事では、FortiGate の管理者アカウントと認証まわりの堅牢化を、CLI と GUI の両面で手順化します。各設定の全体像と優先度は、『FortiGate ハードニングの優先度と確認手順』で整理しているので、あわせて参照してください。
- 既定の admin アカウントの改名・削除と super_admin プロファイルの扱い
- 役割ごとに権限を分けるアカウント分離と管理者プロファイルの作成
- パスワードポリシーとログイン失敗時のロックアウトの設定
- FortiToken による管理者の 2 要素認証
- ログインバナーの表示と maintainer アカウントのバージョン差分
認証まわりの堅牢化は、既定の admin を改名または削除して攻撃の的を減らし、役割ごとにアカウントを分けて操作を追跡可能にし、パスワードポリシー・ロックアウト・2 要素認証で認証強度を高める、という流れで整理できます。以降では各設定を順に扱います。
管理者アカウント名の変更とアカウントの分離
最初に着手したいのが、既定の admin アカウントの扱いと、役割ごとのアカウント分離です。いずれも通信への影響がなく、効果が大きい項目です。
admin アカウントの改名・削除
既定の admin アカウント名は広く知られているため、攻撃者は正しいパスワードを探すだけでログインを試みられます。アカウント名を変更すると、攻撃者は有効なアカウント名の特定から始める必要が生じます。
admin は既定で super_admin プロファイルが割り当てられています。super_admin プロファイルは FortiOS のすべてを操作でき、設定のバックアップ・リストアにも必要です。このプロファイル自体は削除・変更できないため、変更対象になるのは「プロファイル」ではなく「admin というアカウント」です。改名にはもう 1 つ管理者アカウントが必要になるため、次の手順で進めます。
GUI の場合:
- 「システム」>「管理者」>「新規作成」で、super_admin プロファイルの新しい管理者アカウントを作成します。
- 作成したアカウントでログインし直します。
- 「システム」>「管理者」で既定の admin を編集してユーザー名を変更、または削除します。
CLI の場合、まず新しい super_admin アカウントを作成します。
config system admin
edit "fw_admin01"
set accprofile "super_admin"
set vdom "root"
set password <password>
next
endこのアカウントでログインし直したうえで、既定の admin を改名または削除します。ログイン中のアカウント自身は改名・削除できないため、必ず別アカウントで操作します。
config system admin
rename "admin" to "fw_admin02"
end削除する場合は次のとおりです。
config system admin
delete "admin"
end確認: show system admin | grep edit で、既定の admin が残っていないこと。super_admin プロファイルのアカウントを誤って 0 にすると管理ができなくなるため、改名・削除の前に別の super_admin アカウントでログインできることを確認します。
参考: Fortinet「Administrator profiles」
“the super_admin profile cannot be deleted or modified”
(super_admin プロファイルは削除・変更できない)
https://docs.fortinet.com/document/fortigate/8.0.0/administration-guide/294491/administrator-profiles
複数管理者アカウントと管理者プロファイル(ロール分離)
すべての管理者が同じアカウントを共有する代わりに、利用者ごと・役割ごとにアカウントを分けると、各管理者の操作を追跡できます。権限の範囲は管理者プロファイル(accprofile)で定義し、役割に必要な範囲だけを与える最小権限の設計が基本になります。
管理者プロファイルは、システム・ネットワーク・ファイアウォール・ログなどの機能領域ごとに、none・read・read-write(一部は custom)のアクセスレベルを割り当てる仕組みです。プロファイルの適用範囲は、グローバルか特定 VDOM かを scope で指定します。
たとえば、ログと設定の閲覧のみを許可する読み取り専用の監査用プロファイルは、次のように作成します。
config system accprofile
edit "ro_auditor"
set scope vdom
set sysgrp read
set netgrp read
set fwgrp read
set loggrp read
next
end作成したプロファイルを管理者アカウントに割り当てます。
config system admin
edit "auditor01"
set accprofile "ro_auditor"
set vdom "root"
set password <password>
next
endGUI では「システム」>「管理者プロファイル」>「新規作成」でプロファイルを定義し、「システム」>「管理者」でアカウントに割り当てます。なお、設定のバックアップ・リストアには super_admin プロファイルが必要で、下位プロファイルでは実行できません。日常運用は最小権限のプロファイルで行い、super_admin アカウントは数を絞って厳重に管理することをおすすめします。
確認: show system accprofile でプロファイルの権限、show system admin で各アカウントへの割り当てを確認します。

パスワードポリシーの有効化
出荷時はパスワードポリシーが無効のため、管理者が弱いパスワードを設定できてしまいます。ポリシーを有効化し、文字種・長さ・有効期限の要件を全管理者に適用します。出荷時設定: disable/推奨値: enable。
config system password-policy
set status enable
set apply-to admin-password
set minimum-length 8
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
endapply-to には admin-password のほか、IPsec の事前共有鍵(ipsec-preshared-key)も指定できます。有効期限を使う場合は expire-status enable とあわせて、期限の日数(expire-day)を運用要件に合わせて設定します。GUI では「システム」>「設定」>「パスワードポリシー」で同じ項目を設定できます。
確認: show full-configuration system password-policy | grep -e status -e minimum-length
参照: パスワードポリシーの設定項目は FortiOS Administration Guide を確認しています。
https://docs.fortinet.com/document/fortigate/8.0.0/administration-guide/14906/administrator-account-options
ログイン失敗時のロックアウト
ログイン試行の失敗回数としきい値超過後のロック時間を設定し、総当たり攻撃の成功率を下げます。出荷時設定: しきい値 3 回・ロック時間 60 秒。しきい値の範囲は 1〜10 で、値を上げるほど侵入を許すリスクが高まる点に留意します。
config system global
set admin-lockout-threshold 3
set admin-lockout-duration 60
endたとえば、失敗 1 回でロックし、再試行まで 5 分待たせる場合は次のように設定します。
config system global
set admin-lockout-threshold 1
set admin-lockout-duration 300
endしきい値を厳しくするほど、正規の管理者が連続して入力を誤った際もロックされる点に注意します。ロック時間と運用上の許容範囲のバランスをとって設定することをおすすめします。
確認: show full-configuration system global | grep admin-lockout
参照: ロックアウトの設定値は Hardening your FortiGate を確認しています。
https://docs.fortinet.com/document/fortigate/6.4.0/hardening-your-fortigate/582009/system-administrator-best-practices
管理者の 2 要素認証
パスワードに加えて、FortiToken による所有要素を組み合わせると、認証情報が漏えいした場合の不正ログインを抑止できます。FortiToken にはハードウェアトークンとモバイルトークン(FortiToken Mobile)があり、登録済みユニットにはモバイルトークンが 2 つ無料で付属します。
設定の前に、いくつか確認したい前提があります。
2 要素認証を有効にする前に、予備の管理者アカウントを用意します。 トークンの紛失やスマートフォンの初期化などで主アカウントにログインできなくなった場合の保険になります。トークンを失うと復旧にはハードリセットが必要になり、設定やデータは失われます。
トークンを割り当てる前に NTP 同期を確認します。 FortiToken は時刻ベースのワンタイムパスワードを使うため、時刻がずれていると正しいコードでも認証に失敗します。時刻同期の設定は、関連記事『FortiGate 暗号化と物理アクセスの堅牢化』のNTP セクションで扱います。
モバイルトークンのアクティベーションコードはメールで送信するため、「システム」>「設定」でメールサービスを設定しておきます。アクティベーションには既定で 3 日間の猶予があります。
GUI での手順は次のとおりです。
- FortiToken のシリアル番号を FortiOS に登録し、ステータスが「使用可能(Available)」であることを確認します。
- 「システム」>「管理者」で対象アカウントを編集します。
- 「2 要素認証を有効にする」を選び、認証タイプで FortiToken を選択します。
- トークンのドロップダウンからシリアル番号を選び、メールアドレスを入力します。
- モバイルトークンの場合は「アクティベーションコードを送信」でコードをメール送信し、管理者がトークンをアクティベートします。
CLI では、two-factor に fortitoken を指定したうえでトークンを割り当てます。fortitoken のキーワードは、two-factor fortitoken を選択するまで表示されません。
config system admin
edit "fw_admin01"
set two-factor fortitoken
set fortitoken <token-serial>
set email-to admin@example.com
next
end役割ごとにアカウントを分けたうえで各アカウントに 2 要素認証を設定すると、誰の操作かを追跡しつつ認証強度を高められます。FortiToken は 1 つの FortiGate 上で 1 アカウントにのみ関連付けられます。
確認: show system admin | grep -e two-factor -e fortitoken
参考: Fortinet「Administrator account options」
“Before enabling MFA, it is recommended that you create second administrator account”
(MFA を有効にする前に、予備の管理者アカウントの作成が推奨される)
https://docs.fortinet.com/document/fortigate/8.0.0/administration-guide/14906/administrator-account-options

ログイン免責事項(バナー)の表示
FortiOS は、GUI や CLI へのログイン前後に免責文(バナー)を表示できます。管理者は続行の前に内容を読み、同意する必要があるため、利用方針や法的注意の明示に使えます。出荷時設定: disable。
ログイン前に表示する場合は次のとおりです。
config system global
set pre-login-banner enable
endログイン後に表示する場合は post-login-banner enable を使います。表示する文面は置き換えメッセージでカスタマイズできます。GUI では「システム」>「置き換えメッセージ」で「拡張ビュー」を選び、管理者向けメッセージを編集します。CLI では config system replacemsg admin pre_admin-disclaimer-text(ログイン後は post_admin-disclaimer-text)で編集します。
確認: show full-configuration system global | grep -e pre-login-banner -e post-login-banner
maintainer アカウントの扱いとバージョン差分
maintainer は、コンソール接続と物理アクセスでログインできる特別なアカウントです。すべての管理者パスワードを失っても、シリアル番号をもとに管理者パスワードをリセットできます。便利な一方、物理的に保護されていない環境では、機器に触れられる人物が管理者アクセスを取得できるリスクになり得ます。
FOS 7.2.4 より前のバージョンでは maintainer は既定で有効です。物理リスクを避けたい場合は無効化できます。
config system global
set admin-maintainer disable
end無効化したうえで全管理者のパスワードを失うと、ファームウェアの再インストール以外に復旧手段がなくなり、その際は設定が出荷時へリセットされます。 無効化は、物理セキュリティと復旧手段の運用を確認したうえで判断することをおすすめします。
FOS 7.2.4 以降(および 7.4.0 以降)では maintainer アカウント自体が削除されており、この設定は不要です。削除後はパスワード紛失時の復旧に物理アクセスとファームウェアの再インストールが必要になり、設定は出荷時へ戻ります。いずれのバージョンでも、定期的な設定バックアップを安全な場所に保管しておくことで、復旧時に設定を取り戻しやすくなります。バージョンの確認やアップグレードの進め方は関連記事『FortiGate アップグレードパスの確認手順』を、脆弱性情報の確認は関連記事『FortiGate PSIRT の確認手順』を参照してください。
参考: 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
まとめ
FortiGate の管理者アカウントと認証の堅牢化は、攻撃の的を減らし、操作を追跡可能にし、認証強度を高めるという 3 つの狙いで整理できます。既定の admin の見直しと役割分離から着手し、パスワードポリシー・ロックアウト・2 要素認証へと広げると進めやすくなります。2 要素認証や maintainer の扱いは、ロックアウトや復旧手段に直結するため、予備アカウントとバックアップを整えたうえで設定します。
- 既定の admin の改名または削除による攻撃対象の縮小
- 役割ごとのアカウント分離と最小権限プロファイルの割り当て
- パスワードポリシーの有効化による文字種・長さの要件化
- ロックアウトのしきい値と時間による総当たりの抑止
- 予備アカウントと NTP 同期を整えてからの 2 要素認証設定
- ログインバナーによる利用方針の同意表示
- バージョンで異なる maintainer の扱いと設定バックアップの重要性
以上、最後までお読みいただきありがとうございました。
