FreeRadiusで2段階認証設定の問題を解決するのに役立ちます。
FreeRADIUS バージョン 3.0.20
通常、接続されているすべてのユーザーに対して2番目の要素を設定します。
ただし、特定のユーザーのみを使用するように構成することはできません。
2番目の要素をテストする必要があります。
これで、ワークフローは次のようになります。
接続すると、すべてのユーザーのLDAPと2番目の要素が確認されます。
どのように:
すべてのユーザーはLDAPサーバーで認証され、
別のファイルで定義されたユーザー(LDAPログインのみ)も、2番目の要素に対してテストされました。
以下は、すべてのユーザーに適用される構成の例です。
cat /etc/raddb/sites-enabled/default
authorize {
filter_username
filter_google_otp
preprocess
if ((ok || updated) && Google-Password && !control:Auth-Type) {
update control {
Auth-Type := `/path_to_script/auth_2fa.py %{User-Name} %{Google-Password}`
}
}
}
私の考えは、ユーザーのユーザー名がファイルのユーザーと一致することを確認するために、filter_usernameの後にチェックを追加することです。一致するものが見つかると、要素2のテストが実行されます。
そうでない場合は続けてください。
インターネットに似たものが見つかりません。
filter_username
if (&User-Name) {
update control {
2FA_USERS := check-item {
filename = "/etc/raddb/users_2fa",
item-name = "%{User-Name}",
flags = case-sensitive
}
}
if (2FA_USERS) {
filter_google_otp
私の実装のアイデアは適切ではないかもしれません。
そのような問題が発生した人はいますか?
答え1
トラブルシューティング:
authorize {
filter_username
if (`/path_to_script/check_user_2fa.sh %{User-Name}`) {
filter_google_otp
ldap
if ((ok || updated) && Google-Password && !control:Auth-Type) {
update control {
Auth-Type := `/path_to_script/google_2fa.py %{User-Name} %{Google-Password}`
}
}
} else {
update {
control:Auth-Type := ldap
}
}
preprocess
}
成功すると、check_user_2fa.sh スクリプトに ok が表示されます。