Web の通信をプロキシサーバ経由にすると、セキュリティの向上、キャッシュ、アクセスログの収集などができます。ただし、Microsoft 365(Office 365)などの通信は、1ユーザあたりのセッション数や通信量が多く、応答の速さも求められるため、プロキシサーバの処理負荷が問題になります。
FortiGate では、特定の宛先の通信だけプロキシサーバを経由させず、直接インターネットに出すことができます。プロキシを迂回してインターネットに出すことを、ブレークアウト(ローカルブレークアウト)と呼ぶことがあります。この記事では、FortiGate の Explicit Proxy の後ろに Squid プロキシを置く多段プロキシ構成で、Microsoft 関連の通信だけをブレークアウトさせる設定を確認します。検証時の FortiOS は 6.2.4 です。
- FortiGate から Squid に転送する多段プロキシの設定
- Microsoft 関連の通信だけを直接インターネットに出すプロキシポリシーの設定
- Squid のアクセスログと転送トラフィックでの確認方法
検証の構成
次の記事の構成に Squid プロキシサーバ(10.0.1.20)を追加し、Microsoft 関連の通信だけ Squid を迂回させます。先に読んでおくと流れがつかみやすくなります。
>> 参考記事:【Fortigate】セキュアWeb ゲートウェイ(SWG : Explicit Proxy+SSLインスペクション+UTM)の設定と動作確認 FortiOS6.2.4
>> 参考記事:【Fortigate】プロキシ認証(Explicit Proxy+LDAPによるBasic認証)FortiOS6.2.4
端末(10.0.1.10)は、プロキシサーバとして FortiGate の 10.0.1.99:8080 を指定しています。FortiGate は、Microsoft 関連の通信は port1 から直接インターネットに出し、それ以外の通信は Squid(10.0.1.20:3128)に転送します。
多段プロキシの設定
Web プロキシフォワーディングサーバを作る
FortiGate で受け付けたプロキシ接続を Squid に転送する、多段プロキシの設定をします。ネットワーク ›› Explicitプロキシ を開き、Webプロキシフォワーディングサーバ の 新規作成 をクリックします。
この記事の画面は、実際の画面ではなく、検証時の画面から設定する項目(見るポイント)を抜き出して描いたイメージです。バージョンによって、項目の並びや表記は変わります。
| 1名前 | SQUID |
| プロキシアドレスタイプ | ◉ IP○ FQDN |
| 2プロキシアドレス | 10.0.1.20 |
| 3ポート | 3128 |
| 4サーバダウン アクション | ◉ ブロック○ 元のサーバを使う |
| 5ヘルスモニタ | ON |
| ヘルスチェックモニタサイト | http://www.google.com |
| No. | 項目 | 設定内容 |
|---|---|---|
| 1 | 名前 | 任意の名前です。今回は SQUID にします。 |
| 2 | プロキシアドレス | Squid のアドレス 10.0.1.20 を入力します。 |
| 3 | ポート | Squid は既定のポート番号で受け付けているので、3128 にします。 |
| 4 | サーバダウン アクション | Squid がダウンしたときの動きです。ブロック は Squid が戻るまで通信を止め、元のサーバを使う は Squid を経由せずに宛先へ通信させます。今回は ブロック のままにします。 |
| 5 | ヘルスモニタ | 有効にします。Squid 経由でヘルスチェックモニタサイトにアクセスして、Squid が動いているかを確かめます。モニタサイトは、既定で http://www.google.com が入っています。 |
OK をクリックすると、一覧に次のように追加されます。最後に 適用 をクリックします。
| サーバ名 | アドレス | ポート | ヘルスチェック | サーバダウン |
|---|---|---|---|---|
| 1SQUID | 10.0.1.20 | 3128 | 有効化済み | ブロック |
プロキシポリシーで Squid に転送する
FortiGate が受けたすべてのプロキシ通信を、Squid に転送します。ポリシー&オブジェクト ›› プロキシポリシー を開くと、前の記事で作った Explicit Proxy ポリシーがあります。
| ID | 名前 | 送信元 | 宛先 | アクション | セキュリティプロファイル | ログ |
|---|---|---|---|---|---|---|
| ⊟ explicit-web proxy → port1 | ||||||
| 2 | 1Explicit Proxy | all Proxy-LDAP-Users | all | ✓ 許可 | AV default WEB default APP default IPS default SSL deep-inspection | すべて |
このポリシーを開き、Webプロキシフォワーディングサーバ を有効にして SQUID を選び、OK をクリックします。
| 名前 | Explicit Proxy |
| プロキシタイプ | ◉ Explicit Web○ トランスペアレントWeb○ FTP |
| 有効化済みインターフェース | port2 |
| 発信インターフェース | port1 |
| 送信元 | all Proxy-LDAP-Users |
| 宛先 | all |
| サービス | webproxy |
| アクション | ◉ 許可○ 拒否 |
| プロトコルオプション | default |
| 1Webプロキシフォワーディングサーバ | ON SQUID |
Squid のアクセスログを見ると、Google へのアクセスが定期的に記録されています。これは、FortiGate のヘルスモニタによるアクセスです。
Squid
# tail -f /var/log/squid/access.log 1603024284.759 93 10.0.1.99 TCP_MISS/200 14898 GET http://www.google.com/ - HIER_DIRECT/(伏せています) text/html 1603024292.363 81 10.0.1.99 TCP_MISS/200 14938 GET http://www.google.com/ - HIER_DIRECT/(伏せています) text/html 1603024296.750 73 10.0.1.99 TCP_MISS/200 14882 GET http://www.google.com/ - HIER_DIRECT/(伏せています) text/html
| 表示 | 意味 |
|---|---|
| 1603024284.759 | 記録した時刻(UNIX 時間)です。 |
| 93 | 処理にかかった時間(ミリ秒)です。 |
| 10.0.1.99 | Squid に接続してきたクライアントです。多段プロキシなので、FortiGate のアドレスになります。 |
| TCP_MISS/200 | キャッシュの結果と HTTP ステータスです。CONNECT の通信では TCP_TUNNEL になります。 |
| GET http://… | リクエストのメソッドと URL です。 |
| HIER_DIRECT/… | Squid が宛先のサーバに直接接続したことを示します。 |
多段プロキシの動作確認
Microsoft 365 と Facebook にアクセスする
端末から login.microsoftonline.com にアクセスすると、サインイン画面が表示されます。
Squid のアクセスログに、login.microsoftonline.com へのアクセスが記録されています。Microsoft 365 のサインイン画面へのアクセスです。
Squid
# tail -f /var/log/squid/access.log
1603024455.975 85897 10.0.1.99 TCP_TUNNEL/200 53875 CONNECT login.microsoftonline.com:443 - HIER_DIRECT/(伏せています) -
ログ&レポート ›› 転送トラフィック でも、login.microsoftonline.com や、そのほかの Microsoft 関連の通信を確認できます。使われたポリシーが Explicit Proxy であることも、ここで確認しておきます。
| 送信元 | 宛先 | アプリケーション名 | ポリシーID |
|---|---|---|---|
| (伏せています)(10.0.1.10) | outlook.office365.com | Microsoft.Outlook.Office.365 | Explicit Proxy (2) |
| (伏せています)(10.0.1.10) | login.microsoft.com | Microsoft.Authentication | Explicit Proxy (2) |
| (伏せています)(10.0.1.10) | www.office.com | Microsoft.Office.365.Portal | Explicit Proxy (2) |
| (伏せています)(10.0.1.10) | 1login.microsoftonline.com | Microsoft.Authentication | Explicit Proxy (2) |
| (伏せています)(10.0.1.10) | ctldl.windowsupdate.com | Root.Certificate.URL | Explicit Proxy (2) |
| ⋮(以下略) | |||
続けて Facebook にアクセスすると、こちらも表示されます。Squid のアクセスログにも、Facebook へのアクセスが記録されています。
Squid
# tail -f /var/log/squid/access.log
1603024901.086 711 10.0.1.99 TCP_TUNNEL/200 53193 CONNECT www.facebook.com:443 - HIER_DIRECT/(伏せています) -
転送トラフィックでも、Facebook へのアクセスが Explicit Proxy ポリシーで通っていることを確認できます。
| 送信元 | 宛先 | アプリケーション名 | ポリシーID |
|---|---|---|---|
| (伏せています)(10.0.1.10) | www.facebook.com | 1Explicit Proxy (2) | |
| (伏せています)(10.0.1.10) | www.facebook.com | Explicit Proxy (2) | |
| (伏せています)(10.0.1.10) | static.xx.fbcdn.net | Explicit Proxy (2) | |
| ⋮(以下略) | |||
これで、多段プロキシの動作を確認できました。
ブレークアウトの設定
ブレークアウト用のプロキシポリシーを作る
Microsoft 関連の通信だけを、Squid を経由させずに直接インターネットに出します。ポリシー&オブジェクト ›› プロキシポリシー で 新規作成 をクリックし、ブレークアウト用のポリシーを作ります。
| 1名前 | BreakOut |
| プロキシタイプ | ◉ Explicit Web○ トランスペアレントWeb○ FTP |
| 有効化済みインターフェース | port2 |
| 2発信インターフェース | port1 |
| 3送信元 | all Proxy-LDAP-Users |
| 4宛先 |
インターネットサービス(22)Microsoft-Azure Microsoft-DNS Microsoft-Dynamics Microsoft-FTP Microsoft-ICMP Microsoft-Inbound_Email Microsoft-Intune Microsoft-LDAP Microsoft-Microsoft.Update Microsoft-NetBIOS.Name.Service Microsoft-NetBIOS.Session.Service(続き)Microsoft-NTP Microsoft-Office365 Microsoft-Office365.Published Microsoft-Other Microsoft-Outbound_Email Microsoft-Outlook Microsoft-RTMP Microsoft-Skype_Teams Microsoft-SSH Microsoft-Web Microsoft-WNS |
| スケジュール | always |
| 5サービス | webproxy |
| アクション | ◉ 許可○ 拒否 |
| Webプロキシフォワーディングサーバ | OFF |
| 6アプリケーションコントロール | ON default |
| SSLインスペクション | deep-inspection |
| 7許可トラフィックをログ | ON ○ セキュリティイベント◉ すべてのセッション |
| No. | 項目 | 設定内容 |
|---|---|---|
| 1 | 名前 | 任意の名前です。今回は BreakOut にします。 |
| 2 | 発信インターフェース | インターネット向けの port1 を選びます。 |
| 3 | 送信元 | ユーザグループ Proxy-LDAP-Users の通信を対象にします。 |
| 4 | 宛先 | Microsoft 関連のインターネットサービスをすべて選びます。宛先の + をクリックし、右側の インターネット タブで「Microsoft」と検索して、表示された22個をすべて選びます。 |
| 5 | サービス | webproxy を選びます。 |
| 6 | セキュリティ プロファイル | アプリケーションを正しく識別できるように、アプリケーションコントロールを有効にし、SSL インスペクションを deep-inspection にします。SSL インスペクションは処理負荷が高いので、使う FortiGate の性能を確認したうえで適用を検討してください。 |
| 7 | 許可トラフィックを ログ | すべてのセッション にします。 |
Web プロキシフォワーディングサーバは有効にしません。そのため、このポリシーに一致した通信は Squid を経由せず、FortiGate から直接インターネットに出ます。
ポリシーの順番を入れ替える
プロキシポリシーは上から順に評価されるので、作った BreakOut ポリシーを一番上に移動します。GUI でポリシーを選び、ドラッグすると移動できます。
| ID | 名前 | 送信元 | 宛先 | アクション | セキュリティプロファイル |
|---|---|---|---|---|---|
| ⊟ explicit-web proxy → port1 | |||||
| 3 | 1BreakOut | all Proxy-LDAP-Users | Microsoft-Azure Microsoft-DNS ⋮ Microsoft-WNS(22個) | ✓ 許可 | APP default SSL deep-inspection |
| 2 | 2Explicit Proxy | all Proxy-LDAP-Users | all | ✓ 許可 | AV default WEB default APP default IPS default SSL deep-inspection |
| No. | 表示 | 意味 |
|---|---|---|
| 1 | BreakOut | Microsoft 関連の通信は、このポリシーに一致して直接インターネットに出ます。 |
| 2 | Explicit Proxy | それ以外の通信は、このポリシーに一致して Squid に転送されます。 |
ブレークアウトの動作確認
Microsoft 365 と Facebook にもう一度アクセスする
端末から、もう一度 login.microsoftonline.com にアクセスします。サインイン画面は表示されますが、今度は Squid のアクセスログに login.microsoftonline.com へのアクセスが記録されません。
ログ&レポート ›› 転送トラフィック で確認すると、Microsoft 関連の通信に BreakOut ポリシーが適用されています。Squid を経由せず、直接インターネットに出ていることがわかります。
| 宛先 | サービス | アプリケーション名 | ポリシーID |
|---|---|---|---|
| login.live.com | Microsoft-Azure | Microsoft.Authentication | 1BreakOut (3) |
| otf.msn.com | Microsoft-Azure | Microsoft.Portal | BreakOut (3) |
| aadcdn.msftauth.net | Microsoft-Office365 | Microsoft.Authentication | BreakOut (3) |
| outlook.office365.com | Microsoft-Office365.Published | Microsoft.Outlook.Office.365 | BreakOut (3) |
| login.microsoft.com | Microsoft-Office365.Published | Microsoft.Authentication | BreakOut (3) |
| www.office.com | Microsoft-Office365.Published | Microsoft.Office.365.Portal | BreakOut (3) |
| s.amazon-adsystem.com | HTTPS | Amazon.Ads | Explicit Proxy (2) |
| track1.aniview.com | HTTPS | HTTP.BROWSER_IE | Explicit Proxy (2) |
| No. | 表示 | 意味 |
|---|---|---|
| 1 | BreakOut (3) | Microsoft 関連の通信に BreakOut ポリシーが適用されています。サービス の列には、一致したインターネットサービスの名前が表示されます。 |
ログの詳細を見ると、宛先インターフェースがインターネット向けの port1 になっていることがわかります。
| 送信元 IP | 10.0.1.10 |
| 送信元インターフェース | port2 |
| ユーザ | (伏せています) |
| グループ | Proxy-LDAP-Users |
| 宛先 IP | (伏せています) |
| ポート | 443 |
| 1宛先インターフェース | port1 |
| アプリケーション名 | Microsoft.Authentication |
| サービス | Microsoft-Office365.Published |
Facebook はブレークアウトの対象ではないので、これまでどおり Squid に転送されます。Squid のアクセスログにも記録されています。
Squid
# tail -f /var/log/squid/access.log
1603026597.319 86404 10.0.1.99 TCP_TUNNEL/200 52181 CONNECT www.facebook.com:443 - HIER_DIRECT/(伏せています) -
| 宛先 | サービス | アプリケーション名 | ポリシーID |
|---|---|---|---|
| fbsbx.com | HTTPS | 1Explicit Proxy (2) | |
| cx.atdmt.com | HTTPS | HTTP.BROWSER_IE | Explicit Proxy (2) |
| fbsbx.com | HTTPS | Explicit Proxy (2) | |
| login.live.com | Microsoft-Azure | Microsoft.Authentication | BreakOut (3) |
| srtb.msn.com | Microsoft-Office365 | Microsoft.Portal | BreakOut (3) |
| img.img-taboola.com | HTTPS | HTTP.BROWSER_IE | Explicit Proxy (2) |
| ⋮(以下略) | |||
ブレークアウトの対象は、FortiGate が持つ ISDB(Internet Service Database)から選べます。ISDB はクラウドサービスなどの IP アドレスやポート番号をまとめたデータベースで、FortiGuard から定期的に更新されます。
参考:Squid がダウンしている場合
フォワーディングサーバの サーバダウン アクション を ブロック にしているので、Squid がダウンしていると、ブレークアウトの対象ではない通信はできなくなります。たとえば端末から Google にアクセスすると、次のようなエラー画面が表示されます。
Squid がダウンしたときも通信を続けたい場合は、サーバダウン アクション を 元のサーバを使う にすると、Squid を経由せずに宛先へ通信させることができます。
まとめ
| 設定 | 内容 |
|---|---|
| 多段プロキシ | ネットワーク ›› Explicitプロキシ で Web プロキシフォワーディングサーバ(Squid)を作り、プロキシポリシーで指定する |
| ブレークアウト | 宛先に Microsoft 関連のインターネットサービスを選び、フォワーディングサーバを使わないプロキシポリシーを作る |
| ポリシーの順番 | ブレークアウト用のポリシーを、すべての宛先を Squid に送るポリシーより上に置く |
| 確認 | Squid のアクセスログに記録されないこと、転送トラフィックのポリシー ID が BreakOut になっていること |
| Squid ダウン時 | ブロック なら通信できなくなる。元のサーバを使う なら直接通信する |
コメント