RADIUSが喋れる機器/サービスを全部MFA対応にしてしまおう、という話し

# はじめに：この記事の目的

この記事は [Office 365 Advent Calendar 2017](https://adventar.org/calendars/2585) に参加して書いています。  

Office365を購入すると使用できる、Azure MFAで手軽にOffice365だけではなく、その他の社内サービス等のセキュリティレベルが向上できますよ、という紹介。
Office365の導入を迷われている企業や上司への説得の材料の一つとして参考にしていただければな、と考えています。

# この記事の最終目的

MS製RAIDUSサーバであるNPS(Network Policy Service)にAzureMFA認証のアドオンをインストールすることで、RADIUS認証ができるサービス、機器に対して何でもかんでもAzure MFAを設定できる **「認証基盤」** 作りを最終目的としています。

# Azure MFAって？

Azure MFA(Azure Multi-Factor Authentication)とはMS製の多要素認証基盤です。
Office365を契約すると無償で使用できるAzure Active Directoryの機能の一部です。

「多要素認証って？」という方は [こちら](http://ascii.jp/elem/000/001/136/1136300/)を参照ください。
ざっくり説明すると、ユーザIDとパスワードによる認証ではセキュリティレベルとしては脆弱なのでスマホ等を使った、認証を「追加」することでセキュリティレベルを向上させましょう、という考え方です。
(ID/パスワード "だけ" の認証は今や **時代遅れ** ですパスワードは漏れるものです。パスワードが漏れても問題ないように多要素認証を使うわけです)

多要素認証ツールとして、有名どころとしては「Google Authenticator」などがあげられると思いますが、「Google Authenticator」などに代表される多要素認証ツールとしては下記デメリットがあります。

```
多要素認証を求められるときにいちいち6桁のワンタイムパスワードを入力しなければいけない。
```

上記については、認証する頻度が低ければそこまでネックにはならないのですが、「認証する頻度が低い」なんてことは、そんなことはほぼほぼありえ無いので6桁のワンタイムパスワードを入力するのが意外とおっくうになるのです。

その点、Azure MFAは「Azure Authenticator」というiOS/Androidアプリを使うことで

```
多要素認証を求められると、スマホにポップアップが表示されるので、ポップアップに対して「承認」と押すだけ
```

なので非常に簡単に多要素認証ができます。これは多要素認証に馴染みのない社員でも「ポップアップでたら承認ボタン押すだけでしょ」というイメージを持ってもらうことができるので割りと抵抗感なく受け入れてくれると思います。

# 構築手順概要

0. NPSサーバをインストール。 ※ インストールするサーバはWindows Server 2008 R2 SP1以上である必要があります。
1. NPS拡張機能関連のexeを3つインストールする。
2. PowerShellを起動して、Azure Active Directoryとの連携を行う。

やることはこれだけ！ *ｶﾝﾀﾝ!*

# 認証の流れ

本ページで構築したNPSを使用した認証の場合、下記のようになります。

0. Active DirectoryのユーザID/パスワードで認証。
1. AD認証が成功した場合、Azure Active Directoryへ認証要求をしてAzureMFAによる認証を求める(このタイミングでAzure Authenticatorアプリに認証のポップアップが通知)
2. AzureMFAによる認証が成功すると機器/サービスへのログインができるようになる。

上記については下記図がわかりやすいです。
[■参照元:Azure Multi-Factor Authentication と既存の NPS インフラストラクチャの統合](https://docs.microsoft.com/ja-jp/azure/multi-factor-authentication/multi-factor-authentication-nps-extension)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/168390/a8ddb86d-5bdf-8d36-4311-f436622c1038.png)

# 構築手順

※前提：Active Directory環境が構築済みである前提の手順となります。

0. サーバーマネージャを起動し、「役割と機能の追加」からネットワークポリシーサーバを選択。 
![image.png](https://qiita-image-store.s3.amazonaws.com/0/168390/0d6ab2b2-b961-e75e-48b7-5267bb8b00ac.png)<br><br>
1. NPSを起動し、[NPS (ローカル)] を右クリックし、[Active Directory にサーバーを登録] をクリックします。[Active Directory へのネットワーク ポリシー サーバーの登録] ダイアログ ボックスが表示されたら、[OK] をクリック。<br><br>
1. [Visual C++ Redistributable Packages for Visual Studio 2013](https://www.microsoft.com/en-us/download/details.aspx?id=40784) をインストール。(すべて「はい」でインストール)<br><br>
2. [AdministrationConfig-V1.1.166.0-GA.msi](https://connect.microsoft.com/site1164/Downloads/DownloadDetails.aspx?DownloadID=59185) をインストール。(すべて「はい」でインストール)<br><br>
3. [NPS拡張](https://www.microsoft.com/en-us/download/details.aspx?id=54688) をインストール。(すべて「はい」でインストール)<br><br>
4. [Azure Portal](https://portal.azure.com/)にログインし、[Azure Active Directory] - [プロパティ] の ディレクトリIDの値を控える。(あとでつかいます)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/168390/14106d0d-972e-3f2c-a664-50c7ebf4cd37.png)<br><br>  
5. コマンドプロンプトかPowershellを管理者権限で起動し、 `cd "C:\Program Files\Microsoft\AzureMfa\Config"` と入力。<br><br>
6. 続いて、 `.\AzureMfaNpsExtnConfigSetup.ps1` と入力。<br><br>
7. ディレクトリIDを聞かれるので手順6で確認したIDを入力。<br><br>
8. 認証のポップアップが開くので、Office365の(Azureの)全体管理者のIDとパスワードを入力。

以上でAzureMFAを使うNPSサーバ(RADIUSサーバ)の完成です。あとはRADIUSを喋れる機器/サービスを連携するだけです。たったこれだけでセキュアな認証基盤の出来上がりです。

参考URL：
[Azure Multi-Factor Authentication と既存の NPS インフラストラクチャの統合](https://docs.microsoft.com/ja-jp/azure/multi-factor-authentication/multi-factor-authentication-nps-extension)
[Active Directory ドメイン サービスに NPS サーバーを登録する](https://technet.microsoft.com/ja-jp/library/cc754878(v=ws.11).aspx)


# 実践編

あとは、RADIUS認証可能な機器/サービスをNPSサーバに連携するだけです。
(ここはWeb上にNPSと連携されている事例がたくさんあるので詳細手順は割愛)

たとえば、

[NW機器ログインにMFA認証を求めたり](http://sinclains.hateblo.jp/entry/2013/10/26/233644)

[無線LAN接続時にMFA認証を求めたり](http://www.ntt-at.co.jp/product/4ipnet/blog/lan/20170523.html)

[LinuxログインにMFA認証を求めたり](http://atsuokun.hatenablog.com/entry/2017/02/22/183718)

[リモートデスクトップログインにMFA認証を求めたり](http://atsuokun.hatenablog.com/archive/2017/02/15)

などなどができたりするようになります！

# トラブルシュート編

「いざNPS拡張入りNPSサーバと連携させたはいいものの、認証がうまくいかない、、」というときは一旦、Azure側の認証を切って、NPS単体だけで認証できるかをチェックするのも有用です。
(経験則上、ほとんどのケースがAzure側に原因はなく、NPS設定の問題だったりします汗)

そんなときはNPS拡張をアンインストールすれば、NPS単体の認証にすぐ戻せますので、NPSが悪いのか、はたまた、NPS拡張機能が悪さをしているのかがわかります。
(原因解決したらNPS拡張を再インストールすることも忘れずに！)

# さいごに

Office365はOffice製品を使うための製品ではなく、セキュリティ向上にも役立つ製品だったりするのです。
「Officeを使うためだけに毎月コストが発生するのはなー。。」と思っている方(かくいう私もそうでした)の考えを改めるきっかけになったら幸いです。