[Discuss] Victory Re: Replacing AD with Samba4

Rich Braun richb at pioneer.ci.net
Sun Aug 16 14:29:10 EDT 2015


After a week of sporadic tweaking, I'm declaring victory in the Samba Active
Directory project.  Here are notes for anyone else trying to accomplish
something similar; the rise of Google's commercial ad-focused business and the
lack of any natural-language query capability has reduced quality of technical
information online to the point where it can take days to find the
nugget-needles of truth amid terabytes of useless haystacks of cruft.

My goals were two-fold:
 1) Eliminate my dependency on Microsoft Server, which I run at
    home and no longer have any practical way to keep up-to-date
 2) Set up and maintain backups of my secure LDAP information,
    which I realized I've never backed up in the past

What I had before was a standard Active Directory installation consisting of
two Windows Server 2008r2 instances named dc01 and dc02. (They were installed
under VirtualBox on a pair of OpenSuSE servers.) It's not really accurate to
say they are "primary" and "backup": domain controllers running Active
Directory these days run active-active symmetrical replication. So a lot of
the online documentation gets confusing because Microsoft's terminology
doesn't really spell out explicitly what the roles are.

What I have now are four instances running mutual replication between every
pair, dc01 through dc04. The new ones are running a source-compiled build of
samba 4.2.3 under LXC. (Still running an older distro, 12.3, because of the
immense effort required to replace the distro underlying several LXC
instances.)  My realm is called ETHER.CI.NET and I use a workgroup CIGROUP.

I can administer the new machines using Apache Directory Studio, and the old
ones using MS Active Directory Administration Center.  (For reasons that I
don't have time to figure out, neither of these admin tools works with all 4
instances; online info suggests they should both work but there are SSL-cert
issues and/or missing TCP services that get in my way for now.) New users and
password changes that I make on any instance get replicated quickly to the
other 3.  I've also been able to configure my local Jira installation to use
Active Directory logins on one of the new Samba servers.

In addition to instructions in the Samba4 installation wiki, here are commands
that I found necessary due (in part) to oddities in my ancient distro and (in
part) to rough-edges remaining in Samba4 packaging:

 samba-tool domain join ether.ci.net DC -Uadministrator \
   --realm=ETHER.CI.NET --dns-backend=SAMBA_INTERNAL

 ldbsearch -H ../private/sam.ldb '(invocationid=*)' \
   --cross-ncs objectguid

 (using vi) add both dc03 and the forgotten dc04 to /etc/hosts

 samba-tool dns add dc01 _msdcs.ether.ci.net \
   e3f94209-f380-44a4-ae96-eb8750403671 CNAME dc03.ether.ci.net

 bin/net changesecretpw -f

 net ads password -U Administrator%[pw] DC03$

Something about the version of kerberos I have seems to require at least one
reboot before I can get past a preauth-failure message, even though 'klist'
command output seems fine. I also found that after building the second
instance, I needed to clear the /usr/local/samba and reinstall the first, to
get past a "Refusing DsReplicaUpdateRefs" error.  Other error messages I
collected during troubleshooting are:

 Failed to fetch our own, local AD domain join password for
  winbindd's internal use, both from secrets.tdb and
  secrets.ldb: NT_STATUS_CANT_ACCESS_DOMAIN_INFO

 samba_dnsupdate: RuntimeError: kinit for DC03$@ETHER.CI.NET
  failed (Preauthentication failed)

 RID Manager failed RID allocation - WERR_BADFILE

 Password change failed: Client not found in Kerberos database

 UpdateRefs failed with WERR_DS_DRA_ACCESS_DENIED

 dos charset 'CP850' unavailable - using ASCII

All I need to do for backups (at the moment) is make a periodic snapshot of
/usr/local/samba; there are additional open-source Linux scripts available to
improve upon this.

Below are the krb5.conf and smb.conf configs that I finally settled on. I
almost gave up on this after a few days but at this point I'm a lot happier
with this than the old Microsoft-only setup.

-rich

----krb5.conf----
[libdefaults]
    default_realm = ETHER.CI.NET
    dns_lookup_realm = false
    dns_lookup_kdc = false

[realms]
    ETHER.CI.NET = {
	kdc = 192.168.2.62
	kdc = 192.168.2.65
	kdc = 192.168.2.63
	kdc = 192.168.2.71
	admin_server = 192.168.2.62
    }

[domain_realm]
    .ether.ci.net = ETHER.CI.NET
    ether.ci.net = ETHER.CI.NET

[logging]
    kdc = FILE:/var/log/krb5/krb5kdc.log
    admin_server = FILE:/var/log/krb5/kadmind.log
    default = SYSLOG:NOTICE:DAEMON



----smb.conf----
# Global parameters
[global]
	workgroup = CIGROUP
	realm = ETHER.CI.NET
	netbios name = DC03
	server role = active directory domain controller
	domain logons = Yes
	domain master = No
        winbind refresh tickets = Yes

	allow dns updates = signed
	winbind trusted domains only = no
	winbind use default domain = yes

[netlogon]
	path = /usr/local/samba/var/locks/sysvol/ether.ci.net/scripts
	read only = No

[sysvol]
	path = /usr/local/samba/var/locks/sysvol
	read only = No





More information about the Discuss mailing list