Password incorrect while getting initial credentials using keytab on Solaris with AD
PS
pseely at gmail.com
Tue Mar 25 17:05:07 EDT 2008
On Mar 25, 5:19 pm, "Douglas E. Engert" <deeng... at anl.gov> wrote:
> PS wrote:
> > On Mar 25, 12:33 pm, "Douglas E. Engert" <deeng... at anl.gov> wrote:
> >> PS wrote:
> >>> On Mar 25, 12:00 pm, "Douglas E. Engert" <deeng... at anl.gov> wrote:
> >>>> Your problem might be a bad version of ktpass.
> >>>> Seehttp://support.microsoft.com/kb/919557
> >>> That could be the case.
> >>> But what about the fact mentioned that I created a keytab using ktutil
> >>> addent as shown on the Solaris box, supplying the password, and I
> >>> still get the same result?
> >> The key is a function of the password and the salt. With DES the
> >> password is concatenated with the salt which is usually the concatenation
> >> of the realm and components of the principal name.
>
> >> Since an AD account has only one password, but can have a UPN and SPNs,
> >> the salt is based on the samAccountName.
>
> >> So when you used the ktutil, it assumed a salt based on the principal.
>
> >>> But when I kinit with this same password I > get the ticket?
> >> Part of the pre-auth protocol is for the KDC to send the salt
> >> to the kinit client. Kinit then combines the password and the KDC's
> >> salt to generate the key.
>
> >> If you want to see the KDC's salt, you can use a network trace
> >> program like wireshark.
>
> >> If you are going to have a lot of unix services or hosts, you might want to
> >> google for msktutil. This uses OpenLDAP and Kerberos on Unix to create and
> >> update keytab files.
>
> >>> ________________________________________________
> >>> Kerberos mailing list Kerbe... at mit.edu
> >>>https://mailman.mit.edu/mailman/listinfo/kerberos
> >> --
>
> >> Douglas E. Engert <DEEng... at anl.gov>
> >> Argonne National Laboratory
> >> 9700 South Cass Avenue
> >> Argonne, Illinois 60439
> >> (630) 252-5444
>
> > Hi,
>
> > I had to download and build Cyrus SASL, and consequently rebuild
> > OpenLDAP, but I have a working msktutil (it seems).
>
> > I tried to use the command as follows, with the result. Any ideas if
> > I am doing something wrong here?
>
> msktutil expects to be run as root (or user who owned the keytab)
> with Kerberos credentials previous of an AD administrator who can write into
> the branch of the tree where the account is located.
> (Or if renewing the keytab, it can use the credentials in the keytab.)
>
> Tthe options we use are
> -b base
> -k kettab
> -h hostname
> -s service. i.e. host, HTTP, ldap, afs ... the service part of the principal
> --upn upn
> --computer-name unique-short-name as this must fit in 19 character
> as it plus a "$" becomes the samAccountName. we uses a convention of
> <service>-<first-part-of-hostname>-<second-part-of-hostname>
>
> > msktutil --verbose --create --hostname fc650dr.fc.fujitsu.com --
> > server dc.corp.fc.local
> > -- get_default_keytab: Obtaining the default keytab name: /etc/
> > krb5.keytab
> > -- get_default_ou: Determining default OU: CN=Computers
> > -- init_password: Wiping the computer password structure
> > -- finalize_exec: Determining user principal name
> > -- finalize_exec: User Principal Name is: host/
> > fc650dr.fc.fujitsu.... at CORP.FC.LOCAL
>
> Since you did not specify -s, "host" was used.
>
> > -- create_fake_krb5_conf: Created a fake krb5.conf file: /
> > tmp/.mskt-9661krb5.conf
> > -- get_krb5_context: Creating Kerberos Context
> > -- try_machine_keytab: Using the local credential cache: /
> > tmp/.mskt-9661krb5_ccache
> > -- try_machine_keytab: krb5_get_init_creds_keytab failed (Client not
> > found in Kerberos database)
> > -- try_machine_keytab: Unable to authenticate using the local keytab
>
> Its trying to use the previous keytab to authenticate to AD which
> does not exist yet. SO this is normal.
>
> > -- try_ldap_connect: Connecting to LDAP server: dc.corp.fc.local
> > -- try_ldap_connect: Connecting to LDAP server: dc.corp.fc.local
> > SASL/EXTERNAL authentication started
>
> It should be using SASL/GSSAPI, did you build SASL with Kerberos?
> It should say next:
> SASL/GSSAPI authentication started
> SASL username: yourad... at YOUR.REALM
> Where the AD admin is called yourad... at YOUR.REALM
>
> > Error: ldap_set_option failed (Unknown authentication method)
> > Error: ldap_connect failed
> > -- krb5_cleanup: Destroying Kerberos Context
> > -- ldap_cleanup: Disconnecting from LDAP server
> > -- init_password: Wiping the computer password structure
> > ________________________________________________
> > Kerberos mailing list Kerbe... at mit.edu
> >https://mailman.mit.edu/mailman/listinfo/kerberos
>
> --
>
> Douglas E. Engert <DEEng... at anl.gov>
> Argonne National Laboratory
> 9700 South Cass Avenue
> Argonne, Illinois 60439
> (630) 252-5444
Hi,
This was the build I did, and in this order, with these options:
Kerberos 1.5.4:
./configure --prefix=/usr/www/kerberos --without-krb4 --without-tcl --
disable-thread-support --enable-shared --disable-static
OpenLDAP 2.4.8:
CC=gcc ./configure --prefix=/usr/www/libs/ldap --without-cyrus-sasl --
disable-slapd --disable-slurpd --with-tls=openssl --enable-shared --
disable-static
Cyrus SASL 2.2.21:
./configure --prefix=/usr/www/libs/sasl --with-openssl=/usr/www/libs/
ssl --with-dblib=none --enable-gssapi=/usr/www/kerberos --with-
gss_impl=mit -with-ldap=/usr/www/libs/ldap --enable-shared --disable-
static
OpenLDAP 2.4.8 (again... cyclical dependency with SASL...):
CPPFLAGS='-I /usr/www/libs/z/include -I /usr/www/libs/ssl/include -I /
usr/www/libs/sasl/include'
CC=gcc ./configure --prefix=$BLIB/ldap --with-cyrus-sasl --disable-
slapd --disable-slurpd --with-tls=openssl --enable-shared --disable-
static
msktutil:
CPPFLAGS='-I /usr/www/libs/z/include -I /usr/www/libs/ssl/include -I /
usr/www/libs/sasl/include -I /usr/www/kerberos/include'
./configure --prefix=/usr/www/msktutil --with-tmpdir=/tmp --with-krb5=/
usr/www/kerberos --with-ldapdir=/usr/www/libs/ldap --with-sasldir=/usr/
www/libs/sasl --enable-shared --disable-statuc
Edit config.h - Add the lines to the top because configure failed
to detect this properly:
#define HAVE_GETHOSTBYADDR 1
#define HAVE_GETHOSTBYNAME 1
Edit Makefile - Change LIBS to be: LIBS=-lsocket -lnsl -lkrb5 -
lldap -lk5crypto -lsasl2 -lcom_err
More information about the Kerberos
mailing list