【Fortigate】プロキシ認証(Explicit Proxy+LDAPによるBasic認証)FortiOS6.2.4

前回の記事では、FortiGate の Explicit Proxy で、ローカルユーザによるプロキシ認証(Basic 認証)の動作を確認しました。今回は、LDAP サーバを使ったプロキシ認証を確認します。LDAP サーバには Active Directory を使います。検証時の FortiOS は 6.2.4 です。

ローカルユーザによるプロキシ認証は、次の記事を参照してください。この記事では、そこから LDAP サーバに変えるところだけをまとめます。

>> 参考記事:【Fortigate】プロキシ認証(Explicit Proxy+ローカルユーザによるBasic認証)FortiOS6.2.4

この記事でわかること
  1. FortiGate に LDAP サーバ(Active Directory)を登録し、ユーザ認証をテストする方法
  2. LDAP を使う認証方式・認証ルールと、リモートグループを使うユーザグループの設定
  3. ブラウザでの認証と、diagnose wad user list での確認

検証の構成

端末は、プロキシサーバとして FortiGate の 10.0.1.99:8080 を指定しています。FortiGate は、プロキシ認証で入力されたユーザ名とパスワードを、LDAP で Active Directory(10.0.1.10)に確認します。

Internet端末プロキシ 10.0.1.99:8080FortiGate(10.0.1.99)HTTP/HTTPS認証できた通信LDAP(389)Active Directory10.0.1.10ドメイン:hirotanoblog.com
図1 検証の構成

Basic 認証のプロキシ認証は、次の流れで進みます。プロキシは、認証が必要なことを HTTP のステータス 407(Proxy Authentication Required)でブラウザに伝えます。

端末(ブラウザ)FortiGateActive Directory① Google へのリクエスト② 407 認証が必要(Basic)③ ユーザ名・パスワード④ LDAP で認証⑤ 成功⑥ Web サイトへの通信を許可
図2 LDAP を使ったプロキシ認証の流れ

Active Directory の準備

ドメイン hirotanoblog.com として Active Directory を構築し、プロキシ認証に使うユーザをあらかじめ作っておきます。

LDAP サーバの設定

LDAP サーバを登録する

FortiGate に LDAP サーバ(Active Directory)を登録します。ユーザ&デバイス ›› LDAPサーバ を開き、新規作成 をクリックします。

画面イメージについて

この記事の画面は、実際の画面ではなく、検証時の画面から設定する項目(見るポイント)を抜き出して描いたイメージです。バージョンによって、項目の並びや表記は変わります。

FortiGate 管理画面画面イメージ
ユーザ&デバイス ›› LDAPサーバ ›› LDAPサーバの編集
1名前ActiveDirectory
2サーバIP/名前10.0.1.10
サーバポート389
3コモンネーム識別子samAccountName
4識別名cn=users,dc=hirotanoblog,dc=com
Exchangeサーバ OFF
5バインドタイプ○ シンプル○ 匿名◉ レギュラー
ユーザ名(伏せています)
パスワード••••••••
セキュアな接続 OFF
6接続ステータス 成功
接続をテストユーザクレデンシャルをテスト
図3 LDAP サーバの設定(実際の画面ではなく、設定する項目を示したイメージです)
No.項目設定内容
1名前任意の名前です。今回は ActiveDirectory にします。
2サーバIP/名前LDAP サーバの接続先です。今回は IP アドレス 10.0.1.10 を指定します。ポートは LDAP の 389 です。
3コモンネーム識別子ユーザを探すときに使う属性です。Active Directory の Windows 2000 より前の形式のログオン名(sAMAccountName)を使うので、samAccountName にします。
4識別名ユーザを探し始める場所(DN)です。ドメインが hirotanoblog.com で、ユーザは Users コンテナにいるので、cn=users,dc=hirotanoblog,dc=com にします。
5バインドタイプレギュラー にし、Active Directory を参照できるユーザ(今回は管理者アカウント)のユーザ名とパスワードを入力します。
6接続ステータス接続をテスト をクリックし、緑の 成功 になることを確認します。

ユーザの認証をテストする

ユーザクレデンシャルをテスト をクリックすると、ユーザ名とパスワードの入力画面が表示されます。プロキシ認証に使うユーザの名前とパスワードを入力し、テスト をクリックして、ユーザクレデンシャルが成功することを確認します。

FortiGate 管理画面画面イメージ
LDAPサーバの編集 ›› ユーザクレデンシャルをテスト
1ユーザ名(伏せています)
パスワード••••••••
接続ステータス 成功
2ユーザクレデンシャル 成功
テスト閉じる
図4 ユーザクレデンシャルのテスト(実際の画面ではなく、確認するポイントを示したイメージです)

認証ルールの設定

認証方式を作る

ポリシー&オブジェクト ›› 認証ルール を開き、新規作成 から 認証方式 をクリックします。

FortiGate 管理画面画面イメージ
ポリシー&オブジェクト ›› 認証ルール ›› 認証方式の編集
1名前Basic-LDAP
2方式ベーシック
3ユーザデータベース○ ローカル◉ その他
ActiveDirectory
FSSOゲスト OFF
OKキャンセル
図5 認証方式の設定(実際の画面ではなく、設定する項目を示したイメージです)
No.項目設定内容
1名前任意の名前です。今回は Basic-LDAP にします。
2方式+ をクリックし、右側に表示される一覧から ベーシック を選びます。
3ユーザデータベースその他 を選び、右側の一覧から先に作った ActiveDirectory を選びます。

認証ルールを作る

ポリシー&オブジェクト ›› 認証ルール の 新規作成 から 認証ルール をクリックし、次のように設定します。

FortiGate 管理画面画面イメージ
ポリシー&オブジェクト ›› 認証ルール ›› 新しいルールの追加
1名前Auth-Rule
2送信元アドレスall
プロトコルHTTP
3認証方式 ON Basic-LDAP
IPベース認証◉ 有効○ 無効
SSO認証方式 OFF
このルールを有効にする◉ 有効○ 無効
OK
図6 認証ルールの設定(実際の画面ではなく、設定する項目を示したイメージです)
No.項目設定内容
1名前任意の名前です。今回は Auth-Rule にします。
2送信元アドレス認証の対象にする送信元です。+ から all を選びます。
3認証方式有効にし、プルダウンから先に作った Basic-LDAP を選びます。

ユーザグループの設定

リモートグループを使うユーザグループを作る

ユーザ&デバイス ›› ユーザグループ を開き、新規作成 をクリックします。名前は任意で、今回は Proxy-LDAP-Users にします。リモートグループ の 追加 をクリックし、リモートサーバとして ActiveDirectory を選びます。

FortiGate 管理画面画面イメージ
ユーザ&デバイス ›› ユーザグループ ›› グループ一致の追加
1リモートサーバActiveDirectory
サーバIP/名前10.0.1.10
サーバポート389
コモンネーム識別子samAccountName
識別名cn=users,dc=hirotanoblog,dc=com
バインドタイプレギュラー
LDAP のツリーグループの一覧(Domain Users など)が表示される。今回はグループを選ばずに OK
OKCancel
図7 リモートサーバの追加(実際の画面ではなく、設定する項目を示したイメージです)

LDAP のツリー(グループの一覧)が表示されるので、OK をクリックします。リモートグループに ActiveDirectory が追加されたら、OK をクリックします。

FortiGate 管理画面画面イメージ
ユーザ&デバイス ›› ユーザグループ ›› ユーザグループの編集
1名前Proxy-LDAP-Users
タイプファイアウォール
メンバー 
リモートグループ
リモートサーバグループ名
2ActiveDirectory 
OK
図8 作成したユーザグループ(実際の画面ではなく、設定する項目を示したイメージです)
No.項目設定内容
1名前Proxy-LDAP-Users にします。
2リモートグループリモートサーバ ActiveDirectory を追加します。グループ名を指定していないので、この LDAP サーバで認証できたユーザがこのグループに一致します。特定のグループのユーザだけに絞りたい場合は、LDAP のツリーでグループを選びます。

プロキシポリシーの設定

プロキシポリシーの送信元にユーザグループを追加する

ポリシー&オブジェクト ›› プロキシポリシー を開き、前の記事で作ったプロキシポリシーを開きます。送信元 に Proxy-LDAP-Users を追加します。

FortiGate 管理画面画面イメージ
ポリシー&オブジェクト ›› プロキシポリシー ›› プロキシポリシーの編集
名前Explicit Proxy
プロキシタイプ◉ Explicit Web○ トランスペアレントWeb○ FTP
有効化済みインターフェースport2
発信インターフェースport1
1送信元all Proxy-LDAP-Users
宛先all
スケジュールalways
サービスwebproxy
アクション◉ 許可○ 拒否
OK
図9 プロキシポリシーの送信元にユーザグループを追加する(実際の画面ではなく、設定する項目を示したイメージです)

送信元にユーザグループを入れると、そのポリシーでは認証が必要になり、グループに一致したユーザの通信だけが許可されます。

端末の動作確認

ブラウザで認証する

端末のブラウザ(Internet Explorer)は、LAN の設定で、プロキシサーバに 10.0.1.99、ポートに 8080 を指定しています。この状態で Google にアクセスすると、ユーザ名とパスワードの入力画面が表示されます。Active Directory のユーザ名とパスワードを入力します。

端末のブラウザ(Windows セキュリティ)画面イメージ
https://www.google.com/
The server 10.0.1.99 is asking for your user name and password.That server also reports: “default”.
ユーザ名:(伏せています) パスワード:••••••••
図10 プロキシ認証の入力画面(実際の画面ではなく、表示のポイントを示したイメージです)

認証に成功すると、Google にアクセスできるようになります。ログ&レポート ›› 転送トラフィック には、プロキシポリシーを通った通信のログが、送信元のユーザ名付きで記録されます。

FortiGate 管理画面画面イメージ
ログ&レポート ›› 転送トラフィック
送信元宛先サービスアプリケーション名結果
1(伏せています)(10.0.1.10)ssl.gstatic.comHTTPSGoogle.Services✓
(伏せています)(10.0.1.10)www.google.comHTTPSGoogle.Services✓
(伏せています)(10.0.1.10)www.gstatic.comHTTPSGoogle.Services✓
(伏せています)(10.0.1.10)www.google.comHTTPSGoogle.Search✓
⋮(以下略)
図11 プロキシポリシーを通った通信のログ(実際の画面ではなく、表示のポイントを示したイメージです。ユーザ名は伏せ、宛先はホスト名だけを示しています)

認証状態を CLI で確認する

認証の状態は、CLI の diagnose wad user list でも確認できます。

FortiGate

# diagnose wad user list

ID: 7, VDOM: root, IPv4: 10.0.1.10
  user name   : (伏せています)
  duration    : 132
  auth_type   : IP
  auth_method : Basic
  pol_id      : 2
  g_id        : 4
  user_based  : 0
  expire      : 572
  LAN:
    bytes_in=10398 bytes_out=86697
  WAN:
    bytes_in=85694 bytes_out=9104
表示意味
IPv4認証したクライアントの IP アドレスです。
user name認証したユーザ名です(この記事では伏せています)。
duration認証してからの経過時間(秒)です。
auth_type : IPIP アドレス単位で認証状態を持っています。認証ルールで IPベース認証 を有効にしているためです。
auth_method : BasicBasic 認証で認証したことを示します。
pol_id使われたプロキシポリシーの ID です。
expire認証の有効期限が切れるまでの残り時間(秒)です。

まとめ

設定ローカルユーザからの変更点
LDAP サーバActive Directory を登録し、接続をテスト と ユーザクレデンシャルをテスト で成功を確認
認証方式ユーザデータベースを その他 にして、LDAP サーバ(ActiveDirectory)を選ぶ
ユーザグループリモートグループに LDAP サーバを追加(必要ならグループで絞る)
プロキシポリシー送信元に LDAP 用のユーザグループを追加
確認転送トラフィックのユーザ名、diagnose wad user list

コメント