無料半径、2FA

無料半径、2FA

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 が表示されます。

関連情報