FortiGateでユーザー識別しよう!

FortiGate

ユーザー識別とは?

ユーザー識別を説明する前にファイアウォールの基本的な動作についてご説明します。
ファイアウォールは、インタフェースとIPアドレスとサービスの組み合わせで拒否、許可を選択し、通信制御を行っています。
ActiveDirectoryのような認証サーバは、ユーザーに対して使用可能なアクセス権を付与するという動作を行っています。
PCのIPアドレスがコロコロ変わる環境(DHCPや拠点の移動)では、ユニークな値のユーザーのほうが
識別するのに適しています。ファイアウォールでは、IPアドレスを範囲かサブネットで指定するか使用するすべてのアドレスを入れるかでしか 通信制御ができませんでした。
そこでユーザー識別をファイアウォールに組み込んでポリシーに使用しようということになりました。ユーザー識別として 有名なファイアウォールは Paloaltoです。
PaloaltoのUser-IDという機能です。ログの表示だけでなく、ポリシーにも反映し、識別することができます。ただ当時は この機能を使用するとキャッシュの関係からか うまく振り分けしてくれないことが多発しました。なので しばらくこの機能を使用することを避けていました。
お客様より要望があり、FortiGateで調べてみると似た機能があることがわかり実装にすることとなりました。FortiGateでは FSSOエージェントを使用して識別するものとエージェントレス型があります。
今回はエージェントレス型にて実装しました。結果から申し上げますと バッチリ動作しました。
では 具体的な設定方法を書いていきます。

ユーザー識別設定概要

設定構成は こんな感じです。
FortiGateは200Fを使用しました。FortiOSは7.0.9を使用しました。
ActiveDirectoryは Windows Server2019です。


FortiGateでユーザー識別を設定する手順は以下となります。(FortiGateは初期設定してある前提です)

  1. LDAPサーバの設定
  2. Active Directoryコネクタの設定
  3. ユーザーグループの設定
  4. ファイアウォールポリシーの設定


では、設定をしていきましょう!

LDAPサーバの設定

まず、LDAPサーバの設定をします。
ユーザ&認証 > LDAPサーバへ移動します。
新規作成から LDAPサーバを登録します。
以下の情報を登録します。

名前    :任意の名前を入力します。
サーバIP  :ActiveDirectoryのIPアドレスを入力します
サーバポート:389
コモンネーム識別子:cn
識別名      :LDAPの識別名を入力します。
Exchange server :無効
バインドタイプ:レギュラー
ユーザー名: LDAPを参照可能な権限があるユーザー名を入力します。
パスワード:ユーザーのパスワードを入力します。(サーバによってはLDAP識別名が必要です)
セキュアな接続: 無効(ActiveDirectory側の設定に依存します。)

入力が完了し 接続をテストを押すと 接続ステータスが成功となれば完了です。
OKを押して設定を反映してください。


Active Directoryコネクタの設定

Active Directoryコネクタの設定をします。
セキュリティファブリック > 外部コネクタへ 移動します。
新規作成を選択します。

エンドポイント/アイデンティティから ActiveDirectoryサーバのポーリングを選択します。


新規外部コネクタを設定する画面となります。
以下を入力します。

サーバIP/名前 : ActiveDirectoryのIPもしくは 名前を入力します。
         名前の場合は名前解決が必要です。
ユーザ   : LDAPサーバの時のユーザーを入力します。
パスワード  : ユーザーのパスワードを入力します。
LDAPサーバ : 登録したLDAPサーバを選択します。
ポーリングを有効化:有効
ユーザ/グループ : 編集から設定します。

ユーザ/グループは 編集をクリックすると以下の画面となります。
識別したいユーザーをすべて入れてください。セキュリティグループも可能です。
今回は user01とvip01を追加します。
選択したら 右クリックを押すと追加できます。
OKを押して設定を反映します。
これでActiveDirectoryコネクタの設定は完了です。

ユーザグループの設定

ユーザグループの設定をします。
ユーザ&認証 > ユーザグループを選択します。
新規作成から Fortinetシングルサインオン(FSSO)を選択します。
名前の設定するユーザグループ名を入れます。
今回は user01用のユーザグループとvip01用のユーザグループを作成します。
ファイアウォールポリシーを使用する際に分けたい単位で作成をしてください。
メンバーを選択するとActiveDirectoryコネクタで追加したユーザやセキュリティグループが出てきます。そちらを選択していただくことで可能です。
選択できたら OKをクリックします。

vip01も同様に作成します。

ファイアウォールポリシーの設定

作成したユーザをファイアウォールポリシーに設定していきます。
ポリシー&オブジェクトからファイアウォールポリシーを新規作成していきます。
ポイントは 送信元しかユーザグループを設定できないのでご注意ください。

こんな感じのファイアウォールルールを作成しました。
今回は user01は すべての通信を拒否、vip01は すべての通信を許可のルールを作りました。

Pingでの検証

それぞれのユーザーでPingを打ってみます。
まずは user01で打ってみます。

Pingは通りません。送信元IPアドレスは、192.168.100.20です。

次に ログアウトして、 vip01でログインしてみます。
Pingが通るようになりました。
IPアドレスは 同じく192.168.100.20となっています。

同じIPアドレスで共有しているPCでポリシーを変更することができます。
今まであったIPアドレスベースでしか 識別できないファイアウォールの弱点を克服していますね
FortiGate200Fで 200名~300名規模の環境で使用していますが 今のところ不具合はなさそうです。
大規模で実施する場合は ActiveDirectory側の負荷も考慮して実施したほうがいいかもしれません。
大規模だとFSSOエージェントのほうがいいのかも?
機会があれば ぜひ 実装してみてください。

コメント

  1. より:

    お世話になっております。こちらのページを参考にさせていただき試しているのですが、送信元に作成したグループを追加すると通信ができなくなります・・・(外すと通信できる)なにか確認事項があれば、ご教示いただけないでしょうか?

    • SE太郎 SE太郎 より:

      はじめまして!
      同じポリシーの送信元のアドレス部分はグループのみとしているのでしょうか?
      他になにか設定していたりしますか?

タイトルとURLをコピーしました