FortiGate をプロキシとして使うとき、プロキシを使う前にユーザ認証を求めることができます。この記事では、FortiGate の Explicit Proxy に、FortiGate に作ったローカルユーザによるプロキシ認証(Basic 認証)を設定し、動作を確認します。検証時の FortiOS は 6.2.4 です。
プロキシ自体の設定は、次の記事で行っています。今回は、この記事の構成にプロキシ認証を足します。
>> 参考記事:【Fortigate】セキュアWeb ゲートウェイ(SWG : Explicit Proxy+SSLインスペクション+UTM) の設定と動作確認 FortiOS6.2.4
- Basic 認証の認証方式と、認証ルールの設定
- ローカルユーザとユーザグループの作成
- プロキシポリシーへのユーザグループの追加と、ログ・CLI での確認
検証の構成
端末は、プロキシサーバとして FortiGate の 10.0.1.99:8080 を指定しています。FortiGate は、プロキシ認証で入力されたユーザ名とパスワードを、FortiGate に作ったローカルユーザと照合します。
Basic 認証のプロキシ認証は、次の流れで進みます。プロキシは、認証が必要なことを HTTP のステータス 407(Proxy Authentication Required)でブラウザに伝え、ブラウザはユーザ名とパスワードを付けてリクエストを送り直します。
ユーザを LDAP サーバ(Active Directory)で認証する場合や、NTLM 認証を使う場合は、次の記事を参照してください。
認証ルールの設定
認証方式を作る
ポリシー&オブジェクト ›› 認証ルール を開き、新規作成 から 認証方式 をクリックします。認証方式の編集画面で、次のように設定します。
この記事の画面は、実際の画面ではなく、検証時の画面から設定する項目(見るポイント)を抜き出して描いたイメージです。バージョンによって、項目の並びや表記は変わります。
| 1名前 | Basic-Local |
| 2方式 | ベーシック エントリを選択ベーシックダイジェスト フォームベース Fortinetシングルサインオン(FSSO) Negotiate NTLM RADIUSシングルサインオン(RSSO) SSH公開鍵 |
| 3ユーザデータベース | ◉ ローカル○ その他 |
| FSSOゲスト | OFF |
| No. | 項目 | 設定内容 |
|---|---|---|
| 1 | 名前 | 任意の名前です。今回は Basic-Local にします。 |
| 2 | 方式 | + をクリックし、右側に表示される一覧から ベーシック を選びます。 |
| 3 | ユーザデータベース | ローカル を選びます。FortiGate に作ったローカルユーザで認証します。 |
認証方式は「どの方式で、どのユーザデータベースを使って認証するか」を決めるものです。どの通信に認証を求めるかは、次の認証ルールで決めます。
認証ルールを作る
ポリシー&オブジェクト ›› 認証ルール の 新規作成 から 認証ルール をクリックし、次のように設定します。
| 1名前 | Auth-Rule |
| 2送信元アドレス | all |
| プロトコル | HTTP |
| 3認証方式 | ON Basic-Local |
| IPベース認証 | ◉ 有効○ 無効 |
| SSO認証方式 | OFF |
| このルールを有効にする | ◉ 有効○ 無効 |
| No. | 項目 | 設定内容 |
|---|---|---|
| 1 | 名前 | 任意の名前です。今回は Auth-Rule にします。 |
| 2 | 送信元アドレス | 認証の対象にする送信元です。+ から all を選びます。 |
| 3 | 認証方式 | 有効にし、プルダウンから先に作った Basic-Local を選びます。 |
IPベース認証 は有効のままにしています。有効にすると、認証の状態を送信元の IP アドレス単位で持つので、一度認証した端末は有効期限まで認証し直さずに通信できます。
ローカルユーザの作成
ローカルユーザを作る
プロキシ認証に使うローカルユーザを作ります。ユーザ&認証 ›› ユーザ定義 を開き、新規作成 をクリックすると、ユーザ作成のウィザード(Users/Groups Creation Wizard)が始まります。4つの画面で、次のように設定します。
| 1ユーザタイプ | ローカルユーザリモートRADIUSユーザ リモートTACACS+ユーザ リモートLDAPユーザ FSSO FortiNACユーザ |
| 2ユーザ名 | (伏せています) |
| パスワード | •••••••• |
| 二要素認証 | OFF |
| ユーザアカウントステータス | ◉ 有効化済み○ 無効化済み |
| ユーザグループ | OFF |
| No. | 画面 | 設定内容 |
|---|---|---|
| 1 | ユーザタイプ | ローカルユーザ を選び、次へ をクリックします。 |
| 2 | ログインクレデンシャル | ユーザ名とパスワードを入力し、次へ をクリックします。 |
| コンタクト情報 | 何も設定せず、次へ をクリックします。 | |
| エキストラ情報 | 何も設定せず、サブミット をクリックします。ユーザグループには、次の STEP で入れます。 |
作成すると、ユーザ定義の一覧に、タイプが ローカル のユーザとして登録されます。
| 名前 | タイプ | 二要素認証 |
|---|---|---|
| guest | ローカル | ✕ |
| 1(伏せています) | ローカル | ✕ |
ユーザグループを作る
作ったユーザを、ユーザグループに入れます。プロキシポリシーには、ユーザではなくユーザグループを指定するためです。ユーザ&認証 ›› ユーザグループ を開き、新規作成 をクリックして、次のように設定します。
| 1名前 | Proxy-Users |
| 2タイプ | ファイアウォールFortinetシングルサインオン(FSSO) RADIUSシングルサインオン(RSSO) ゲスト |
| 3メンバー | (伏せています) |
| リモートサーバ | グループ名(今回は設定しません) |
| No. | 項目 | 設定内容 |
|---|---|---|
| 1 | 名前 | 任意の名前です。今回は Proxy-Users にします。 |
| 2 | タイプ | ファイアウォール を選びます。 |
| 3 | メンバー | STEP 3 で作ったローカルユーザを選びます。 |
プロキシポリシーの設定
プロキシポリシーの送信元にユーザグループを追加する
ポリシー&オブジェクト ›› プロキシポリシー を開くと、前の記事で作ったプロキシポリシー(ID 2、Explicit Proxy)があります。このポリシーを開き、送信元 の + をクリックします。右側の エントリを選択 で上部の ユーザ を選ぶと、ユーザグループを選べるので、Proxy-Users を選びます。OK をクリックしてポリシーを保存します。
| 名前 | Explicit Proxy |
| プロキシタイプ | ◉ Explicit Web○ トランスペアレントWeb○ FTP |
| 有効化済みインターフェース | port2 |
| 発信インターフェース | port1 |
| 1送信元 | all Proxy-Users エントリを選択(ユーザ)ユーザ (3) (伏せています) guest (伏せています) ユーザグループ (4) Guest-group Proxy-Users SSL-VPN-LDAP SSO_Guest_Users |
| 宛先 | all |
| スケジュール | always |
| サービス | webproxy |
| アクション | ◉ 許可○ 拒否 |
保存すると、ポリシーの一覧で、送信元に Proxy-Users が追加されていることを確認できます。
| ID | 名前 | 送信元 | 宛先 | スケジュール | アクション | セキュリティプロファイル |
|---|---|---|---|---|---|---|
| explicit-web proxy → port1 | ||||||
| 2 | Explicit Proxy | 1all Proxy-Users | all | always | ✓ 許可 | AV default WEB default APP default IPS default SSL deep-inspection |
送信元にユーザグループを入れると、そのポリシーでは認証が必要になり、グループに入っているユーザの通信だけが許可されます。
端末の動作確認
ブラウザで認証する
端末のブラウザ(Internet Explorer)は、LAN の設定で、プロキシサーバに 10.0.1.99、ポートに 8080 を指定しています。この状態で Google にアクセスすると、ユーザ名とパスワードの入力画面が表示されます。STEP 3 で作ったローカルユーザのユーザ名とパスワードを入力します。
ユーザ名:(伏せています) パスワード:••••••••
認証に成功すると、Google にアクセスできるようになります。ログ&レポート ›› 転送トラフィック には、プロキシポリシーを通った通信のログが、送信元のユーザ名付きで記録されます。
| 送信元 | 宛先 | サービス | アプリケーション名 | 結果 |
|---|---|---|---|---|
| 1(伏せています)(10.0.1.10) | encrypted-tbn0.gstatic.com | HTTPS | Google.Services | ✓ |
| (伏せています)(10.0.1.10) | adservice.google.com | HTTPS | Google.Services | ✓ |
| (伏せています)(10.0.1.10) | www.google.com | HTTPS | Google.Services | ✓ |
| (伏せています)(10.0.1.10) | www.google.com | HTTPS | Google.Search_Search.Phrase | ✓ |
| ⋮(一部の行だけを示しています) | ||||
認証状態を CLI で確認する
認証の状態は、CLI の diagnose wad user list でも確認できます。
FortiGate
# diagnose wad user list ID: 3, VDOM: root, IPv4: 10.0.1.10 user name : (伏せています) duration : 163 auth_type : IP auth_method : Basic pol_id : 2 g_id : 3 user_based : 0 expire : 545 LAN: bytes_in=20177 bytes_out=106500 WAN: bytes_in=105749 bytes_out=18439
| 表示 | 意味 |
|---|---|
| IPv4 | 認証したクライアントの IP アドレスです。 |
| user name | 認証したユーザ名です(この記事では伏せています)。 |
| duration | 認証してからの経過時間(秒)です。 |
| auth_type : IP | IP アドレス単位で認証状態を持っています。認証ルールで IPベース認証 を有効にしているためです。 |
| auth_method : Basic | Basic 認証で認証したことを示します。 |
| pol_id | 使われたプロキシポリシーの ID です。図9 のポリシー(ID 2)と一致します。 |
| expire | 認証の有効期限が切れるまでの残り時間(秒)です。 |
まとめ
| 設定 | 内容 |
|---|---|
| 認証方式 | 方式 ベーシック、ユーザデータベース ローカル(Basic-Local) |
| 認証ルール | 送信元 all、プロトコル HTTP、認証方式 Basic-Local、IP ベース認証は有効 |
| ローカルユーザ | ユーザ&認証 ›› ユーザ定義 のウィザードで ローカルユーザ を作成 |
| ユーザグループ | タイプ ファイアウォール の Proxy-Users にユーザを追加 |
| プロキシポリシー | 送信元に Proxy-Users を追加 |
| 確認 | 転送トラフィックのユーザ名、diagnose wad user list |
コメント