OneLoginのRADIUSを使ってAWS WorkSpacesのMFAを実現したときに詰まったところ
OneLoginのRADIUSを使ってAWS WorkSpacesのMFAを実現したときに詰まったところ:
基本的に以下の2つの記事どおりにやっていけば問題ないのですが、詰まったところがあったので書いておきます。
マニュアルに書いてある必要要件は満たしているはずなのに、インストーラーが先に進まない。
原因は結構単純で、そもそもWindows Serverに
ユーザー同期も問題なく、ID/PWでログインできることは確認できたのですが、MFA有効にしてOTPを送ってもOneLogin RADIUSでRejectされました。
PasswordかOTPが正しくないのかと思いましたが、OneLoginの画面には問題なくログインできました。
今回初めて存在を知って触ったんですが、
OTPは問題ないとしたら、OneLogin RADIUSがなにかおかしいのかなと思い
使っていた環境が1812ポートのOutbound閉じてた。
オプションいろいろ盛ってみて再度確認。
OneLoginのRADIUSにて、Attributeで設定できる
属性値ペアで渡せるものは定義されており、ベンダ特有の属性値を作るのは推奨されていない。
だからOTPを渡すときに
ここまでくるとさすがに原因がわかりました。
OneLogin RADIUSのAttribute設定が、AWSのAD Connectorが送っている値とかみ合っていないことが原因です。
radtest使うまでは
AWSのマニュアルを探しても、どう送っているのか見あたらなかったので、ここからは総当たりです。
Attributeの設定には以下の選択項目があります。
一応両方試してみましたが、うちの環境ではこのパターンでのみログインできました。
ServerWorksさんのブログにキャプチャでRADIUSのAttribute設定が載っていました。見逃していた。。。
ここは間違えなかったですが、最初に紹介したブログに書かれているIPだと設定が古いです。
Configure the RADIUS Server Interface - OneLogin Knowledge Base
US側なら
基本的に以下の2つの記事どおりにやっていけば問題ないのですが、詰まったところがあったので書いておきます。
-
OneLoginを使ってWorkSpacesでMFAをしてみた | DevelopersIO -
OneLoginのMFAを利用してWorkSpacesの2段階認証を実現する – サーバーワークスエンジニアブログ
TL;DR
- OneLogin AD Conectorがインストールできない
- マニュアルの必須要件を確認しよう
-
AD Domain Serviceを事前に入れておこう
- AWS WordspacesのVDIに
ID/PWでは入れるけどMFA有効にすると入れない
-
radtestでRADIUSをテストしよう - RADIUSにどの属性値を使ってOTPを投げているか確認しよう、確認できなかったら総当たりで
-
OneLogin AD Conectorがインストールできない
マニュアルに書いてある必要要件は満たしているはずなのに、インストーラーが先に進まない。原因は結構単純で、そもそもWindows Serverに
AD Domain Service をインストールする前だったので入らなかったようです。AD Domain Service を入れた後に起動したら問題なくインストールできました。
OneLogin RADIUSにRejectされる
ユーザー同期も問題なく、ID/PWでログインできることは確認できたのですが、MFA有効にしてOTPを送ってもOneLogin RADIUSでRejectされました。PasswordかOTPが正しくないのかと思いましたが、OneLoginの画面には問題なくログインできました。
FreeRADIUSの出番
今回初めて存在を知って触ったんですが、 radtest というコマンドでRADIUSへ問い合わせできます。OTPは問題ないとしたら、OneLogin RADIUSがなにかおかしいのかなと思い
radtest から叩いてみました。
インストール
# apt-get -y install freeradius
疎通できてないときのログ
使っていた環境が1812ポートのOutbound閉じてた。# radtest user password 52.34.255.206 1812 secret
Sending Access-Request of id 174 to 52.34.255.206 port 1812
User-Name = "user"
User-Password = "password"
NAS-IP-Address = 172.17.0.3
NAS-Port = 1812
Message-Authenticator = 0x00000000000000000000000000000000
Sending Access-Request of id 174 to 52.34.255.206 port 1812
User-Name = "user"
User-Password = "password"
NAS-IP-Address = 172.17.0.3
NAS-Port = 1812
Message-Authenticator = 0x00000000000000000000000000000000
Sending Access-Request of id 174 to 52.34.255.206 port 1812
User-Name = "user"
User-Password = "password"
NAS-IP-Address = 172.17.0.3
NAS-Port = 1812
Message-Authenticator = 0x00000000000000000000000000000000
radclient: no response from server for ID 174 socket 3
# traceroute -U -p 1812 52.34.255.206
入力値が正しくないときのログ
- OneLogin RADIUS Attribute
- User-Name
SAMAccountName
- User-Password
Password
- User-Name
# radtest user password 52.34.255.206 1812 secret
Sending Access-Request of id 92 to 52.34.255.206 port 1812
User-Name = "user"
User-Password = "password"
NAS-IP-Address = 172.17.0.3
NAS-Port = 1812
Message-Authenticator = 0x00000000000000000000000000000000
rad_recv: Access-Challenge packet from host 52.34.255.206 port 1812, id=92, length=168
Reply-Message = "Please enter your one-time password (OTP). If you do not have an OTP, please register an authentication device in your OneLogin user profile."
State = 0x353535
MFA必須を外してID/PWだけで試したときのログ
- OneLogin RADIUS Attribute
- User-Name
SAMAccountName
- User-Password
Password
- User-Name
# radtest user password 52.34.255.206 1812 secret
Sending Access-Request of id 15 to 52.34.255.206 port 1812
User-Name = "user"
User-Password = "password"
NAS-IP-Address = 172.17.0.3
NAS-Port = 1812
Message-Authenticator = 0x00000000000000000000000000000000
rad_recv: Access-Accept packet from host 52.34.255.206 port 1812, id=15, length=20
OTP必須にしてAttributeでOTPを受け取るようにしたときのログ
- OneLogin RADIUS Attribute
- User-Name
SAMAccountName
- User-Password
Password+OTP
- User-Name
# radtest user password+OTP 52.34.255.206 1812 secret
Sending Access-Request of id 225 to 52.34.255.206 port 1812
User-Name = "user"
User-Password = "password+OTP"
NAS-IP-Address = 172.17.0.3
NAS-Port = 1812
Message-Authenticator = 0x00000000000000000000000000000000
rad_recv: Access-Accept packet from host 52.34.255.206 port 1812, id=225, length=20
# radtest -t pap user password+OTP 52.34.255.206 1812 secret 1
Sending Access-Request of id 173 to 52.34.255.206 port 1812
User-Name = "user"
User-Password = "password+OTP"
NAS-IP-Address = 172.17.0.3
NAS-Port = 1812
Message-Authenticator = 0x00000000000000000000000000000000
Framed-Protocol = PPP
rad_recv: Access-Accept packet from host 52.34.255.206 port 1812, id=173, length=32
Framed-Protocol = PPP
Framed-Compression = Van-Jacobson-TCP-IP
RADIUSパケット
OneLoginのRADIUSにて、Attributeで設定できる User-Name User-Password は、RADIUSの属性値ペアの名前だったんですね。属性値ペアで渡せるものは定義されており、ベンダ特有の属性値を作るのは推奨されていない。
だからOTPを渡すときに
User-Password を使っているんですね。
AWSのAD ConnectorはOTPをRADIUSにどう送っているのか
ここまでくるとさすがに原因がわかりました。OneLogin RADIUSのAttribute設定が、AWSのAD Connectorが送っている値とかみ合っていないことが原因です。
radtest使うまでは
OTP が専用の項目で来ると思っていたので、User-Password の項目は Password で設定していました。AWSのマニュアルを探しても、どう送っているのか見あたらなかったので、ここからは総当たりです。
Attributeの設定には以下の選択項目があります。
- User-Name
- Username
- Password
- OTP
- Password+OTP
- SAMAccountName
- User-Password
- Username
- Password
- OTP
- Password+OTP
- SAMAccountName
OTP Password+OTP のどちらかですね。一応両方試してみましたが、うちの環境ではこのパターンでのみログインできました。
- User-Name
SAMAccountName
- User-Password
OTP
オチ
ServerWorksさんのブログにキャプチャでRADIUSのAttribute設定が載っていました。見逃していた。。。
OneLogin RADIUSのIPが変わっているので注意
ここは間違えなかったですが、最初に紹介したブログに書かれているIPだと設定が古いです。Configure the RADIUS Server Interface - OneLogin Knowledge Base
US側なら
radius.us.onelogin.com radius2.us.onelogin.com になります。
コメント
コメントを投稿