FortiGate の Explicit Proxy を用いたユーザー認証について

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

はじめに

今回は、FortiGate の 「Explicit Proxy(明示的プロキシ)認証」 について解説します。

セキュリティ要件で、「インターネットへアクセスする前に、必ずユーザー ID とパスワードを入力させたい」というケースはありませんか? FortiGate の Explicit Proxy 認証を使えば、AD(Active Directory)サーバーがない環境でも、FortiGate 単体でこれを実現できます。

完成形のイメージ

設定を行うと、ユーザーがブラウザで Web サイトを見ようとした瞬間に、以下のような 認証ポップアップ が表示されるようになります。

ここで正しい 「ユーザー名」「パスワード」 を入力した人だけが、インターネットに接続できるようになります。

この記事でわかること
  • Explicit Proxy の基本的な仕組みと設定方法
  • ローカルユーザー を作成して認証させる手順
  • 認証が必要な通信と不要な通信の制御(プロキシポリシー)

今回は、最もシンプルな 「ローカルユーザー(FortiGate 内に作成したユーザー)」 を使った認証手順を紹介します。

Explicit Proxy(明示的プロキシ)とは?

Explicit Proxy(明示的プロキシ)とは、その名の通り、クライアント(PC やブラウザ)に対して 「インターネットに出る時は、このサーバー(FortiGate)を経由しなさい」 と明示的に設定する方式です。

仕組みの解説

通常のルーター(デフォルトゲートウェイ)経由の通信とは異なり、PC は Web サイトのデータを取りに行く際、まず FortiGate のプロキシポート(例: 8080)に対してリクエストを投げます。

FortiGate はそのリクエストを受け取った段階で、「あなたは誰ですか?(認証)」 を行い、許可された場合のみインターネットへ代理でアクセスします。

AD 連携(FSSO)との違いと使い分け

「ユーザーを特定してログを取りたい」という目的は同じですが、AD 連携(FSSO)Explicit Proxy 認証 は、得意なシーンが異なります。

前回の記事で紹介した 「AD 連携(FSSO)」 は、PC へのログイン情報を裏で連携するため、ユーザーは何も意識せず(ポップアップなしで)Web 閲覧ができるのがメリットでした。しかし、「AD に参加していない PC」 では使えないという弱点があります。

そこで登場するのが、今回の Explicit Proxy 認証 です。

AD連携(FSSO)Explicit Proxy 認証
認証の体験透過的(入力不要・気づかない)明示的(ポップアップで入力)
対象デバイス社給 PC (AD 参加済み)全てのデバイス
事前設定FortiGate 側の設定のみブラウザごとの設定が必要(PAC ファイル等で配布可)

具体的な利用シーン

Explicit Proxy 認証は、以下のような状況で便利です。

AD に参加していない端末の管理

MacBook や Linux、あるいは社内ネットワークに接続された「持ち込みPC(BYOD)」など、Active Directory で管理できない端末でも、個別に ID/PASS を発行して制御できます。

ゲストユーザーへの一時利用

来客用 Wi-Fi などで、「今日だけ使える ID」を発行し、インターネット利用ログをしっかり取りたい場合に最適です。

より厳格なセキュリティ

「特定の機密 Web サイトにアクセスする時だけは、必ずパスワード入力を求めたい」といった、意図的なワンクッションを入れる用途にも使われます。

要するに、「社内 PC なら AD 連携」 「それ以外(ゲストや Mac)なら Explicit Proxy」 と使い分けるのが、よくあるパターンです。

Explicit Proxy 認証の設定手順

手順
事前準備

FortiGate は多機能なため、デフォルトでは Explicit Proxy 関連のメニューが非表示になっています。まずは機能を表示させ、プロキシサーバーとして稼働させる設定を行います。

表示機能の有効化

GUI または CLI で、Explicit Proxy 機能を有効にします。

GUI の場合
  • 「システム」>「表示機能設定」 へ移動します。
  • 「Explicit プロキシ」 のスイッチを ON にし、「適用」をクリックします。
CLI の場合

コンソールから以下のコマンドを実行します。

config system settings
    set gui-explicit-proxy enable
end

インターフェースとポート設定

次に、「どのポートでプロキシ接続を受け付けるか」を設定します。

  1. 「ネットワーク」>「Explicit プロキシ」 へ移動します。
  2. 「Explicit Web プロキシ」 を有効にします。
  3. 「リッスンインタフェース」 に、LAN 側のインターフェース(例: port2, internal)を選択します。
  4. 「HTTP ポート」 に任意のポート番号(通常は 8080)を入力し、「適用」をクリックします。

一般的にプロキシサーバーは 8080 番ポートを使用します。 クライアント(ブラウザ)側の設定と一致していれば何番でも構いませんが、特段の理由がなければ 8080 のままで OK です。

手順
ユーザーと認証ルールの作成

FortiGate では、単にユーザーを作るだけでは認証されません。「誰を(ユーザー)」「どの方式で(スキーム)」「いつ認証するか(ルール)」 という3つの要素を紐付ける必要があります。

STEP
ローカルユーザーの作成

認証に使用するユーザーアカウントを作成します。

  1. 「ユーザー&認証」>「ユーザー定義」 へ移動し、「新規作成」をクリック。
  2. タイプは「ローカルユーザー」を選択。
  3. ユーザー名(例: user01)とパスワードを設定し、作成完了です。
STEP
認証方式(Auth Scheme)の作成

「どうやって認証するか」という定義ファイル(スキーム)を作成します。

  1. 「ポリシー&オブジェクト」>「認証ルール」 へ移動します。
  2. 画面上部のボタン、またはプルダウンから 「認証方式(Authentication Schemes)」 を選び、「新規作成」をクリック
  3. 名前: 任意の名前(例: Auth-Scheme-Local
  4. 方式: 「Basic」 を選択(※ポップアップ認証のため)
  5. 「OK」をクリックして保存します。
STEP
認証ルール(Auth Rule)の作成

最後に、「どの通信に認証をかけるか」というルールを作成します。

  1. 同じく 「ポリシー&オブジェクト」>「認証ルール」 画面で、「新規作成」をクリック
  2. 名前: 任意の名前(例: Auth-Rule-Internal
  3. 送信元アドレス: LAN 側のネットワーク(例: all または 192.168.1.0/24
  4. アクティブ認証方式: STEP 2 で作成したスキーム(Auth-Scheme-Local)を選択
  5. 「OK」をクリックして保存します。

少し複雑ですが 「ユーザーを作って、方式(Basic)を決めて、ルールで適用する」 の3段ステップを覚えておけば迷わないと思います。

手順
プロキシポリシーの適用

認証の設定ができたら、最後に「通信許可ポリシー」を作成します。

ここで注意が必要なのは、通常の「ファイアウォールポリシー」ではなく、「プロキシポリシー」 を使用する点です。

プロキシポリシーの作成手順

  1. 「ポリシー&オブジェクト」>「プロキシポリシー」 へ移動します。
  2. 「新規作成」をクリックします。
  3. 以下のように設定します。
項目設定内容
プロキシタイプExplicit Web プロキシ
送信元インターフェースLAN 側インターフェース
送信元アドレスall (またはネットワーク帯)
送信元ユーザーuser01 (STEP1 で作ったユーザー)
宛先アドレスall
サービスwebproxy
アクションACCEPT

Explicit Proxy の通信は、通常の「ファイアウォールポリシー(IPv4ポリシー)」ではなく、「プロキシポリシー」 で制御されます。 間違って通常のポリシー側にユーザー設定を入れても、プロキシ経由の通信は制御できないので注意してください。

動作確認

設定が完了したら、実際にクライアント PC から接続して動作を確認してみます。

ブラウザのプロキシ設定

今回はテストとして、Windows の設定(またはブラウザの設定)でプロキシサーバーを指定します。

  1. Windows の 「設定」>「ネットワークとインターネット」>「プロキシ」 を開きます。
  2. 「手動プロキシ セットアップ」の 「プロキシ サーバーを使う」 をオンにします。
  3. アドレス: FortiGate の LAN 側 IP(設定したインターフェースの IP)
  4. ポート: 8080 (設定したポート番号)
  5. 「保存」をクリックします。

認証ポップアップの確認

ブラウザ(ChromeやEdge)を開き、適当なWebサイト(例: https://google.com)にアクセスします。すると、Webサイトが表示される前に、こちらのような サインイン画面(ポップアップ) が表示されるはずです。

STEP 1 で作成したローカルユーザー(例: user01)とパスワードを入力して「サインイン」をクリックします。

  • 認証成功: Google の画面が表示されます。
  • 認証失敗: 再度ポップアップが出るか、エラー画面になります。

ログの確認

Web サイトが無事に表示されたら、FortiGate 側でログを確認してみます。

  • FortiGate 管理画面の 「ログ&レポート」>「転送トラフィック」 へ移動します。
  • 先ほどの通信ログを探します。
  • ログの詳細(または一覧の列)を確認すると……

「ユーザー (User)」欄に user01 と表示されていれば成功です。 これで、「誰が」アクセスしたのかが特定できるようになりました。

まとめ

本記事では、FortiGate の Explicit Proxy 認証 を使って、Webアクセス時にユーザー認証を行う方法を解説しました。

Explicit Proxy 認証は、ブラウザに設定を入れる手間はありますが、「AD がない環境」や「持ち込み PC」に対しても、セキュリティポリシーを適用できる 手段の1つです。

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

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

この記事を書いた人

インフラ(クラウド/NW/仮想化)から Web 開発まで、技術領域を横断して活動するエンジニア💻 コンシューマー向けエンタメ事業での新規開発・運営経験を活かし、実戦的な技術ノウハウを発信中

[ Certs ] CCIE Lifetime Emeritus / VCAP-DCA ✒️ [ Life ] 技術書・ビジネス書愛好家📖 / 小・中学校で卓球コーチ👟

目次