Hallo zusammen,
ich versuche hier gerade einem SLES11 die Authentifizierung über Kerberos beizubringen, aber PAM spielt da nicht so mit wie ich mir das wünsche :-(
Folgende Konfiguration:
Auf dem SLES läuft der Kerberos-Server (MIT) die Principals sind alle eingerichtet. Ich kann mit mit "kinit" ein Ticket holen. Das funktioniert alles OHNE jegliche Problem. Jetzt kommt dann aber PAM für die lokale Anmeldung ins Spiel. Ich habe mit "pam-config --add --krb5 " das entsprechenden PAM-Modul eingebunden. Dann kann ich mich lokal mit allen neuen Benutzer die lediglich ein Kerberos-Principal und kein Passwort in der /etc/shadow haben anmelden. Aber alle lokalen Benutzer wie zum Beispiel der "root" können sich nicht mehr anmelden. Ich habe dann mal für das Modul "krb5" und "unix2" das debug im PAM aktiviert, so dass meine common-* Dateien jetzt wie folgt aussehen:
common-auth-pc:
common-account-pc:
common-password-pc:
Melde ich mich jetzt mit einem Account an, dass als lokales Account über die /etc/shadow verwaltet wird, sehe in /var/log/messages das folgenden:
Wenn ich mir das anschaue, sagt die Zeile:
Im Vergleich mal dazu eine Anmeldung als Benutzer, der ein Kerberos-Principal hat:
Hier kommt natürlich, wie auch erwartet, ein Fehler bei der Authentifizierung mit "unix2"
Ich habe die gleich Konfiguration hier auch unter Debian und Ubuntu laufen, da klappt es ohne Problem.
Ich hänge absolut fest, vielleicht kann mir jemand einen Tipp geben.
ich versuche hier gerade einem SLES11 die Authentifizierung über Kerberos beizubringen, aber PAM spielt da nicht so mit wie ich mir das wünsche :-(
Folgende Konfiguration:
Auf dem SLES läuft der Kerberos-Server (MIT) die Principals sind alle eingerichtet. Ich kann mit mit "kinit" ein Ticket holen. Das funktioniert alles OHNE jegliche Problem. Jetzt kommt dann aber PAM für die lokale Anmeldung ins Spiel. Ich habe mit "pam-config --add --krb5 " das entsprechenden PAM-Modul eingebunden. Dann kann ich mich lokal mit allen neuen Benutzer die lediglich ein Kerberos-Principal und kein Passwort in der /etc/shadow haben anmelden. Aber alle lokalen Benutzer wie zum Beispiel der "root" können sich nicht mehr anmelden. Ich habe dann mal für das Modul "krb5" und "unix2" das debug im PAM aktiviert, so dass meine common-* Dateien jetzt wie folgt aussehen:
common-auth-pc:
auth required pam_env.so debug
auth sufficient pam_unix2.so debug
auth sufficient pam_krb5.so use_first_pass debug
auth required pam_deny.so
common-account-pc:
account requisite pam_unix2.so debug
account required pam_krb5.so use_first_pass debug
common-password-pc:
password requisite pam_pwcheck.so debug nullok cracklib
password [default=ignore success=1] pam_succeed_if.so uid > 999 debug
password sufficient pam_unix2.so use_authtok nullok debug
password sufficient pam_krb5.so debug
password required pam_deny.so
Melde ich mich jetzt mit einem Account an, dass als lokales Account über die /etc/shadow verwaltet wird, sehe in /var/log/messages das folgenden:
Jan 3 12:39:53 kerberos login[18715]: pam_unix2(login:auth): pam_sm_authenticate() called
Jan 3 12:39:53 kerberos login[18715]: pam_unix2(login:auth): username=[root]
Jan 3 12:39:58 kerberos login[18715]: pam_unix2(login:auth): pam_sm_authenticate: PAM_SUCCESS
Jan 3 12:39:58 kerberos login[18715]: pam_unix2(login:account): pam_sm_acct_mgmt() called
Jan 3 12:39:58 kerberos login[18715]: pam_unix2(login:account): username=[root]
Jan 3 12:39:58 kerberos login[18715]: pam_unix2(login:account): expire() returned with 0
Jan 3 12:39:58 kerberos login[18715]: pam_krb5[18715]: default/local realm 'EXAMPLE.NET'
Jan 3 12:39:58 kerberos login[18715]: pam_krb5[18715]: configured realm 'EXAMPLE.NET'
Jan 3 12:39:58 kerberos login[18715]: pam_krb5[18715]: flag: debug
Jan 3 12:39:58 kerberos login[18715]: pam_krb5[18715]: flags:
Jan 3 12:39:58 kerberos login[18715]: pam_krb5[18715]: flag: no ignore_afs
Jan 3 12:39:58 kerberos login[18715]: pam_krb5[18715]: flag: no null_afs
Jan 3 12:39:58 kerberos login[18715]: pam_krb5[18715]: flag: user_check
Jan 3 12:39:58 kerberos login[18715]: pam_krb5[18715]: flag: no krb4_convert
Jan 3 12:39:58 kerberos login[18715]: pam_krb5[18715]: flag: krb4_convert_524
Jan 3 12:39:58 kerberos login[18715]: pam_krb5[18715]: flag: krb4_use_as_req
Jan 3 12:39:58 kerberos login[18715]: pam_krb5[18715]: will try previously set password first
Jan 3 12:39:58 kerberos login[18715]: pam_krb5[18715]: will let libkrb5 ask questions
Jan 3 12:39:58 kerberos login[18715]: pam_krb5[18715]: flag: no use_shmem
Jan 3 12:39:58 kerberos login[18715]: pam_krb5[18715]: flag: no external
Jan 3 12:39:58 kerberos login[18715]: pam_krb5[18715]: flag: warn
Jan 3 12:39:58 kerberos login[18715]: pam_krb5[18715]: ticket lifetime: 0s (0d,0h,0m,0s)
Jan 3 12:39:58 kerberos login[18715]: pam_krb5[18715]: renewable lifetime: 0s (0d,0h,0m,0s)
Jan 3 12:39:58 kerberos login[18715]: pam_krb5[18715]: banner: Kerberos 5
Jan 3 12:39:58 kerberos login[18715]: pam_krb5[18715]: ccache dir: /tmp
Jan 3 12:39:58 kerberos login[18715]: pam_krb5[18715]: ccname template: FILE:%d/krb5cc_%U_XXXXXX
Jan 3 12:39:58 kerberos login[18715]: pam_krb5[18715]: keytab: FILE:/etc/krb5.keytab
Jan 3 12:39:58 kerberos login[18715]: pam_krb5[18715]: token strategy: v4,524,2b,rxk5
Jan 3 12:39:58 kerberos login[18715]: pam_krb5[18715]: pam_acct_mgmt called for 'root', realm 'EXAMPLE.NET'
Jan 3 12:39:58 kerberos login[18715]: pam_krb5[18715]: user 'root' was not authenticated by pam_krb5, returning "Benutzer bei zu Grunde liegendem Authentifizierungsmodul nicht bekannt"
Jan 3 12:39:58 kerberos login[18715]: pam_krb5[18715]: pam_acct_mgmt returning 10 (Benutzer bei zu Grunde liegendem Authentifizierungsmodul nicht bekannt)
Jan 3 12:39:58 kerberos login[18715]: Benutzer bei zu Grunde liegendem Authentifizierungsmodul nicht bekannt
Wenn ich mir das anschaue, sagt die Zeile:
Das die Authentifizierung durch "unix2" erfolgreich war. Trotzdem wird noch Kerberos gefragt und dann kommt natürlich eine Fehlermeldung, da der "root" ja kein Kerberos-Principal hat.Jan 3 12:39:58 kerberos login[18715]: pam_unix2(login:auth): pam_sm_authenticate: PAM_SUCCESS
Im Vergleich mal dazu eine Anmeldung als Benutzer, der ein Kerberos-Principal hat:
Jan 3 12:42:38 kerberos login[18758]: pam_unix2(login:auth): pam_sm_authenticate() called
Jan 3 12:42:38 kerberos login[18758]: pam_unix2(login:auth): username=[daniel]
Jan 3 12:42:40 kerberos login[18758]: pam_unix2(login:auth): wrong password, return PAM_AUTH_ERR
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: default/local realm 'EXAMPLE.NET'
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: configured realm 'EXAMPLE.NET'
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: debug
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flags:
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: no ignore_afs
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: no null_afs
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: user_check
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: no krb4_convert
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: krb4_convert_524
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: krb4_use_as_req
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: will try previously set password first
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: will let libkrb5 ask questions
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: no use_shmem
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: no external
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: warn
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: ticket lifetime: 0s (0d,0h,0m,0s)
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: renewable lifetime: 0s (0d,0h,0m,0s)
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: banner: Kerberos 5
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: ccache dir: /tmp
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: ccname template: FILE:%d/krb5cc_%U_XXXXXX
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: keytab: FILE:/etc/krb5.keytab
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: token strategy: v4,524,2b,rxk5
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: pam_authenticate called for 'daniel', realm 'EXAMPLE.NET'
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: authenticating 'daniel@EXAMPLE.NET'
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: trying previously-entered password for 'daniel', allowing libkrb5 to prompt for more
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: authenticating 'daniel@EXAMPLE.NET' to 'krbtgt/EXAMPLE.NET@EXAMPLE.NET'
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: krb5_get_init_creds_password(krbtgt/EXAMPLE.NET@EXAMPLE.NET) returned 0 (Erfolg)
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: got result 0 (Erfolg)
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: 'daniel@EXAMPLE.NET' passes .k5login check for 'daniel'
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: authentication succeeds for 'daniel' (daniel@EXAMPLE.NET)
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: pam_authenticate returning 0 (Erfolg)
Jan 3 12:42:40 kerberos login[18758]: pam_unix2(login:account): pam_sm_acct_mgmt() called
Jan 3 12:42:40 kerberos login[18758]: pam_unix2(login:account): username=[daniel]
Jan 3 12:42:40 kerberos login[18758]: pam_unix2(login:account): expire() returned with 0
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: default/local realm 'EXAMPLE.NET'
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: configured realm 'EXAMPLE.NET'
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: debug
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flags:
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: no ignore_afs
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: no null_afs
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: user_check
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: no krb4_convert
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: krb4_convert_524
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: krb4_use_as_req
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: will try previously set password first
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: will let libkrb5 ask questions
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: no use_shmem
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: no external
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: warn
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: ticket lifetime: 0s (0d,0h,0m,0s)
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: renewable lifetime: 0s (0d,0h,0m,0s)
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: banner: Kerberos 5
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: ccache dir: /tmp
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: ccname template: FILE:%d/krb5cc_%U_XXXXXX
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: keytab: FILE:/etc/krb5.keytab
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: token strategy: v4,524,2b,rxk5
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: pam_acct_mgmt called for 'daniel', realm 'EXAMPLE.NET'
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: account management succeeds for 'daniel'
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: 'daniel@EXAMPLE.NET' passes .k5login check for 'daniel'
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: pam_acct_mgmt returning 0 (Erfolg)
Jan 3 12:42:40 kerberos login[18758]: pam_unix2(login:setcred): pam_sm_setcred() called
Jan 3 12:42:40 kerberos login[18758]: pam_unix2(login:setcred): username=[daniel]
Jan 3 12:42:40 kerberos login[18758]: pam_unix2(login:setcred): pam_sm_setcred: PAM_SUCCESS
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: pam_setcred (establish credential) called
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: default/local realm 'EXAMPLE.NET'
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: configured realm 'EXAMPLE.NET'
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: debug
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flags:
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: no ignore_afs
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: no null_afs
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: user_check
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: no krb4_convert
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: krb4_convert_524
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: krb4_use_as_req
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: will try previously set password first
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: will let libkrb5 ask questions
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: no use_shmem
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: no external
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: warn
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: ticket lifetime: 0s (0d,0h,0m,0s)
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: renewable lifetime: 0s (0d,0h,0m,0s)
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: banner: Kerberos 5
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: ccache dir: /tmp
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: ccname template: FILE:%d/krb5cc_%U_XXXXXX
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: keytab: FILE:/etc/krb5.keytab
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: token strategy: v4,524,2b,rxk5
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: pam_open_session called for 'daniel', realm 'EXAMPLE.NET'
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: creating v5 ccache for 'daniel', uid=1001, gid=100
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: saving v5 credentials to 'MEMORY:_pam_krb5_tmp_s_daniel@EXAMPLE.NET-0' for internal use
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: copied credentials from "MEMORY:_pam_krb5_tmp_s_daniel@EXAMPLE.NET-0" to "FILE:/tmp/krb5cc_1001_xzFLX1" for the user, destroying "MEMORY:_pam_krb5_tmp_s_daniel@EXAMPLE.NET-0"
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: created v5 ccache 'FILE:/tmp/krb5cc_1001_WNqOf5' for 'daniel'
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: pam_open_session returning 0 (Erfolg)
Jan 3 12:42:40 kerberos login[18758]: pam_limits(login:session): reading settings from '/etc/security/limits.conf'
Jan 3 12:42:40 kerberos login[18758]: pam_unix2(login:session): session started for user daniel: service=login, tty=/dev/tty2
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: default/local realm 'EXAMPLE.NET'
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: configured realm 'EXAMPLE.NET'
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: debug
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flags:
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: no ignore_afs
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: no null_afs
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: user_check
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: no krb4_convert
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: krb4_convert_524
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: krb4_use_as_req
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: will try previously set password first
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: will ask for a password if that fails
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: will let libkrb5 ask questions
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: no use_shmem
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: no external
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: flag: warn
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: ticket lifetime: 0s (0d,0h,0m,0s)
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: renewable lifetime: 0s (0d,0h,0m,0s)
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: banner: Kerberos 5
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: ccache dir: /tmp
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: ccname template: FILE:%d/krb5cc_%U_XXXXXX
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: keytab: FILE:/etc/krb5.keytab
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: token strategy: v4,524,2b,rxk5
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: pam_open_session called for 'daniel', realm 'EXAMPLE.NET'
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: creating v5 ccache for 'daniel', uid=1001, gid=100
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: saving v5 credentials to 'MEMORY:_pam_krb5_tmp_s_daniel@EXAMPLE.NET-1' for internal use
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: copied credentials from "MEMORY:_pam_krb5_tmp_s_daniel@EXAMPLE.NET-1" to "FILE:/tmp/krb5cc_1001_mZIZWs" for the user, destroying "MEMORY:_pam_krb5_tmp_s_daniel@EXAMPLE.NET-1"
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: created v5 ccache 'FILE:/tmp/krb5cc_1001_74Gz83' for 'daniel'
Jan 3 12:42:40 kerberos login[18758]: pam_krb5[18758]: pam_open_session returning 0 (Erfolg)
Hier kommt natürlich, wie auch erwartet, ein Fehler bei der Authentifizierung mit "unix2"
Die Anmeldung wird dann aber direkt an "krb5" übergeben und wird auch ordnungsgemäß durchgeführt und der Benutzer kann sich anmleden.Jan 3 12:42:40 kerberos login[18758]: pam_unix2(login:auth): wrong password, return PAM_AUTH_ERR
Ich habe die gleich Konfiguration hier auch unter Debian und Ubuntu laufen, da klappt es ohne Problem.
Ich hänge absolut fest, vielleicht kann mir jemand einen Tipp geben.