web-dev-qa-db-ja.com

RADIUSをKerberosと統合する方法は?

有線ネットワークでLDAP + Kerberosが適切に構成されています。

次に、ユーザーが通常の資格情報を使用してWiFiネットワークにログインできるようにします。 LDAP + RADIUSに関するHOWTOSをたくさん見つけましたが、パック内のKerberosについては言及していません。 RADIUSをKerberosと統合するための良いHOWTOを誰かに教えてもらえますか?私は この短い記事 とUsenet上のいくつかの有益でない投稿だけを見つけました。

編集:システムはOpenLDAPとHeimdal(Kerberos)を使用するGentooLinuxです。 WiFiハードウェアは、OpenWRTを備えたいくつかのLinksysWRT54GLです。

4
minder

これは、802.1x-PEAP-MSCHAPを使用してMITのKerberosに [〜#〜] kcrap [〜#〜] を使用して実行できます。もともとSambaユーザーがNTLMを使用してKerberosを認証できるようにするために開発されましたが、そのライブラリをfreeradiusで使用して、NTLMハッシュの必要な検証を行うことができます。

このソリューションでは、カスタムソフトウェアの実行と保守に慣れている必要があります。実装の大まかな手順は次のとおりです。

  1. arcfour-hmac:normalパスワードハッシュをKDBに追加します。ユーザーは、NTLMに必要なハッシュを作成するために、パスワードを更新する必要があります。
  2. ユーザーハッシュを検索するためにKDBで実行するkcrapdデーモンをビルドしてインストールします。
  3. RADIUSサーバーでkcrap-libsをビルド、インストール、および構成します。
  4. ユーザーを認証するためにkcrap-libsとインターフェースするRADIUSサーバー用の認証モジュールを構築します。

このソリューションは、同期されたKDBに対してネイティブAD資格情報を使用して自動的に認証されるWindowsデバイスを備えたキャンパス全体に対して実行されます。

2
beans

FreeradiusでKerberosサーバーに対してユーザーとパスワードの組み合わせをチェックし、LDAPバックエンドに対して認証する方法は次のとおりです---これをradius.confに貼り付けます。

modules {
    krb5 {
            keytab = ${confdir}/radius.keytab
            service_principal = radius/radius.example.com
    }

    ldap {
            cache = no
            server = "ldap"
            identity = "uid=freeradius,ou=Accounts,dc=example,dc=com"
            password = secret
            basedn = "dc=com"
            filter = "(krbPrincipalName=%{User-Name})"
            base_filter = "(objectClass=radiusprofile)"

            tls {
                    start_tls = no
                    # tls_cacertfile        = /path/to/cacert.pem
                    # tls_cacertdir         = /path/to/ca/dir/
                    # tls_certfile          = /path/to/radius.crt
                    # tls_keyfile           = /path/to/radius.key
                    # tls_randfile          = /path/to/rnd
                    # tls_require_cert      = "demand"
            }

            default_profile = "uid=freeradius,ou=Accounts,dc=example,dc=com"
            profile_attribute = "radiusProfileDn"
            access_attr = "dialupAccess"

            dictionary_mapping = ${raddbdir}/ldap.attrmap

            ldap_connections_number = 5

            groupname_attribute = cn
            groupmembership_filter = "(|(&(objectClass=GroupOfNames)(member=%{Ldap-UserDn}))(&(objectClass=GroupOfUniqueNames)(uniquemember=%{Ldap-UserDn})))"
            #groupmembership_attribute = radiusGroupName
            timeout = 4
            timelimit = 3
            net_timeout = 1
            # compare_check_items = yes
            # do_xlat = yes
            # access_attr_used_for_allow = yes

            # set_auth_type = yes
    }
}

これは、正しい半径スキーマ(freeradius、IIRCに付属)をLDAPディレクトリに追加したことを前提としており、正しい方向を示しているはずです---私は802.1Xを実行しませんが、この構成を使用して処理します他のkerberos-via-radiusアクセス制御シナリオであり、しばらくの間本番環境で実行されています。明らかに、ユーザーは(ユーザー名だけでなく)完全なKerberosプリンシパルを使用してログインしています。

5
James Cape

Microsoftの場合、いくつかの記事があります。 Technet およびここにドキュメント TechNet Word Doc

1
Dave M