Cisco DuoのDuo Network Gateway(Web)を立ててみた
こんにちは。ネットワークソリューション特集 編集部です。
今回は、Cisco DuoのDuo Network Gateway(Web)を検証してみました。
Duo Network Gatewayとは
Duo Network Gateway(以下、DNG)はWeb or SSH通信を安全に通信するためのリバースプロキシサーバです。
DNGで多要素認証をしなければ内部サーバにアクセスできません。
ライセンスはDuo Beyondが必要です。

Duo Network Gatewayの構築
サーバ要求スペックについてはメーカドキュメントを参照してください。
OS、ミドルウェアについてはLinux上のDockerで動作します。
構築手順はメーカドキュメントを参照してください。
今回はCentOS7上に構築しました。
Install DockerからInstall Duo Network Gatewayまではオンラインドキュメントをコピペで問題ないです。
1.DNGのインストール完了後、https://URL-OF-NETWORK-GATEWAY:8443でアクセスします。
DNGのFQDN(ホスト名)はクライアントが名前解決できてアクセスできる必要があります。
その他の設定はデフォルトで問題ないです。

2.Primary Authenticationの設定をします。今回はDuo Network Gateway – Single Sign-Onと連携させます。
Duo Admin Portal(https://admin.duosecurity.com/)にアクセス後、「Application」->「Duo Network Gateway」を選択します。


SAMLパラメータ、証明書を控えておきます。「Domain name」はDNGのFQDNを設定します。

3.DNG設定画面で先程控えたSAMLパラメータと証明書をインポートします。

4.Duo Network Gateway – Web Applicationの設定をします。
「Application」->「Duo Network Gateway – Web Application」 を選択します。

3つのパラメータを控えておきます。

5.DNGのApplication設定画面で「4」で控えたパラメータを設定します。

外部接続用のFQDNを設定します。注意事項に記載がありますがDNGのFQDNをCNAMEに設定する必要があります。
証明書はLet’s Encryptの自動更新サービスも利用可能です。(今回はOpenSSLで自己証明書を作成しました)

次に内部WebサーバのURLを記載します。FQDNで記載する場合はDNGが名前解決できる必要があります。

以上でDNGの設定は完了です。
IdPは前回設定したAzure ADを利用したのですが、今回のハマリポイントでした。
Duoドキュメントに記載がありますが、DNGからAzure ADへのUsername attributeで渡すのですが初期設定ではAzure AD側でUsername attributeが無いためエラーになります。
Duo Network Gateway uses the Username attribute when authenticating. We’ve mapped the bridge attribute to Duo Single Sign-On supported authentication source attributes as follows:
そのため、Username attributeを認識するよう「ユーザー属性とクレーム」に追加する必要があります。

今回は、Usernameとuser.userprincipalnameを紐付けました。
Azure ADへの追加方法については前回の記事を参照ください。
今回は「Cisco DuoのDuo Network Gateway」を検証しました。
DNGは多要素認証後にしかアクセスできないため安全にサーバ公開が可能になります。