1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WindowsServer ネットワークポリシーサーバ(NPS)で証明書認証(Radius認証)環境の構築

1
Posted at

今回はWindows Server2025の各機能(AD/NPS/CA)とCisco L3スイッチを使用して、L3スイッチにPCを有線接続した際にNW接続してもOKかどうか認証する環境(Radius認証環境)を設定します。また「不正端末の接続を防ぐ」という目的で、「ユーザ証明書が入っている端末のみLAN接続を許可する」という環境にします。

  • Windows ServerのNPS(Network Policy Server)機能とは?

ネットワークアクセスの「認証・承認・アカウンティング(AAA)」を一元管理するための機能です。RADIUSサーバーやRADIUSプロキシとして動作し、企業ネットワークのセキュリティとアクセス制御を強化、設定する機能

  • Windows ServerのCA(証明機関)機能とは?

Windows Server上でデジタル証明書を発行・管理するための機能
 ※「Active Directory 証明書サービス(AD CS)」の一部

今回のゴール

L3スイッチ(Cisco Catalyst3750)の特定ポートに、PCを有線接続した際に証明書を使ったRadius認証(EAP-TLS認証)で接続可否を評価できるようにする。

NPS_構成図.png

 

具体的にはVLAN 99が設定されたSWのPortにクライアントPCを接続した際に、VLAN1が設定されたポートを通りNPSサーバで認証されるようにします。認証方式は証明書を使ったEAP-TLSで行います。

そもそもEAP-TLS認証とは?

EAP-TLSとは、PPP認証で利用されるEAP認証プロトコルの一種で、トランスポート層(OSIモデルにおける第4層)の通信経路を特殊なプロトコルによって暗号化し、デジタル証明書の受け渡しによって相互に認証を行う方式のことである。標準化団体のIETFによってRFC 2716として定義されている。
EAP-TLSでは、クライアントとサーバーの両方が電子証明書を発行し、相互に認証が行われる。相互にデジタル証明書を発行・管理するため、手間とコストはかかるものの、高度なセキュリティ性を保つことができる。

【参考】EAP-TLSとは?

EAP-TLS≒サーバとクライアント間で証明書を使って認証する方式

その他の認証方式について

・PEAP認証

PEAPとは、PPP(Point to Point Protocol)に認証機能を追加した拡張プロトコルのうち、サーバーとクライアントで相互認証を行うプロトコルのことである。米Microsoft、Cisco Systems、RSA Securityの3社によって開発された。
PEAPでは、認証を行うサーバー側で電子証明書を発行し、またクライアント側ではIDとパスワードを用いることによって、サーバーとクライアントで相互認証を行っている。暗号化技術にはWEP(Wired Equivalent Privacy)が用いられており、定期的にWEP暗号文の生成・配布が行われることによってWEP暗号のセキュリティ性の向上が図られている。

【参考】PEAPとは?

PEAP≒サーバ証明書は発行するがサーバとクライアント間認証はユーザIDとPWを使って認証する

クライアントPC側の設定でLANが接続されるたびに認証開始することもできますし、クライアントPC(Windows)のログイン時に利用したログインID/PWを使って自動的にログインすることも可能です。

前提環境

Hyper-v上に以下機能のWindowsServerをデプロイする。

Microsoft的には同一サーバにADとCAの同居は非推奨のため、AD/NPS機能とCA機能は別々の仮想サーバで構築しています。

※物理サーバで全て構築すると後片付けが面倒なので、Hyper-V上に構築していますが物理サーバでも同じ設定は可能です。

【AD/NPSサーバにインストールする機能】

  • Windows Network & Policy Server(NPS)
  • Active Directory ドメインサービス(ADDS)

【CAサーバにインストールする機能】

  • Active Directory 証明書サービス(CA Server)

Radius Clientとして Cisco Catalyst3750(L3スイッチ)を利用する

利用するCisco IOSが古いためコマンドは旧ISOのものです。
他メーカ機器でもRadius認証に対応しているものであればどれでもよいです。

有線LAN接続可能でドメイン参加済みクライアントPCを用意する

今回は「L3スイッチにPCを有線接続した際にNW接続してもOKかどうかRadius認証する」という内容なので、有線LANポートのあるPCが必要ですが、もちろん無線LANを対象にRadius認証も可能です。

設定の流れ

今回のNW構成は下記の図のような形を予定しています。通信先IPや割り当てるIPアドレスは図に沿って設定していきます。

NPS_NW図.png

①Active Directoryの構築

・ドメインフォレストの構築
・認証するユーザとユーザを所属させるセキュリティグループの作成

ドメインフォレスト構築については特筆すべきことはなく、一般的なADの構築手順で行いますが本記事の本題からは逸れますので割愛します。
認証するユーザとユーザを所属させるセキュリティグループの作成も特殊な設定はありませんのでNPSで認証したいユーザとそのユーザが所属するセキュリティグループを作ってください。

以下は「test-user」というユーザに対して、セキュリティグループを作成&所属させる設定画面です。

image.png

image.png

後ほどNPSの設定で通信許可設定をする箇所を指定する設定が出ていますがその際にここで作成したセキュリティグループを指定します。

②CAサーバの構築

AD機能ができたところで、ADをインストールしたサーバとは別WindowsサーバでCA機能をインストールします。
インストール手順は他にわかりやすい記事がありますので、そちらをご参照ください。

上記の記事と同じくようにセットアップ種類は「エンタープライズ CA」を選択してください。

機能インストールが完了したら、NPSサーバ用のサーバ証明書を発行できるように発行テンプレートを作成します。

テンプレート発行

次にNPCサーバのサーバ証明書を発行していきます。管理コンソールの左側タブから「証明書テンプレート」を選択して、右クリックし、「管理」を選択します。

image.png

デフォルトで複数のテンプレートがあります。サーバ証明書であれば「Webサーバ」のテンプレートの流用で簡単に作成できるので、選択の上「テンプレートの複製」を行います。

image.png

「全般」タブの設定項目
image.png

  • テンプレートの名前 =任意の名前
  • テンプレートの表示名 =任意の名前

「拡張機能」タブの設定項目 ※確認のみ

image.png

アプリケーションポリシーの説明が「サーバ認証」になっていることを確認します。
※Webサーバのテンプレートを複製していればデフォルトでサーバ認証になっていると思います。

「サブジェクト名」タブの設定項目

image.png

  • 「Active Directoryに情報から構築する」を選択
  • サブジェクト名の形式  =完全な識別名
  • 代わりのサブジェクト名に次の情報を含める =ユーザプリンシパル名(UPN)

「セキュリティ」タブの設定項目

image.png

  • Authneticated Usersに「登録」の許可を付与 ※発行したいユーザが決まっている場合はそのユーザ所属OUでもOK

これでテンプレートの設定はOKです。では作成したテンプレートを有効化し、発行できるようにします。

再度「証明書のテンプレート」を右クリックし、新規作成-発行する証明書テンプレートを選択します。
image.png

先ほど作成したテンプレートが選択できるようになっていますので、OKをクリックします。これで証明書を発行できるようになります。

サーバ証明書の発行

ではサーバ証明書を発行していきましょう。
やり方は色々あると思いますが一番単純にWindowsの設定から行う方法をご紹介します。

まずスタートボタン横の検索欄に”証明書”と入力します。検索結果で「コンピューター証明書の管理」が出てくるので、これを選択します。
image.png

※何故か「ユーザ証明書の管理」が一番上に出てきますが、こっちではないです。

設定のツリーが表示されますので、「個人」-「証明書」を選択し、右クリックして「すべてタスク」から「新しい証明書の要求」を選択します。
image.png

続いて「ActiveDirectory登録ポリシー」が選択されていることを確認し、次へをクリックします。
image.png

発効可能な証明書一覧が表示されますので、先ほど作成したテンプレートにチェックをいれて、「登録」を実行します。
image.png

登録が正常に完了すると設定のツリーの「個人」-「証明書」の中に発行した証明書が追加されていることを確認しましょう。

③NPSサーバの構築

NPS機能インストール

ここから本記事のメイン部分になります。NPS機能のインストールは他Windows機能と役割と同じくサーバマネージャの「役割」の追加から行います。
インストール手順は他にわかりやすい記事がありますので、そちらをご参照ください。

機能インストール後に管理画面のツリー最上部の「NPS(ローカル)」を右クリックして、「ActiveDirectoryにサーバを登録」をクリックし、実行します。
image.png

この作業を行うことで、NPSサーバにユーザーアカウントのダイヤルイン プロパティを読み取るアクセス許可を付与します。 登録後にNPSサーバーはADの[RAS and IAS Servers]グループに追加されています。

ユーザーアカウントのダイヤルイン プロパティとは?
実はドメインユーザそれぞれにNPSでの認証を利用できるようにするかという設定があります。下記画像の「リモートアクセス許可」の項目が該当します。

AD_DomainUser設定#2.png

画像の設定では「NPSネットワークポリシーでアクセスを制御」が選択されているので、NPSのポリシー次第でこのユーザーアカウントを使ったリモートアクセス可否が決定されます。

【参考サイト】
https://learn.microsoft.com/ja-jp/windows-server/networking/technologies/nps/nps-manage-register?wt.mc_id=MVP_407731

Radius Cleintの設定

次にRadius Client=今回の構成ではCisco Catalystの情報を登録していきます。
ややこしいですがRadius用語でRadius Clientは認証対象=クライアントPCではなく、認証送信元=スイッチやルータになります。

設定ツリーの「RADIUSクライアント」を右クリックし、「新規」を選択します。

Radius_client登録31.png

フレンドリ名=登録名に任意の値を入力し、アドレスの部分にはNPSサーバから見たCisco CatalystのIPアドレスを登録します。先述のNW構成図で、NPSサーバのいる側のCisco CatalystのIPアドレスは172.16.1.3なので、その値を登録します。
共有シークレットですが、NPSサーバとCisco Catalystが通信する際のパスワードになりますので、任意の値を登録します。
その他はデフォルトのままでOKです。

Radius_client登録#2.png

登録後はこんな感じの表示になります。
Radius_client登録#3.png

認証ポリシー(接続要求ポリシーとネットワークポリシー)の設定

NPSの認証設定ですが主に接続要求ポリシーとネットワークポリシーで制御します。

接続要求ポリシーとは?

  • 目的:認証要求をどこで処理するかを決定する。

  • 役割:RADIUSクライアント(VPNサーバーやNASなど)からの接続要求を受け取ったときに、ローカルNPSで認証するか、別のRADIUSサーバーに転送するかを判断する。

  • 主な条件
    NASのIPアドレスや種類
    接続プロトコル(PPP、IKEv2など)
    時間帯など

ポイント:認証処理の場所を決めるだけで、アクセス許可の詳細(ユーザーが接続できるかどうか)は決めない。

今回の接続要求ポリシーは有線(Ethernet)接続でアクセスがあった場合にローカルNPSで認証するという内容で設定します。

まず接続要求ポリシーを作成していきます。
ポリシー設定_接続要求ポリシー#1.png
左側設定ツリーの「ポリシー」-「接続要求ポリシー」を選択し、右クリックで「新規作成」を行います

ポリシー名に任意の値を登録します。その他の部分は変更不要です。
ポリシー設定_接続要求ポリシー#2.png

「条件の指定」で「追加」を選択し、どのような場合に接続ポリシーを適用するかを設定していきます。
ポリシー設定_接続要求ポリシー#3.png

今回は「有線(Ethernet)接続でアクセスがあった場合」なので「NASのポートの種類」を選択します。
ポリシー設定_接続要求ポリシー#4.png

※ここでのNASとはNetwork Access Serverのことです

次に具体的な種類の設定で「イーサネット」を選択します。 ※無線の場合はワイヤレスになります
ポリシー設定_接続要求ポリシー#5.png

追加できるとこんな感じで設定した条件と値が表示されます。
ポリシー設定_接続要求ポリシー#9.png

次の認証要求の転送設定はデフォルト(このサーバーで要求を認証する)を選択します。
ポリシー設定_接続要求ポリシー#6.png

認証方法の指定では何も変更せず、デフォルトのままでOKえです。
ポリシー設定_接続要求ポリシー#7.png

接続の構成もデフォルトのままでOKです。
ポリシー設定_接続要求ポリシー#8.png
これで「完了」まで進めてもらえれば接続要求ポリシーはOKです。

ネットワークポリシーとは?

  • 目的:ユーザーやデバイスが接続できるかどうかを決定する。

  • 役割:認証後に、アクセス許可や制御条件を適用する。

  • 主な条件
    ユーザーグループ(ADグループ)
    認証方法(EAP、MS-CHAPv2など)
    接続時間帯
    IPフィルタや帯域制限など

ポイント:接続要求が認証された後、実際にアクセスを許可するかどうかを決める。

今回のネットワークポリシーは有線(Ethernet)接続でアクセスがあった場合に特定のAD セキュリティグループに所属しているユーザのユーザ証明書を使い、EAP-TLSで認証するという内容で設定します。

左側設定ツリーの「ポリシー」-「ネットワークポリシー」を選択し、右クリックで「新規作成」を行います
ポリシー設定_ネットワークポリシー#1.png

接続要求ポリシーと同じく、ポリシー名は任意の値でOKです。
ポリシー設定_ネットワークポリシー#2.png
その他の値はデフォルトのままでOKです。

次に条件の設定ですが、今回は「特定のAD セキュリティグループに所属しているユーザのユーザ証明書を使い」という条件にしたいので、「Windowsグループ」を選択します。
ポリシー設定_ネットワークポリシー#3.png

ドメインツリーからグループを選択できるようになりますので、①Active Directoryの構築のときに作成したセキュリティグループを選択します。また接続要求ポリシーと同じくように「NASのポートの種類」から「イーサネット」を選択し、条件に追加します。

image.png

※「NASのポートの種類」はネットワークポリシーで設定しなくても、接続要求ポリシーで設定しているので動作しますが、管理面で条件がわかりやすくなるため、条件設定しています。

条件指定はこんな感じになります。
image.png

次にネットワークポリシーに合致した場合、どうするかを選択します。今回は「アクセスを許可する」を選択します。
ポリシー設定_ネットワークポリシー#6.png

続いて暗号化・認証方式を設定していきます。今回はEAP-TLS認証方式にするので、「EAPの種類」下の「追加」をクリックし、認証方式として「Microsoft スマートカードまたはその他証明書」を選択します。
ポリシー設定_ネットワークポリシー#7.png

セキュリティレベルの低いレベルの認証についてはデフォルトのままでOKです。本番環境では環境に合わせてレベルの低いものは無効化しましょう。
ポリシー設定_ネットワークポリシー#9.png

「Microsoft スマートカードまたはその他証明書」選択して、「編集」を行い、どの証明書を利用するか設定していきます。ここで選択するのはNPSサーバのサーバ証明書です。②CAサーバの構築で発効したサーバ証明書を選択します。
image.png

制約の構成はデフォルトのままでOKです。
ポリシー設定_ネットワークポリシー#10.png

設定の構成もデフォルトのままでOKです。
ポリシー設定_ネットワークポリシー#11.png

これでNPSサーバの設定も完了です。

④Cisco Catalystの設定

Cisco設定コンフィグは下記の内容で投入します。あくまで検証用設定なので、実運用する際にはちゃんとセキュリティ設定しましょう!また旧バージョンのIOSなので、最近の機種だとコマンドが違うと思います。ご参考までに。

test-cisco#show running-config

Building configuration...

Current configuration : 3048 bytes

!

version 12.2

no service pad

service timestamps debug datetime msec

service timestamps log datetime msec

no service password-encryption

!

hostname test-cisco

!

boot-start-marker

boot-end-marker

!

logging buffered 512000

enable secret 5 任意のパスワード

enable password 任意のパスワード

!

username 任意のユーザ名 password 0 任意のパスワード

aaa new-model

!

!

aaa authentication login default local

aaa authentication dot1x default group radius

aaa authorization network default group radius

aaa accounting dot1x default start-stop group radius

aaa accounting system default start-stop group radius

!

!

!

aaa session-id common

clock timezone JST 9


system mtu routing 1500

ip subnet-zero

ip routing

ip name-server 172.16.1.1

!

!

!

dot1x system-auth-control

!

!

!

!

!

archive

 log config

  notify syslog contenttype plaintext

spanning-tree mode pvst

spanning-tree etherchannel guard misconfig

spanning-tree extend system-id

!

vlan internal allocation policy ascending

lldp run

!

!

!

!

interface FastEthernet1/0/1

 switchport mode access

!


interface FastEthernet1/0/24

 switchport access vlan 99

 switchport mode access

 authentication port-control auto

 mab

 dot1x pae authenticator  →このInterfaceをRadius認証対象とする設定

 spanning-tree portfast


!

interface Vlan1

 ip address 172.16.1.3 255.255.255.0

!

interface Vlan2

 no ip address

!

interface Vlan99

 ip address 192.168.99.1 255.255.255.0

!

ip default-gateway 172.16.1.1

ip classless

ip route 172.16.1.0 255.255.255.0 Vlan1

ip route 192.168.99.0 255.255.255.0 Vlan99

ip http server

!

!

ip radius source-interface Vlan1 →NPSサーバと通信するinterface設定

logging facility local5

!

radius-server host 172.16.1.1 auth-port 1812 acct-port 1813 key 任意のパスワード →NPSサーバのIPとポート番号とNPSで設定したシークレットキー

radius-server host 172.16.1.1 auth-port 1645 acct-port 1646 key 任意のパスワード →NPSサーバのIPとポート番号とNPSで設定したシークレットキー 
 ※Port1645と1646は最近のWindowsServerNPSでは利用しないかも

!

control-plane

!

!

line con 0

 logging synchronous

line vty 0 4

 password 任意のパスワード

 logging synchronous

line vty 5 15

 password 任意のパスワード

!

end



⑤Client PCの設定

クライアント証明書の発行

PC側にRadius(EAP-TLS)で利用する証明書をインストールしていきます。PCはドメイン参加済みで、ログインユーザは③NPSサーバ設定のときに指定したセキュリティグループに所属しているドメインユーザである必要があります。

PCのスタートボタン横の検索欄に「証明書」と入力し、検索候補の「ユーザ証明書の管理」を選択します。
証明書要求#1.png

設定ツリーの「個人」-「証明書」を選択し、「すべてのタスク」から「新しい証明書の要求」をクリックします。
証明書要求#2.png

「ActiveDirectory登録ポリシー」が選択されていることを確認し、次へクリックします。

証明書要求#3.png

どの証明書を要求するかの選択で、「ユーザー」にチェックを入れて、登録を実行します。
証明書要求#4.png

設定が問題なければこんな感じで成功画面が表示されます。
証明書要求#5.png
設定ツリーの「個人」-「証明書」に中にユーザ証明書が追加されています。

インストールした証明書の「詳細」タブの「サブジェクト代替名」に以下のようにプリンシパル名=ドメインユーザのFQDNがあることを確認しましょう。
image.png

また拡張キー使用方法にクライアント証明書が含まれていることを確認しましょう。
証明書要求#7.png

有線接続時の認証設定

最後にClinetPC側NICで認証を有効化します

PCのNICのアダプター設定のプロパティを開きます。
image.png

  • IEEE802.1x認証を有効にする =チェック入れる
  • ネットワークの認証方法の選択 = Microsoft スマートカードまたはその他証明書を選択する

画面下部の「追加の設定」をクリックします。
NIC_認証設定#2.png

  • 接続のための認証方法 = このコンピュータの証明書を使う
  • 信頼されたルート証明書機関 = 今回のCAサーバの証明書を選択

詳細設定をクリックし、証明書発行者にチェックを入れ、今回のCAサーバの証明書を選択します。
NIC_認証設定#3.png

NIC_認証設定#4.png

「ネットワークの認証方法の選択」横の設定をクリックします。
NIC_認証設定#5.png

  • 認証モードを指定する = ユーザーまたはコンピュータの認証を選択

これでClinetPC側の設定もOKなので、Cisco CatalystのVLAN99が設定されたポートにPCを接続して挙動を確認しましょう。

動作確認

NPSサーバ側ログ

NPSのイベントビュアーの「ネットワークポリシーとアクセスサービス」にNPSの認証ログが出力されます。
event_viewer.png

認証が成功していればこんな感じでアクセス許可のログがでます。
image.png

どのポリシーが適用されたのかもログ内(認証の詳細セクション)で確認できます。
image.png

ClientPC側ログ

PC側のイベントビューアでも認証ログは表示されます。
image.png

トラブルシューティング

認証開始されないもしくは認証がタイムアウトする

ClientPC側のログを確認しましょう。よくある原因は「PCがNPSサーバへNW的にアクセスできない」、「PCのNICで認証が有効になっていない」、「Cisco側設定でRadiusServerの宛先やポート番号、共通シークレットキーが違う」などです。

認証NGになる

NPSサーバ側ログとClientPC側のログを確認しましょう。NGログがあればそれを確認してなぜNGなのかを確認しましょう。よくあるパターンとして、接続要求ポリシー、ネットワークポリシーで複数のポリシーを作成しており、想定しているポリシー以外が適用され、そこでNGになっているパターンです。また発行した証明書の対象ユーザが、許可してセキュリティグループに所属していることも確認しましょう。

クライアントPCで証明書発行要求が失敗する

PCがドメイン参加できていない、PCにログインしているユーザに適切な権限が付与されていない場合が考えられます。また証明書のテンプレートのセキュリティ設定で、PCログインしているグループに適切な権限があるかを確認してください。

参考にしたサイト

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?