今回は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認証)で接続可否を評価できるようにする。
具体的には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アドレスは図に沿って設定していきます。
①Active Directoryの構築
・ドメインフォレストの構築
・認証するユーザとユーザを所属させるセキュリティグループの作成
ドメインフォレスト構築については特筆すべきことはなく、一般的なADの構築手順で行いますが本記事の本題からは逸れますので割愛します。
認証するユーザとユーザを所属させるセキュリティグループの作成も特殊な設定はありませんのでNPSで認証したいユーザとそのユーザが所属するセキュリティグループを作ってください。
以下は「test-user」というユーザに対して、セキュリティグループを作成&所属させる設定画面です。
後ほどNPSの設定で通信許可設定をする箇所を指定する設定が出ていますがその際にここで作成したセキュリティグループを指定します。
②CAサーバの構築
AD機能ができたところで、ADをインストールしたサーバとは別WindowsサーバでCA機能をインストールします。
インストール手順は他にわかりやすい記事がありますので、そちらをご参照ください。
上記の記事と同じくようにセットアップ種類は「エンタープライズ CA」を選択してください。
機能インストールが完了したら、NPSサーバ用のサーバ証明書を発行できるように発行テンプレートを作成します。
テンプレート発行
次にNPCサーバのサーバ証明書を発行していきます。管理コンソールの左側タブから「証明書テンプレート」を選択して、右クリックし、「管理」を選択します。
デフォルトで複数のテンプレートがあります。サーバ証明書であれば「Webサーバ」のテンプレートの流用で簡単に作成できるので、選択の上「テンプレートの複製」を行います。
- テンプレートの名前 =任意の名前
- テンプレートの表示名 =任意の名前
「拡張機能」タブの設定項目 ※確認のみ
アプリケーションポリシーの説明が「サーバ認証」になっていることを確認します。
※Webサーバのテンプレートを複製していればデフォルトでサーバ認証になっていると思います。
「サブジェクト名」タブの設定項目
- 「Active Directoryに情報から構築する」を選択
- サブジェクト名の形式 =完全な識別名
- 代わりのサブジェクト名に次の情報を含める =ユーザプリンシパル名(UPN)
「セキュリティ」タブの設定項目
- Authneticated Usersに「登録」の許可を付与 ※発行したいユーザが決まっている場合はそのユーザ所属OUでもOK
これでテンプレートの設定はOKです。では作成したテンプレートを有効化し、発行できるようにします。
再度「証明書のテンプレート」を右クリックし、新規作成-発行する証明書テンプレートを選択します。

先ほど作成したテンプレートが選択できるようになっていますので、OKをクリックします。これで証明書を発行できるようになります。
サーバ証明書の発行
ではサーバ証明書を発行していきましょう。
やり方は色々あると思いますが一番単純にWindowsの設定から行う方法をご紹介します。
まずスタートボタン横の検索欄に”証明書”と入力します。検索結果で「コンピューター証明書の管理」が出てくるので、これを選択します。

※何故か「ユーザ証明書の管理」が一番上に出てきますが、こっちではないです。
設定のツリーが表示されますので、「個人」-「証明書」を選択し、右クリックして「すべてタスク」から「新しい証明書の要求」を選択します。

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

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

登録が正常に完了すると設定のツリーの「個人」-「証明書」の中に発行した証明書が追加されていることを確認しましょう。
③NPSサーバの構築
NPS機能インストール
ここから本記事のメイン部分になります。NPS機能のインストールは他Windows機能と役割と同じくサーバマネージャの「役割」の追加から行います。
インストール手順は他にわかりやすい記事がありますので、そちらをご参照ください。
機能インストール後に管理画面のツリー最上部の「NPS(ローカル)」を右クリックして、「ActiveDirectoryにサーバを登録」をクリックし、実行します。

この作業を行うことで、NPSサーバにユーザーアカウントのダイヤルイン プロパティを読み取るアクセス許可を付与します。 登録後にNPSサーバーはADの[RAS and IAS Servers]グループに追加されています。
Radius Cleintの設定
次にRadius Client=今回の構成ではCisco Catalystの情報を登録していきます。
ややこしいですがRadius用語でRadius Clientは認証対象=クライアントPCではなく、認証送信元=スイッチやルータになります。
設定ツリーの「RADIUSクライアント」を右クリックし、「新規」を選択します。
フレンドリ名=登録名に任意の値を入力し、アドレスの部分にはNPSサーバから見たCisco CatalystのIPアドレスを登録します。先述のNW構成図で、NPSサーバのいる側のCisco CatalystのIPアドレスは172.16.1.3なので、その値を登録します。
共有シークレットですが、NPSサーバとCisco Catalystが通信する際のパスワードになりますので、任意の値を登録します。
その他はデフォルトのままでOKです。
認証ポリシー(接続要求ポリシーとネットワークポリシー)の設定
NPSの認証設定ですが主に接続要求ポリシーとネットワークポリシーで制御します。
接続要求ポリシーとは?
-
目的:認証要求をどこで処理するかを決定する。
-
役割:RADIUSクライアント(VPNサーバーやNASなど)からの接続要求を受け取ったときに、ローカルNPSで認証するか、別のRADIUSサーバーに転送するかを判断する。
-
主な条件
NASのIPアドレスや種類
接続プロトコル(PPP、IKEv2など)
時間帯など
ポイント:認証処理の場所を決めるだけで、アクセス許可の詳細(ユーザーが接続できるかどうか)は決めない。
今回の接続要求ポリシーは有線(Ethernet)接続でアクセスがあった場合にローカルNPSで認証するという内容で設定します。
まず接続要求ポリシーを作成していきます。

左側設定ツリーの「ポリシー」-「接続要求ポリシー」を選択し、右クリックで「新規作成」を行います
ポリシー名に任意の値を登録します。その他の部分は変更不要です。

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

今回は「有線(Ethernet)接続でアクセスがあった場合」なので「NASのポートの種類」を選択します。

※ここでのNASとはNetwork Access Serverのことです
次に具体的な種類の設定で「イーサネット」を選択します。 ※無線の場合はワイヤレスになります

次の認証要求の転送設定はデフォルト(このサーバーで要求を認証する)を選択します。

認証方法の指定では何も変更せず、デフォルトのままでOKえです。

接続の構成もデフォルトのままでOKです。

これで「完了」まで進めてもらえれば接続要求ポリシーはOKです。
ネットワークポリシーとは?
-
目的:ユーザーやデバイスが接続できるかどうかを決定する。
-
役割:認証後に、アクセス許可や制御条件を適用する。
-
主な条件
ユーザーグループ(ADグループ)
認証方法(EAP、MS-CHAPv2など)
接続時間帯
IPフィルタや帯域制限など
ポイント:接続要求が認証された後、実際にアクセスを許可するかどうかを決める。
今回のネットワークポリシーは有線(Ethernet)接続でアクセスがあった場合に特定のAD セキュリティグループに所属しているユーザのユーザ証明書を使い、EAP-TLSで認証するという内容で設定します。
左側設定ツリーの「ポリシー」-「ネットワークポリシー」を選択し、右クリックで「新規作成」を行います

接続要求ポリシーと同じく、ポリシー名は任意の値でOKです。

その他の値はデフォルトのままでOKです。
次に条件の設定ですが、今回は「特定のAD セキュリティグループに所属しているユーザのユーザ証明書を使い」という条件にしたいので、「Windowsグループ」を選択します。

ドメインツリーからグループを選択できるようになりますので、①Active Directoryの構築のときに作成したセキュリティグループを選択します。また接続要求ポリシーと同じくように「NASのポートの種類」から「イーサネット」を選択し、条件に追加します。
※「NASのポートの種類」はネットワークポリシーで設定しなくても、接続要求ポリシーで設定しているので動作しますが、管理面で条件がわかりやすくなるため、条件設定しています。
次にネットワークポリシーに合致した場合、どうするかを選択します。今回は「アクセスを許可する」を選択します。

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

セキュリティレベルの低いレベルの認証についてはデフォルトのままでOKです。本番環境では環境に合わせてレベルの低いものは無効化しましょう。

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

これで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のスタートボタン横の検索欄に「証明書」と入力し、検索候補の「ユーザ証明書の管理」を選択します。

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

「ActiveDirectory登録ポリシー」が選択されていることを確認し、次へクリックします。
どの証明書を要求するかの選択で、「ユーザー」にチェックを入れて、登録を実行します。

設定が問題なければこんな感じで成功画面が表示されます。

設定ツリーの「個人」-「証明書」に中にユーザ証明書が追加されています。
インストールした証明書の「詳細」タブの「サブジェクト代替名」に以下のようにプリンシパル名=ドメインユーザのFQDNがあることを確認しましょう。

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

有線接続時の認証設定
最後にClinetPC側NICで認証を有効化します
- IEEE802.1x認証を有効にする =チェック入れる
- ネットワークの認証方法の選択 = Microsoft スマートカードまたはその他証明書を選択する
- 接続のための認証方法 = このコンピュータの証明書を使う
- 信頼されたルート証明書機関 = 今回のCAサーバの証明書を選択
詳細設定をクリックし、証明書発行者にチェックを入れ、今回のCAサーバの証明書を選択します。

- 認証モードを指定する = ユーザーまたはコンピュータの認証を選択
これでClinetPC側の設定もOKなので、Cisco CatalystのVLAN99が設定されたポートにPCを接続して挙動を確認しましょう。
動作確認
NPSサーバ側ログ
NPSのイベントビュアーの「ネットワークポリシーとアクセスサービス」にNPSの認証ログが出力されます。

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

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

ClientPC側ログ
トラブルシューティング
認証開始されないもしくは認証がタイムアウトする
ClientPC側のログを確認しましょう。よくある原因は「PCがNPSサーバへNW的にアクセスできない」、「PCのNICで認証が有効になっていない」、「Cisco側設定でRadiusServerの宛先やポート番号、共通シークレットキーが違う」などです。
認証NGになる
NPSサーバ側ログとClientPC側のログを確認しましょう。NGログがあればそれを確認してなぜNGなのかを確認しましょう。よくあるパターンとして、接続要求ポリシー、ネットワークポリシーで複数のポリシーを作成しており、想定しているポリシー以外が適用され、そこでNGになっているパターンです。また発行した証明書の対象ユーザが、許可してセキュリティグループに所属していることも確認しましょう。
クライアントPCで証明書発行要求が失敗する
PCがドメイン参加できていない、PCにログインしているユーザに適切な権限が付与されていない場合が考えられます。また証明書のテンプレートのセキュリティ設定で、PCログインしているグループに適切な権限があるかを確認してください。
参考にしたサイト
























