Wim Vandersmissen
2004-Apr-10  21:21 UTC
[Samba] samba 3.0.x / roaming profiles / NT MD4 problems
Hi,
I'm setting up a new sambserver, migrating from 2.2.8a with ldap backend 
to 3.0.x (3.0.2a and 3.0.3pre2 tested) with openldap 2.1.26 backend and 
using sambaSamAccount
I'm experiencing the following problem:
- Roaming profiles sometimes work, sometimes not (most of the time not) 
and show erratic behaviour like removing the local copy (without having 
the DeleteRoamingCache key in my registry) on a windows XP with SP1 
joined to the domain
I think I've pinpointed the problem to NT MD4 password checking 
(libsmb/ntlm_check.c:ntlm_password_check(322))
With debug on 100 and DEBUG_PASSWORD on it shows the following:
[2004/04/10 22:23:49, 4] libsmb/ntlm_check.c:ntlm_password_check(322)
   ntlm_password_check: Checking NT MD4 password
[2004/04/10 22:23:49, 100] libsmb/ntlm_check.c:smb_pwd_check_ntlmv1(67)
   Part password (P16) was |
[2004/04/10 22:23:49, 100] lib/util.c:dump_data(1864)
   [000] AB A4 5E 23 42 B3 27 7E  03 0C DB 4F 97 48 B6 0E  ..^#B.'~ ...O.H..
   Password from client was |
[2004/04/10 22:23:49, 100] lib/util.c:dump_data(1864)
   [000] 22 63 62 8E 2A BD 54 16  D1 0F EE 6C 0F B5 F7 46  "cb.*.T.
...l...F
   [010] 4E BB D2 52 74 EB B2 09                           N..Rt...
   Given challenge was |
[2004/04/10 22:23:49, 100] lib/util.c:dump_data(1864)
   [000] CE 8D D3 56 F8 7E 7D 7A                           ...V.~}z
   Value from encryption was |
[2004/04/10 22:23:49, 100] lib/util.c:dump_data(1864)
   [000] 22 63 62 8E 2A BD 54 16  D1 0F EE 6C 0F B5 F7 46  "cb.*.T.
...l...F
   [010] 4E BB D2 52 74 EB B2 09                           N..Rt...
[2004/04/10 22:23:49, 4] auth/auth_sam.c:sam_account_ok(82)
   sam_account_ok: Checking SMB password for user testing
It does that 3 times correctly, I guess it checks the authentication 
when the user logs on. Now a minute later it checks again, I guess for 
connecting to the profiles share? but now it fails. What results in 
Windows XP telling me that it can't find the profiles directory.
[2004/04/10 22:25:22, 4] libsmb/ntlm_check.c:ntlm_password_check(322)
   ntlm_password_check: Checking NT MD4 password
[2004/04/10 22:25:22, 100] libsmb/ntlm_check.c:smb_pwd_check_ntlmv1(67)
   Part password (P16) was |
[2004/04/10 22:25:22, 100] lib/util.c:dump_data(1864)
   [000] AB A4 5E 23 42 B3 27 7E  03 0C DB 4F 97 48 B6 0E  ..^#B.'~ ...O.H..
   Password from client was |
[2004/04/10 22:25:22, 100] lib/util.c:dump_data(1864)
   [000] EE 15 48 95 A2 6C D6 7A  14 C7 00 85 FE 20 D9 92  ..H..l.z ..... ..
   [010] B4 D0 21 FC F0 FB 7D 61                           ..!...}a
   Given challenge was |
[2004/04/10 22:25:22, 100] lib/util.c:dump_data(1864)
   [000] EC F9 F7 3E EE 20 47 E5                           ...>. G.
   Value from encryption was |
[2004/04/10 22:25:22, 100] lib/util.c:dump_data(1864)
   [000] E7 DE 31 72 F0 E2 E1 97  40 2B 15 86 CA 4E 2A 4F  ..1r.... @+...N*O
   [010] 1D 32 DD 66 AC EA 8B 3C                           .2.f...<
[2004/04/10 22:25:22, 3] libsmb/ntlm_check.c:ntlm_password_check(338)
   ntlm_password_check: NT MD4 password check failed for user testing
When I edit libsmb/ntlm_check.c to always return a NT_STATUS_OK instead 
of a NT_STATUS_WRONG_PASSWORD the last check ofcourse works and the 
roaming profiles work perfectly. (but that isn't very secure ;)
This is my current config, but I've used various mutations of it without 
success ;)
Please let me know if you need any more information.
Thanks,
--Wim Vandersmissen
# Global parameters
[global]
         dos charset = CP850
         unix charset = UTF-8
         display charset = LOCALE
         workgroup = THEONEW
         netbios name = OROCHIMARU
         netbios aliases          netbios scope          server string = %h
         interfaces          bind interfaces only = No
         security = USER
         auth methods          encrypt passwords = Yes
         update encrypted = No
         client schannel = Auto
         server schannel = Auto
         allow trusted domains = Yes
         hosts equiv          min passwd length = 5
         use cracklib = No
         map to guest = Bad Password
         null passwords = No
         obey pam restrictions = No
         password server = *
         smb passwd file = /usr/local/samba/private/smbpasswd
         private dir = /usr/local/samba/private
         passdb backend = ldapsam:ldap://localhost
         algorithmic rid base = 1000
         root directory          guest account = nobody
         pam password change = No
         passwd program          passwd chat = *new*password* %n\n
*new*password* %n\n *changed*
         passwd chat debug = No
         passwd chat timeout = 2
         username map          password level = 0
         username level = 0
         unix password sync = No
         restrict anonymous = 0
         lanman auth = Yes
         ntlm auth = Yes
         client NTLMv2 auth = No
         client lanman auth = Yes
         client plaintext auth = Yes
         preload modules          log level = 100
         syslog = 1
         syslog only = No
         log file = /var/log/samba/inverse/%m.log
         max log size = 50000
         timestamp logs = Yes
         debug hires timestamp = No
         debug pid = No
         debug uid = No
         smb ports = 445 139
         protocol = NT1
         large readwrite = Yes
         max protocol = NT1
         min protocol = CORE
         read bmpx = No
         read raw = Yes
         write raw = Yes
         disable netbios = No
         acl compatibility          nt pipe support = Yes
         nt status support = Yes
         announce version = 4.9
         announce as = NT
         max mux = 50
         max xmit = 16644
         name resolve order = lmhosts wins host bcast
         max ttl = 259200
         max wins ttl = 518400
         min wins ttl = 21600
         time server = No
         unix extensions = Yes
         use spnego = Yes
         client signing = auto
         server signing = No
         client use spnego = No
         change notify timeout = 60
         deadtime = 0
         getwd cache = Yes
         keepalive = 300
         kernel change notify = Yes
         lpq cache time = 10
         max smbd processes = 0
        paranoid server security = Yes
         max disk size = 0
         max open files = 10000
         socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=4096 
SO_RCVBUF=4096
         use mmap = Yes
         hostname lookups = No
         name cache timeout = 660
         load printers = Yes
         printcap name = cups
         disable spoolss = No
         enumports command          addprinter command          deleteprinter
command          show add printer wizard = Yes
         os2 driver map          mangling method = hash2
         mangle prefix = 1
         stat cache = Yes
         machine password timeout = 604800
         add user script          delete user script          add group script  
delete group script          add user to group script          delete user from
group script          set primary group script          add machine script      
shutdown script          abort shutdown script          logon script         
logon path = \\%L\profiles\%U
         logon drive          logon home = \\%N\%U
         domain logons = Yes
         os level = 66
         lm announce = Auto
         lm interval = 60
         preferred master = Yes
         local master = Yes
         domain master = Yes
         browse list = Yes
         enhanced browsing = Yes
         dns proxy = Yes
         wins proxy = No
         wins server 
        wins support = No
         wins hook          wins partners          kernel oplocks = Yes
         lock spin count = 3
         lock spin time = 10
         oplock break wait time = 0
         ldap suffix = "ou=people,dc=theo,dc=be"
         ldap machine suffix          ldap user suffix          ldap group
suffix          ldap idmap suffix          ldap filter =
"(&(uid=%u)(objectclass=sambaSamAccount))
         ldap admin dn = "cn=root,dc=theo,dc=be"
         ldap ssl          ldap passwd sync = no
         ldap delete dn = No
         ldap replication sleep = 1000
         add share command          change share command          delete share
command          config file          preload          lock directory =
/usr/local/samba/var/locks
         pid directory = /usr/local/samba/var/locks
         utmp directory          wtmp directory          utmp = No
         default service          message command          dfree command        
get quota command          set quota command          remote announce         
remote browse sync          socket address = 0.0.0.0
         homedir map          afs username map          time offset = 0
         NIS homedir = No
         panic action          host msdfs = No
         enable rid algorithm = Yes
         idmap backend          idmap uid         idmap gid          template
primary group = nobody
         template homedir = /home/%D/%U
         template shell = /bin/false
         winbind separator = \
         winbind cache time = 300
         winbind enable local accounts = Yes
         winbind enum users = Yes
         winbind enum groups = Yes
         winbind use default domain = No
         winbind trusted domains only = No
         comment          path          username          invalid users         
valid users          admin users          read list          write list         
printer admin = root
         force user          force group          read only = Yes
         create mask = 0744
         force create mode = 00
         security mask = 0777
         force security mode = 00
         directory mask = 0755
         force directory mode = 00
         directory security mask = 0777
         force directory security mode = 00
         inherit permissions = No
         inherit acls = No
         guest only = No
         guest ok = No
         only user = No
         hosts allow          hosts deny          ea support = No
         nt acl support = Yes
         profile acls = No
         map acl inherit = No
         afs share = No
         block size = 1024
         max connections = 0
        min print space = 0
         strict allocate = No
         strict sync = No
         sync always = No
         use sendfile = No
         write cache size = 0
         max reported print jobs = 0
         max print jobs = 1000
         printable = No
         printing = cups
         print command          lpq command          lprm command         
lppause command          lpresume command          queuepause command         
queueresume command          printer name          use client driver = No
         default devmode = No
         default case = lower
         case sensitive = No
         preserve case = Yes
         short preserve case = Yes
         mangle case = No
         mangling char = ~
         hide dot files = Yes
         hide special files = No
         hide unreadable = No
         hide unwriteable files = No
         delete veto files = No
         veto files          hide files = /desktop.ini/Desktop.ini/
         veto oplock files          map system = No
         map hidden = No
         map archive = Yes
         mangled names = Yes
         mangled map          store dos attributes = No
         browseable = Yes
         blocking locks = Yes
         csc policy = manual
         fake oplocks = No
         locking = Yes
         oplocks = Yes
         level2 oplocks = Yes
         oplock contention limit = 2
         posix locking = Yes
         strict locking = Yes
         share modes = Yes
         copy          include          exec          preexec close = No
         postexec          root preexec          root preexec close = No
         root postexec          available = Yes
         volume          fstype = NTFS
         set directory = No
         wide links = Yes
         follow symlinks = Yes
         dont descend          magic script          magic output         
delete readonly = No
         dos filemode = No
         dos filetimes = No
         dos filetime resolution = No
         fake directory create times = No
         vfs objects          msdfs root = No
         msdfs proxy 
[profiles]
         path = /mnt/theo/profiles/
         read only = No
         profile acls = Yes
         browseable = No
Wim Vandermissen
2004-Apr-20  09:57 UTC
[Samba] Re: samba 3.0.x / roaming profiles / NT MD4 problems (SOLVED/samba bug?)
Follow-up to myself ;-) First, the problem also exists with the smbpasswd and the ldapsamcompat backends. I've "fixed" the problem by putting "map to guest = Never" in the smb.conf, this still shows an NT MD4 password checking failed in the logs, but I don't get the profiles error anymore. Maybe this is a bug in samba? Logon and logoff now works perfectly with roaming profiles. --Wim Wim Vandersmissen wrote:> Hi, > > I'm setting up a new sambserver, migrating from 2.2.8a with ldap backend > to 3.0.x (3.0.2a and 3.0.3pre2 tested) with openldap 2.1.26 backend and > using sambaSamAccount > > I'm experiencing the following problem: > > - Roaming profiles sometimes work, sometimes not (most of the time not) > and show erratic behaviour like removing the local copy (without having > the DeleteRoamingCache key in my registry) on a windows XP with SP1 > joined to the domain > > I think I've pinpointed the problem to NT MD4 password checking > (libsmb/ntlm_check.c:ntlm_password_check(322)) > > With debug on 100 and DEBUG_PASSWORD on it shows the following: > > [2004/04/10 22:23:49, 4] libsmb/ntlm_check.c:ntlm_password_check(322) > ntlm_password_check: Checking NT MD4 password > [2004/04/10 22:23:49, 100] libsmb/ntlm_check.c:smb_pwd_check_ntlmv1(67) > Part password (P16) was | > [2004/04/10 22:23:49, 100] lib/util.c:dump_data(1864) > [000] AB A4 5E 23 42 B3 27 7E 03 0C DB 4F 97 48 B6 0E ..^#B.'~ ...O.H.. > Password from client was | > [2004/04/10 22:23:49, 100] lib/util.c:dump_data(1864) > [000] 22 63 62 8E 2A BD 54 16 D1 0F EE 6C 0F B5 F7 46 "cb.*.T. ...l...F > [010] 4E BB D2 52 74 EB B2 09 N..Rt... > Given challenge was | > [2004/04/10 22:23:49, 100] lib/util.c:dump_data(1864) > [000] CE 8D D3 56 F8 7E 7D 7A ...V.~}z > Value from encryption was | > [2004/04/10 22:23:49, 100] lib/util.c:dump_data(1864) > [000] 22 63 62 8E 2A BD 54 16 D1 0F EE 6C 0F B5 F7 46 "cb.*.T. ...l...F > [010] 4E BB D2 52 74 EB B2 09 N..Rt... > [2004/04/10 22:23:49, 4] auth/auth_sam.c:sam_account_ok(82) > sam_account_ok: Checking SMB password for user testing > > It does that 3 times correctly, I guess it checks the authentication > when the user logs on. Now a minute later it checks again, I guess for > connecting to the profiles share? but now it fails. What results in > Windows XP telling me that it can't find the profiles directory. > > [2004/04/10 22:25:22, 4] libsmb/ntlm_check.c:ntlm_password_check(322) > ntlm_password_check: Checking NT MD4 password > [2004/04/10 22:25:22, 100] libsmb/ntlm_check.c:smb_pwd_check_ntlmv1(67) > Part password (P16) was | > [2004/04/10 22:25:22, 100] lib/util.c:dump_data(1864) > [000] AB A4 5E 23 42 B3 27 7E 03 0C DB 4F 97 48 B6 0E ..^#B.'~ ...O.H.. > Password from client was | > [2004/04/10 22:25:22, 100] lib/util.c:dump_data(1864) > [000] EE 15 48 95 A2 6C D6 7A 14 C7 00 85 FE 20 D9 92 ..H..l.z ..... .. > [010] B4 D0 21 FC F0 FB 7D 61 ..!...}a > Given challenge was | > [2004/04/10 22:25:22, 100] lib/util.c:dump_data(1864) > [000] EC F9 F7 3E EE 20 47 E5 ...>. G. > Value from encryption was | > [2004/04/10 22:25:22, 100] lib/util.c:dump_data(1864) > [000] E7 DE 31 72 F0 E2 E1 97 40 2B 15 86 CA 4E 2A 4F ..1r.... @+...N*O > [010] 1D 32 DD 66 AC EA 8B 3C .2.f...< > [2004/04/10 22:25:22, 3] libsmb/ntlm_check.c:ntlm_password_check(338) > ntlm_password_check: NT MD4 password check failed for user testing > > > When I edit libsmb/ntlm_check.c to always return a NT_STATUS_OK instead > of a NT_STATUS_WRONG_PASSWORD the last check ofcourse works and the > roaming profiles work perfectly. (but that isn't very secure ;) > > This is my current config, but I've used various mutations of it without > success ;) > > Please let me know if you need any more information. > Thanks, > > --Wim Vandersmissen > > # Global parameters > [global] > dos charset = CP850 > unix charset = UTF-8 > display charset = LOCALE > workgroup = THEONEW > netbios name = OROCHIMARU > netbios aliases > netbios scope > server string = %h > interfaces > bind interfaces only = No > security = USER > auth methods > encrypt passwords = Yes > update encrypted = No > client schannel = Auto > server schannel = Auto > allow trusted domains = Yes > hosts equiv > min passwd length = 5 > use cracklib = No > map to guest = Bad Password > null passwords = No > obey pam restrictions = No > password server = * > smb passwd file = /usr/local/samba/private/smbpasswd > private dir = /usr/local/samba/private > passdb backend = ldapsam:ldap://localhost > algorithmic rid base = 1000 > root directory > guest account = nobody > pam password change = No > passwd program > passwd chat = *new*password* %n\n *new*password* %n\n *changed* > passwd chat debug = No > passwd chat timeout = 2 > username map > password level = 0 > username level = 0 > unix password sync = No > restrict anonymous = 0 > lanman auth = Yes > ntlm auth = Yes > client NTLMv2 auth = No > client lanman auth = Yes > client plaintext auth = Yes > preload modules > log level = 100 > syslog = 1 > syslog only = No > log file = /var/log/samba/inverse/%m.log > max log size = 50000 > timestamp logs = Yes > debug hires timestamp = No > debug pid = No > debug uid = No > smb ports = 445 139 > protocol = NT1 > large readwrite = Yes > max protocol = NT1 > min protocol = CORE > read bmpx = No > read raw = Yes > write raw = Yes > disable netbios = No > acl compatibility > nt pipe support = Yes > nt status support = Yes > announce version = 4.9 > announce as = NT > max mux = 50 > max xmit = 16644 > name resolve order = lmhosts wins host bcast > max ttl = 259200 > max wins ttl = 518400 > min wins ttl = 21600 > time server = No > unix extensions = Yes > use spnego = Yes > client signing = auto > server signing = No > client use spnego = No > change notify timeout = 60 > deadtime = 0 > getwd cache = Yes > keepalive = 300 > kernel change notify = Yes > lpq cache time = 10 > max smbd processes = 0 > paranoid server security = Yes > max disk size = 0 > max open files = 10000 > socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=4096 > SO_RCVBUF=4096 > use mmap = Yes > hostname lookups = No > name cache timeout = 660 > load printers = Yes > printcap name = cups > disable spoolss = No > enumports command > addprinter command > deleteprinter command > show add printer wizard = Yes > os2 driver map > mangling method = hash2 > mangle prefix = 1 > stat cache = Yes > machine password timeout = 604800 > add user script > delete user script > add group script > delete group script > add user to group script > delete user from group script > set primary group script > add machine script > shutdown script > abort shutdown script > logon script > logon path = \\%L\profiles\%U > logon drive > logon home = \\%N\%U > domain logons = Yes > os level = 66 > lm announce = Auto > lm interval = 60 > preferred master = Yes > local master = Yes > domain master = Yes > browse list = Yes > enhanced browsing = Yes > dns proxy = Yes > wins proxy = No > wins server > > wins support = No > wins hook > wins partners > kernel oplocks = Yes > lock spin count = 3 > lock spin time = 10 > oplock break wait time = 0 > ldap suffix = "ou=people,dc=theo,dc=be" > ldap machine suffix > ldap user suffix > ldap group suffix > ldap idmap suffix > ldap filter = "(&(uid=%u)(objectclass=sambaSamAccount)) > ldap admin dn = "cn=root,dc=theo,dc=be" > ldap ssl > ldap passwd sync = no > ldap delete dn = No > ldap replication sleep = 1000 > add share command > change share command > delete share command > config file > preload > lock directory = /usr/local/samba/var/locks > pid directory = /usr/local/samba/var/locks > utmp directory > wtmp directory > utmp = No > default service > message command > dfree command > get quota command > set quota command > remote announce > remote browse sync > socket address = 0.0.0.0 > homedir map > afs username map > time offset = 0 > NIS homedir = No > panic action > host msdfs = No > enable rid algorithm = Yes > idmap backend > idmap uid > idmap gid > template primary group = nobody > template homedir = /home/%D/%U > template shell = /bin/false > winbind separator = \ > winbind cache time = 300 > winbind enable local accounts = Yes > winbind enum users = Yes > winbind enum groups = Yes > winbind use default domain = No > winbind trusted domains only = No > comment > path > username > invalid users > valid users > admin users > read list > write list > printer admin = root > force user > force group > read only = Yes > create mask = 0744 > force create mode = 00 > security mask = 0777 > force security mode = 00 > directory mask = 0755 > force directory mode = 00 > directory security mask = 0777 > force directory security mode = 00 > inherit permissions = No > inherit acls = No > guest only = No > guest ok = No > only user = No > hosts allow > hosts deny > ea support = No > nt acl support = Yes > profile acls = No > map acl inherit = No > afs share = No > block size = 1024 > max connections = 0 > min print space = 0 > strict allocate = No > strict sync = No > sync always = No > use sendfile = No > write cache size = 0 > max reported print jobs = 0 > max print jobs = 1000 > printable = No > printing = cups > print command > lpq command > lprm command > lppause command > lpresume command > queuepause command > queueresume command > printer name > use client driver = No > default devmode = No > default case = lower > case sensitive = No > preserve case = Yes > short preserve case = Yes > mangle case = No > mangling char = ~ > hide dot files = Yes > hide special files = No > hide unreadable = No > hide unwriteable files = No > delete veto files = No > veto files > hide files = /desktop.ini/Desktop.ini/ > veto oplock files > map system = No > map hidden = No > map archive = Yes > mangled names = Yes > mangled map > store dos attributes = No > browseable = Yes > blocking locks = Yes > csc policy = manual > fake oplocks = No > locking = Yes > > > oplocks = Yes > level2 oplocks = Yes > oplock contention limit = 2 > posix locking = Yes > strict locking = Yes > share modes = Yes > copy > include > exec > preexec close = No > postexec > root preexec > root preexec close = No > root postexec > available = Yes > volume > fstype = NTFS > set directory = No > wide links = Yes > follow symlinks = Yes > dont descend > magic script > magic output > delete readonly = No > dos filemode = No > dos filetimes = No > dos filetime resolution = No > fake directory create times = No > vfs objects > msdfs root = No > msdfs proxy > > [profiles] > path = /mnt/theo/profiles/ > read only = No > profile acls = Yes > browseable = No > > > > >
Possibly Parallel Threads
- NT MD4 password check failed
- smbclient with lanman auth=no unable to connect
- samba bad password count reset between logins (not loaded from login_cache.tdb)
- samba 3.0.2a-Debian +ldapsam +smbldap-tools 3.0rc4-1= newly created users can't log in
- Problems with smbpasswd: any local changes are discarted after connection request