2021年6月29日火曜日

OSSのファイアウォール「pfSense」の初期インストール&冗長構成手順

OSSのファイアウォールの「pfSense」は、ファイアウォール機能をメインとしつつ、DHCPサーバ、DNSフォワーダ、VPN (IPsec、L2TP、OpenVPN)、さらにはロードバランサの機能までも有しており、多機能なネットワーク仮想アプライアンスとして利用することができる。
※パッケージを追加することでWebプロキシサーバなどの機能追加もできる。

pfSenseは物理ハードウェアだけではなく、ESXi上の仮想マシンとしてもインストールすることができる。今回は、pfSenseをESXiに初期インストールしたうえで、2台のpfSenseを使って冗長構成にする手順を記載する。

環境

使用するESXi及びpfSenseのバージョンを以下に記載する。pfSense 2.4.xはFreeBSD 11ベースのアプライアンスとなる。

  • ESXi : 6.7.0 Update 3
  • pfSense : 2.4.5-RELEASE-p1

pfSenseを冗長構成とする場合は、ハートビート用のNICが個別に必要となるため、WAN、LAN、OPT1の3つのNICを仮想マシンに付与する。以下に簡単なネットワーク構成図を記載する。

初期インストール

1. ESXi上で仮想マシンを作成

pfSenseをインストールするたの仮想マシンを新規作成する。以下の内容で仮想マシンを構成する。今回導入するpfSense 2.4.5-RELEASE-p1はFreeBSD 11ベースとなるため、仮想マシンのタイプもFreeBSD 11を選択する。

設定項目 設定値
ゲストOSファミリ その他
ゲストOSのバージョン FreeBSD 11 (64ビット)
CPU 1コア
メモリ 1024MB
ディスク 8GB
ネットワークアダプタ1 WAN用のポートグループを指定
ネットワークアダプタ2 LAN用のポートグループを指定
ネットワークアダプタ3 ハートビート用のポートグループを指定

なお、各pfSenseのバージョンとベースとなるFreeBSDのバージョンは以下サイトにて確認することができる。

2. インストールウィザードに従ってインストール

pfSenseのインストールイメージから起動すると、インストールウィザードが起動する。ウィザードでは以下選択を行う。

設定項目 設定値
Welcome [Install]を選択
Keymap Selection [Japanese 106]を選択したのち、[Continue with jp.kbd keymap]を選択
Partitioning [Auto (UFS)]を選択
Manual Configuration [No]を選択
Complete [Reboot]を選択

3. 初回起動時にてインタフェースを設定

インストールウィザード完了後に再起動されると、CLIによるインタフェースの初期設定が開始される。

設定項目 設定値
Should VLANs be set up now [y|n]? n
Enter the WAN interface name or ‘a’ for auto-detection vmx0
Enter the LAN interface name or ‘a’ for auto-detection vmx1
Enter the Optional 1 interface name or ‘a’ for auto-detection vmx2
Do you want to proceed [y|n]? y

以上を設定すると、「Bootup complete」と表示され、CLIで各種セットアップのメニューが表示される。

4. LAN側インタフェースにIPアドレスを設定

WAN側インタフェースはデフォルトでDHCPでIPアドレスを取得するが、LAN側インタフェースはIPアドレスがデフォルトで192.168.1.1/24に固定設定されている。このIPアドレスを適切なIPに変更しWeb管理画面にログインできるようにする。

CLIで「2) Set interface(s) IP address」を選択したのち、以下の設定を行う。

設定項目 設定値
Enter the number of the interface you wish to configure 2 (LAN)
Enter the new LAN IPv4 address 任意のIPアドレス (例:192.168.11.45)
Enter the new LAN IPv4 subnet bit count 任意のサブネットマスク (例:24)
For a WAN, enter the new LAN IPv4 upstream gateway address. For a LAN, press <ENTER> for none そのままエンター
Enter the new LAN IPv6 address そのままエンター
Do you want to enable the DHCP server on LAN? (y/n) n
Do you want to revert to HTTP as the webConfigurator protocol? (y/n) y
Press <ENTER> to continue そのままエンター


5. Web管理画面にログイン

http://[設定したLANインタフェースのIPアドレス]にアクセスすると、Web管理画面にアクセスすることができるので、以下デフォルトのユーザ、パスワードを入力してログインする。

  • ユーザ名 : admin
  • パスワード : pfsense

6. 初回ログイン時のセットアップウィザードに従って初期設定を実施

初回ログイン時はセットアップウィザードが表示されるので、以下のように初期設定を行う。

設定項目 設定値
pfSense Setup そのまま[Next]
Netgate Global Support is available 24/7 そのまま[Next]
General Information [Hostname]、[Domain]、[Primary DNS Server]を環境に合わせて設定
Time Server Information [Time server hostname]にNTPサーバのIPアドレスを指定、[Timezone]にAsis/Tokyoを指定
Configure WAN Interface 環境に合わせてDHCPまたはStatic (固定IP) を指定
Configure LAN Interface そのまま[Next]
Set Admin WebGUI Password 任意のパスワードを設定
Reload configuration そのまま[Reload]
Wizard completed. そのまま[Finish]

7. open-vm-toolsをインストール

pfSenseはデフォルトではopen-vm-toolsがインストールされていない。ESXi上で動作させるためには導入が必要となることから、追加インストールを行う。

Web管理画面にて、System > Package Manager > Available Packagesを選択する。「Search term」にopen-vm-toolsを入力し検索するとパッケージが表示されるため、「Install」ボタンを押してインストールを行う。

冗長化

1. 冗長化用インタフェースのIPアドレスを設定

冗長化用インタフェースとしてOPT1を使用する。Web管理画面にてInterfaces > OPT1を選択し、「Enable」にチェックしOPT1のインタフェースを有効化したうえで、固定IPを設定する。

2. 冗長化用インタフェースに対するファイアウォールルール追加 (#1/#2両方で設定)

OPT1のインタフェースを有効にしただけではファイアウォールにルールが存在しないことから、暗黙のDenyにてすべての通信が拒否されてしまう。

pfSenseを冗長化するうえで必要となる通信を許可する必要があるため、Web管理画面にてFirewall > Rules > OPT1を選択し、以下に設定を行う。

設定項目 設定値
Action Pass
Protocol TCP/UDP
Source OPT1 net
Destination OPT1 address
Destination Port Range any

3. 「State Synchronization Settings」を有効化 (#1/#2両方で設定)

ファイアウォールの保持しているセッションのState tableをpfSense間で同期させるため、冗長構成となるすべてのpfSenseにて同期の設定を行う。

Web管理画面にてSystem > High Availability Syncを選択し、「State Synchronization Settings」を有効化する。

設定項目 設定値
Synchronize states チェックあり
Synchronize Interface OPT1
pfsync Synchronize Peer IP 対向のpfSenseのOPT1インタフェースのIPアドレス

4. 「Configuration Synchronization Settings」を有効化 (#1のみ)

pfSenseに対して設定変更した内容をpfSense間で同期させるため、冗長構成の中でメインとなるpfSenseのみに対して設定を行う。

Web管理画面にてSystem > High Availability Syncを選択し、「Configuration Synchronization Settings」を有効化する。

設定項目 設定値
Synchronize Config to IP 対向のpfSenseのOPT1インタフェースのIPアドレス
Remote System Username admin
Remote System Password adminユーザのパスワード
Select options to sync [Toggle All]ボタンを押してすべてをチェック

もしここまでの作業において、設定不備やネットワーク構成に問題がある場合は、Web管理画面の右上に「Communications error occurred」というエラーメッセージが表示される。再度設定やpfSenseのOPT1インタフェース間で問題なく通信ができることを確認しよう。

5. VIPを作成

最後に、冗長構成となったpfSense間で共有するVIPを作成する。Web管理画面にてFirewall > Virtual IPsを選択し、以下内容でWANとLANインタフェースのそれぞれに対してVIPを作成する。

設定項目 設定値
Type CARP
Interface WAN及びLANそれぞれで1つずつ作成
Address(es) 任意のIPアドレス
Virtual IP Password 任意のパスワード
VHID Group 重複しない任意の番号
Advertising frequency 1 (デフォルト値)

なお、pfSenseではVIP冗長化に「CARP (Common Address Redundancy Protocol)」と呼ばれるプロトコルを使用する。プロトコルの仕様として、VRRPとMACアドレスの生成ルールが共通となっているため、もし同一ネットワーク内にVRRPを使用している機器が存在する場合は、グループID (以下表のVHID Group) が重複しないよう注意すること。

フェイルオーバー動作確認

実際にpfSenseをフェイルオーバーした場合でも、通信が問題なくできることを確認する。

LAN側に配置した端末からpfSense経由でインターネットにアクセスしている際に、アクティブとなっているpfSenseをESXiにてシャットダウンさせてフェイルオーバーを発生させる。

結果としてはフェイルオーバー後も問題なくインターネットアクセスをすることができ、フェイルオーバー中のPingの欠落は1回 (1秒) のみとなることが確認できた。

参考

2021年6月15日火曜日

Azure AD Connectで同期した環境でシングルサインオンを実現する

Azure AD Connectを使うと、Azure ADとオンプレミスのAD (以降、オンプレADと呼ぶ) の同期を行うことができる。これによって、オンプレADのユーザとパスワード情報を用いて、Microsoft 365関連のサイトやAzure Portalにログインすることができる。

Azure AD Connectをインストールする際に、シングルサインオンの設定を行っている場合、追加でグループポリシーの設定を行うことで、シングルサインオンを有効にすることができる。これによって、ドメインユーザでOSログインすると、ブラウザから各種サイトにアクセスする際に、認証情報の再入力が不要となる

今回は、Azure ADと同期した環境において、シングルサインオンに必要となるグループポリシーの設定手順を記載する。

環境

オンプレADのOSは以下の通り。

  • OS : Windows Server 2016 Standard
  • ドメインの機能レベル : Windows Server 2016

Azure AD Connectのインストール手順は以下記事の手順で実施済みであることを前提とする。

手順

1. シングルサインオン用のGPOを作成

「サーバーマネージャー」→「ツール」→「グループポリシーの管理」を開き、グループポリシーオブジェクト (GPO) を作成する。

今回はAzure Policyという名前で作成し、ログインユーザが格納されているOU (私の環境の場合はMy OU) にリンクさせる。

2. 「サイトとゾーンの割り当て」を設定

作成したGPOに対して、以下グループポリシーの設定を行う。

▼設定項目

[ユーザーの構成]
→[ポリシー]
 →[管理用テンプレート]
  →[Windowsコンポーネント]
   →[Internet Explorer]
    →[インターネットコントロールパネル]
     →[セキュリティページ]
      →[サイトとゾーンの割り当て一覧]

▼設定内容

  • 「未構成」→「有効」に変更
  • ここにゾーンの割り当てを入力してください。
    • 値の名前 : https://autologon.microsoftazuread-sso.com
    • 値 : 1

3. 「スクリプトを介したステータスバーの更新を許可」を設定

作成したGPOに対して、以下グループポリシーの設定を行う。

▼設定項目

[ユーザーの構成]
→[ポリシー]
 →[管理用テンプレート]
  →[Windowsコンポーネント]
   →[Internet Explorer]
    →[インターネットコントロールパネル]
     →[セキュリティページ]
      →[イントラネットゾーン]
       →[スクリプトを介したステータスバーの更新を許可する]

▼設定内容

  • 「未構成」→「有効」に変更

4. レジストリの設定

作成したGPOに対して、以下グループポリシーの設定を行う。

▼設定項目

[ユーザーの構成]
→[基本設定]
 →[Windowsの設定]
  →[レジストリ]を右クリック→[レジストリ項目]

▼設定内容

  • アクション : 更新
  • ハイブ : HKEY_CURRENT_USER
  • キーのパス : Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\microsoftazuread-sso.com\autologon
  • 値の名前 : https
  • 値の種類 : REG_DWORD
  • 値のデータ : 00000001

5. グループポリシーを反映

グループポリシー反映までは時間を要するので、以下の通りコマンドでグループポリシーの反映を行う。

PS C:\> gpupdate.exe
ポリシーを最新の情報に更新しています...

コンピューター ポリシーの更新が正常に完了しました。
ユーザー ポリシーの更新が正常に完了しました。

6. シングルサインオンを確認

Microsoft EdgeやGoogle Chromeを使って、以下サイトにアクセスをし、シングルサインオンができることを確認する。

ブラウザはChromeとEdgeにて試したところ、どちらもドメインにログインしたユーザ名があらかじめ入力された状態となっており、ユーザアカウントを選択するだけで、パスワード入力することなくシングルサインオンをすることができた

▼マイアプリポータルへシングルサインした画面

▼Azure Portalへシングルサインした画面

【参考】「アカウントの保護にご協力ください」を消す

Azure ADのアカウントにてログインをする場合、デフォルトのセキュリティ設定の場合は、ログインのたびに「アカウントの保護にご協力ください」というメッセージが表示される。これは、ログイン時に多要素認証を設定することでアカウント認証のセキュリティを強化する設定となるため、むやみに無効化すべきではないが、無効化すること自体は可能であるのでその手順を以下に記載する。

Azure ADで作成したテナントの設定画面の「プロパティ」→「セキュリティ規定値群の管理」のリンク→「セキュリティ規定値群の管理の有効化」を「いいえ」に設定する。無効にするための理由について適切なものにチェックを入れたのち、「保存」することで無効化できる。

参考

2021年6月8日火曜日

Azure AD Connectを使ってAzure ADとオンプレミスのADを同期する

Microsoft 365 (旧Office 365) などのサブスクリプションを所有していると、Azure ADをFree版として使用することができる。

Azure ADに対してオンプレミスで構築しているActive Directoryのユーザやグループ情報を同期させることで、ユーザ情報を統合管理することができる。オンプレミスのAD (以下、オンプレADと呼ぶ) からAzure ADに同期するためのツールとして、「Azure AD Connect」が提供されており、オンプレミス側のドメインに所属するサーバに本ツールをインストールすることで、Azure ADに対し情報を同期させることができる。

今回、Azure AD Connectを使って、オンプレADのユーザ、グループの情報を同期させる検証を行った。その手順を記載をする。

環境

オンプレADのOSは以下の通り。Azure AD Connectは、ドメインコントローラと同居させる形でインストールする。

  • OS : Windows Server 2016 Standard
  • ドメインの機能レベル : Windows Server 2016

また、本作業後にグループポリシーの設定を行うことで、Microsoft 365関連のサイトやAzure Portalにシングルサインオンを行うことができる。こちらについては、以下記事にて手順を記載しているので参照いただきたい。

事前準備

1. テナントを作成

まず、Azure Portalにログインし、「Azure Active Directoryの管理」を選択する。

初期状態ではテナントが作成されていない状態となるため、テナントの「ライセンス」が「…」となっている。まずテナントを作成する必要があるため、「テナントの作成」を選択する。

テナントは以下のように設定し、作成した。

設定項目 説明
テナントの種類 「Azure Active Directory」を選択。
構成 - 組織名 任意で指定。
構成 - 初期ドメイン名 任意で指定。ここで指定した名称で、Azure ADのプライマリドメイン名が[指定した名称].onmicrosoft.comといった名前で作成される。
構成 - 国/地域 「日本」を選択する。これによって、Azure ADのデータセンターの場所も「アジア太平洋」で設定される。

テナントが作成されると、「ライセンス」が「Azure AD Free」となる。

2. Azure ADにグローバル管理者を作成

Azure AD Connectをインストールする際に、Azure ADの「グローバル管理者」のロールを持つ管理者が必要となる。

Azure PortalのAzure AD管理画面で「ユーザー」を選択し、「新しいユーザー」を選択して、ユーザを作成しておく。作成後、ユーザ管理画面の「割り当てられたロール」を選択し、「グローバル管理者」のロールを付与しておく。

なお、新規に作成したユーザは、初回ログイン時にパスワード変更が求められログインできないため、一度そのユーザでAzure Portalにログインをし、パスワードを設定しておくこと。

3. オンプレADの「ごみ箱の有効化」を実施

Azure AD Connectのインストール前提として、「ごみ箱の有効化」が推奨されることから、事前に有効化作業を行う。

ADの「ごみ箱の有効化」は、「サーバーマネージャー」の「ツール」→「Active Directory管理センター」にて実施する。

対象のドメインを選択し、「タスク」の「ごみ箱の有効化」を選択する。

「このアクションを実行しますか? 一度有効にしたごみ箱は無効にはできません。」というポップアップが表示されるので、「OK」を選択する。

4. オンプレADの同期用管理者ユーザを作成

Azure AD Connectは、インストールする際にオンプレADに以下権限を持つユーザの認証情報が求められるので、事前にインストール用のユーザを作成しておく。

  • Domain Admins
  • Enterprise Admins

5. IdFixにてユーザ情報のチェック

「IdFix」と呼ばれるツールを使い、Azure ADと同期する際に問題となるユーザについて事前にチェックしておく。IdFixは以下URLからダウンロードできる。

※ダウンロード箇所がわかりにくいが、以下「ClickOnce Launch」に記載の「launch」のリンクからsetup.exeをダウンロードすることができる。

私の環境では以下のようになった。「ERROR」列にて情報があるのだが、「Blank」と「TopLevelDomain」の2種類のエラーが表示された。

「Blank」のエラーはアカウントの情報において、必要な情報に空欄があるというものとなる。今回、DefaultAccountが該当したのだが、以下URLにある通り、そもそもデスクトップ機能付きのWindows Serverの場合は無効化されているアカウントのようなので、特に対処しないものとした。

TopLevelDomainは、.localといったインターネット上にて名前解決できないドメインをUPN (User Principal Name) として使用している場合に表示されるエラーとなるようだ。UPNを変更するということはドメイン名を変更することになるため、影響が大きいことから、こちらも対処しないこととする。

6. .Net Framework 4.8のインストール

Azure AD Connectは、.Net Framework 4.8が必要となる。Windows Server 2016では通常インストールがされていないので、以下URLより.Net Framework 4.8 Runtimeのダウンロードを行い事前にインストールしておく。

.Net Framework 4.8 Runtimeのインストールは、特に設定項目はないため割愛するが、インストール後に一度再起動が必要となるため注意すること。

7. (プロキシ環境の場合) Azure AD Connectのプロキシの設定

オンプレADが直接インターネットに接続できないようなプロキシ環境にある場合は、Azure AD Connectのインストール時が失敗するので、以下URLに記載の対処を行う。

具体的には、C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.configのファイルを編集し、以下の情報を追記する。[PROXY_IP]:[PROXY_PORT]は環境に合わせて、プロキシサーバのIPアドレス及びポート番号に修正すること。

    <system.net>
        <defaultProxy>
            <proxy
            usesystemdefault="true"
            proxyaddress="http://[PROXY_IP]:[PROXY_PORT]"
            bypassonlocal="true"
            />
        </defaultProxy>
    </system.net>

Azure AD Connectのインストール

いよいよAzure AD Connectをインストールする。設定項目が多いので、一つ一つ進めていく。なお、以下手順はあくまでも私の環境におけるインストール例となる。実際の要件や環境に合わせて、設定内容は変更する必要があることを注意いただきたい。

1. 簡単設定

Azure AD Connectのインストーラを実行すると、「カスタマイズ」と「簡易設定」のどちらかを選択することができるが、「カスタマイズ」を選択する。

2. 必須コンポーネントのインストール

そのまま「インストール」を選択する。

3. ユーザーサインイン

以下を設定して、「次へ」を選択する。

  • サインオン方式 : パスワードハッシュの同期
  • シングルサインオンを有効にする : チェック

4. Azure ADに接続

Azure ADのグローバル管理者のユーザを指定し、「次へ」を選択する。

5. ディレクトリの接続

以下を設定して、「次へ」を選択する。

  • ディレクトリタイプ : Active Directory
  • フォレスト : ドメイン名を指定して「ディレクトリの追加」ボタンを押して選択する。この際に、オンプレADのEnterprise Admins権限のユーザ情報の入力が必要となる

6. Azure ADサインインの構成

以下を設定して、「次へ」を選択する。

  • ユーザープリンシパル名 : mail
  • 一部のUPNサフィックスが確認済みドメインに一致していなくても続行する : チェック

これは、IdFix実行時にもエラーとなった.localをドメインに持つ場合の対処となる。本来Azure ADと同期する場合は、オンプレADのドメインをインターネット上にて名前解決できるものにしなければならない。しかし、実際にはドメイン名の変更は困難を極めるので、ADのmail属性をAzure ADのユーザ名 (UPN) として設定することで回避する。

なお、mail属性が空欄の場合でも、ユーザ名から自動で[ユーザ名]@[テナント名].onmicrosoft.comという名前でAzure ADに同期できていることを確認している。

7. ドメインとOUのフィルタリング

「すべてのドメインとOUの同期」を指定し、「次へ」を選択する。

8. 一意のユーザー識別

そのまま「次へ」を選択する。

9. ユーザーおよびデバイスのフィルタリング

そのまま「次へ」を選択する。

10. オプション機能

そのまま「次へ」を選択する。

11. シングルサインオンを有効にする

「資格情報の入力」を押したのちDomain Admins権限のユーザを選択し、「次へ」を選択する。

12. 構成の準備完了

最後に設定内容を確認して、「インストール」を選択する。私の環境ではユーザ数は20程度しかないため5分程度で完了した。

Azure Portalにおいても、「Azure AD Connect」の「最終同期」が更新されるようになった。

さらに、Azure Portal上でオンプレADのユーザが表示されるようになり、同期に成功していることが確認できた。

同期したユーザにてAzure Portalへのログイン確認

最後に、実際に同期したユーザにてAzure Portalにログインできることを確認する。

同期されたAzure AD上のユーザ名 ([ユーザ名]@[テナント名].onmicrosoft.com) をユーザ名として入力し、オンプレADで設定したパスワード情報を使うことで、問題なくAzuer Portalにログインすることができた。

なお、シングルサインオンを有効にしたうえで、必要な設定を行うことで、ログインする際のユーザ名、パスワードの入力を省略し、シングルサインオンすることが可能となる。これは以下別記事にて記載することにする。

参考

人気の投稿