summaryrefslogtreecommitdiff
path: root/docs/docbook/projdoc/Samba-BDC-HOWTO.xml
blob: 5d62902487110a8ecd8cf4f7dfb5e2b4015e5495 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
<chapter id="samba-bdc">

<chapterinfo>
	&author.jht;
	&author.vl;
</chapterinfo>

<title>Backup Domain Control</title>

<para>
Before you continue reading in this section, please make sure that you are comfortable
with configuring a Samba Domain Controller as described in the
<ulink url="Samba-PDC-HOWTO.html">Domain Control Chapter</ulink>.
</para>

<sect1>
<title>Features And Benefits</title>

<para>
This is one of the most difficult chapters to summarise. It matters not what we say here
for someone will still draw conclusions and / or approach the Samba-Team with expectations
that are either not yet capable of being delivered, or that can be achieved for more
effectively using a totally different approach. Since this HOWTO is already so large and
extensive, we have taken the decision to provide sufficient (but not comprehensive)
information regarding Backup Domain Control. In the event that you should have a persistent
concern that is not addressed in this HOWTO document then please email 
<ulink url="mailto:jht@samba.org">John H Terpstra</ulink> clearly setting out your requirements
and / or question and we will do our best to provide a solution.
</para>

<para>
Samba-3 is capable of acting as a Backup Domain Controller to another Samba Primary Domain
Controller. A Samba-3 PDC can operate with an LDAP Account backend. The Samba-3 BDC can
operate with a slave LDAP server for the  Account backend. This effectively gives samba a high
degree of scalability. This is a very sweet (nice) solution for large organisations.
</para>

<para>
While it is possible to run a Samba-3 BDC with non-LDAP backend, the administrator will
need to figure out precisely what is the best way to replicate (copy / distribute) the
user and machine Accounts backend. Again, Samba-3 provides a number of possibilities:
</para>

<itemizedlist>
<title>Backup Domain Backend Account Distribution Options</title>
	<listitem><para>
	Passwd Backend is LDAP based, BDCs use a slave LDAP server
	</para></listitem>
		
	<listitem><para>
	Passdb Backend is tdbsam based, BDCs use cron based "net rcp vampire" to
	suck down the Accounts database from the PDC
	</para></listitem>
		
	<listitem><para>
	Make use of rsync to replicate (pull down) copies of the essential account files
	</para></listitem>
		
	<listitem><para>
	Operate with an entirely local accounts database (not recommended)
	</para></listitem>
</itemizedlist>

</sect1>

<sect1>
<title>Essential Background Information</title>

<para>
A Domain Controller is a machine that is able to answer logon requests from network
workstations. Microsoft LanManager and IBM LanServer were two early products that
provided this capability. The technology has become known as the LanMan Netlogon service.
</para>

<para>
When MS Windows NT3.10 was first released it supported an new style of Domain Control
and with it a new form of the network logon service that has extended functionality.
This service became known as the NT NetLogon Service. The nature of this service has
changed with the evolution of MS Windows NT and today provides a very complex array of
services that are implemented over a complex spectrum of technologies.
</para>

<sect2>
<title>MS Windows NT4 Style Domain Control</title>

<para>
Whenever a user logs into a Windows NT4 / 200x / XP Profresional Workstation,
the workstation connects to a Domain Controller (authentication server) to validate
the username and password that the user entered are valid. If the information entered
does not validate against the account information that has been stored in the Domain
Control database (the SAM, or Security Accounts Manager database) then a set of error
codes is returned to the workstation that has made the authentication request.
</para>

<para>
When the username / password pair has been validated, the Domain Controller
(authentication server) will respond with full enumeration of the account information
that has been stored regarding that user in the User and Machine Accounts database
for that Domain. This information contains a complete network access profile for
the user but excludes any information that is particular to the user's desktop profile,
or for that matter it excludes all desktop profiles for groups that the user may
belong to. It does include password time limits, password uniqueness controls,
network access time limits, account validity information, machine names from which the
user may access the network, and much more. All this information was stored in the SAM
in all versions of MS Windows NT (3.10, 3.50, 3.51, 4.0).
</para>

<para>
The account information (user and machine) on Domain Controllers is stored in two files,
one containing the Security information and the other the SAM. These are stored in files
by the same name in the <filename>C:\WinNT\System32\config</filename> directory. These
are the files that are involved in replication of the SAM database where Backup Domain
Controllers are present on the network.
</para>

<para>
There are two situations in which it is desirable to install Backup Domain Controllers:
</para>

<itemizedlist>
	<listitem><para>
	On the local network that the Primary Domain Controller is on if there are many
	workstations and/or where the PDC is generally very busy. In this case the BDCs
	will pick up network logon requests and help to add robustness to network services.
	</para></listitem>

	<listitem><para>
	At each remote site, to reduce wide area network traffic and to add stability to
	remote network operations. The design of the network, the strategic placement of
	Backup Domain Controllers, together with an implementation that localises as much
	of network to client interchange as possible will help to minimise wide area network
	bandwidth needs (and thus costs).
	</para></listitem>
</itemizedlist>

<para>
The PDC contains the master copy of the SAM. In the event that an administrator makes a
change to the user account database while physically present on the local network that
has the PDC, the change will likely be made directly to the PDC instance of the master
copy of the SAM. In the event that this update may be performed in a branch office the
change will likely be stored in a delta file on the local BDC. The BDC will then send
a trigger to the PDC to commence the process of SAM synchronisation. The PDC will then
request the delta from the BDC and apply it to the master SAM. THe PDC will then contact
all the BDCs in the Domain and trigger them to obtain the update and then apply that to
their own copy of the SAM.
</para>

<para>
Thus the BDC is said to hold a <emphasis>read-only</emphasis> of the SAM from which
it is able to process network logon requests and to authenticate users. The BDC can
continue to provide this service, particularly while, for example, the wide area
network link to the PDC is down. Thus a BDC plays a very important role in both
maintenance of Domain security as well as in network integrity.
</para>

<para>
In the event that the PDC should need to be taken out of service, or if it dies, then
one of the BDCs can be promoted to a PDC. If this happens while the original PDC is on
line then it is automatically demoted to a BDC. This is an important aspect of Domain
Controller management. The tool that is used to affect a promotion or a demotion is the
Server Manager for Domains.
</para>

<sect3>
<title>Example PDC Configuration</title>

<para>
Since version 2.2 Samba officially supports domain logons for all current Windows Clients,
including Windows NT4, 2003 and XP Professional. For samba to be enabled as a PDC some
parameters in the [global]-section of the smb.conf have to be set:
</para>

<para><programlisting>
	workgroup = SAMBA
	domain master = yes
	domain logons = yes
</programlisting></para>

<para>
Several other things like a [homes] and a [netlogon] share also need to be set along with
settings for the profile path, the users home drive, etc.. This will not be covered in this
chapter, for more information please refer to the chapter on Domain Control.
</para>

</sect3>
</sect2>

<sect2>
<title>Active Directory Domain Control</title>

<para>
As of the release of MS Windows 2000 and Active Directory, this information is now stored
in a directory that can be replicated and for which partial or full administrative control
can be delegated. Samba-3 is NOT able to be a Domain Controller within an Active Directory
tree, and it can not be an Active Directory server. This means that Samba-3 also can NOT
act as a Backup Domain Contoller to an Active Directory Domain Controller.
</para>

</sect2>

<sect2>
<title>What qualifies a Domain Controller on the network?</title>

<para>
Every machine that is a Domain Controller for the domain SAMBA has to register the NetBIOS
group name SAMBA&lt;#1c&gt; with the WINS server and/or by broadcast on the local network.
The PDC also registers the unique NetBIOS name SAMBA&lt;#1b&gt; with the WINS server.
The name type &lt;#1b&gt; name is normally reserved for the Domain Master Browser, a role
that has nothing to do with anything related to authentication, but the Microsoft Domain
implementation requires the domain master browser to be on the same machine as the PDC.
</para>

</sect2>

<sect2>
<title>How does a Workstation find its domain controller?</title>

<para>
An MS Windows NT4 / 200x / XP Professional workstation in the domain SAMBA that wants a
local user to be authenticated has to find the domain controller for SAMBA. It does this
by doing a NetBIOS name query for the group name SAMBA&lt;#1c&gt;. It assumes that each
of the machines it gets back from the queries is a domain controller and can answer logon
requests. To not open security holes both the workstation and the selected domain controller
authenticate each other. After that the workstation sends the user's credentials (name and
password) to the local Domain Controller, for valdation.
</para>

</sect2>


<sect2>
<title>When is the PDC needed?</title>

<para>
Whenever a user wants to change his password, this has to be done on the PDC. To find
the PDC, the workstation does a NetBIOS name query for SAMBA&lt;#1b&gt;, assuming this
machine maintains the master copy of the SAM. The workstation contacts the PDC, both
mutually authenticate and the password change is done.
</para>

</sect2>

</sect1>


<sect1>
<title>Backup Domain Controller Configuration</title>

<para>
Several things have to be done:
</para>

<itemizedlist>
<listitem><para>
	The domain SID has to be the same on the PDC and the BDC. This used to
	be stored in the file private/MACHINE.SID. This file is not created
	anymore since Samba 2.2.5 or even earlier. Nowadays the domain SID is
	stored in the file private/secrets.tdb. Simply copying the secrets.tdb
	from the PDC to the BDC does not work, as the BDC would
	generate a new SID for itself and override the domain SID with this
	new BDC SID.</para>

	<para>
	To retrieve the domain SID from the PDC or an existing BDC and store it in the
	secrets.tdb, execute 'net rpc getsid' on the BDC.
	</para></listitem>

	<listitem><para>
	The Unix user database has to be synchronized from the PDC to the
	BDC. This means that both the /etc/passwd and /etc/group have to be
	replicated from the PDC to the BDC. This can be done manually
	whenever changes are made, or the PDC is set up as a NIS master
	server and the BDC as a NIS slave server. To set up the BDC as a
	mere NIS client would not be enough, as the BDC would not be able to
	access its user database in case of a PDC failure.
	</para>
	</listitem>

	<listitem><para>
	The Samba password database in the file private/smbpasswd has to be
	replicated from the PDC to the BDC. This is a bit tricky, see the
	next section.
	</para></listitem>

	<listitem><para>
	Any netlogon share has to be replicated from the PDC to the
	BDC. This can be done manually whenever login scripts are changed,
	or it can be done automatically together with the smbpasswd
	synchronization.
	</para></listitem>

</itemizedlist>

<sect2>
<title>Example Configuration</title>

<para>
Finally, the BDC has to be found by the workstations. This can be done by setting:
</para>

<para><programlisting>
<title>Essential Parameters for BDC Operation</title>
	workgroup = SAMBA
	domain master = no
	domain logons = yes
</programlisting></para>

<para>
in the [global]-section of the smb.conf of the BDC. This makes the BDC
only register the name SAMBA&lt;#1c&gt; with the WINS server. This is no
problem as the name SAMBA&lt;#1c&gt; is a NetBIOS group name that is meant to
be registered by more than one machine. The parameter 'domain master =
no' forces the BDC not to register SAMBA&lt;#1b&gt; which as a unique NetBIOS
name is reserved for the Primary Domain Controller.
</para>

</sect2>
</sect1>

<sect1>
<title>Common Errors</title>

<para>
As this is a rather new area for Samba there are not many examples thta we may refer to. Keep
watching for updates to this section.
</para>

<sect2>
<title>Machine Accounts keep expiring, what can I do?</title>

<para>
This problem will occur when occur when the account files are replicated from a central
server but the local Domain Controllers are not forwarding machine account password updates
back to the central server, or where there is an excessive delay in replication of the centrally
changed machine account password to the local Domain Controller.
</para>

</sect2>

<sect2>
<title>Can Samba be a Backup Domain Controller to an NT4 PDC?</title>

<para>
With version 2.2, no. The native NT4 SAM replication protocols have not yet been fully
implemented. The Samba Team is working on understanding and implementing the protocols,
but this work has not been finished for version 2.2.
</para>

<para>
With version 3.0, the work on both the replication protocols and a suitable storage
mechanism has progressed, and some form of NT4 BDC support is expected soon.
</para>

<para>
Can I get the benefits of a BDC with Samba?  Yes. The main reason for implementing a
BDC is availability. If the PDC is a Samba machine, a second Samba machine can be set up to
service logon requests whenever the PDC is down.
</para>

</sect2>

<sect2>
<title>How do I replicate the smbpasswd file?</title>

<para>
Replication of the smbpasswd file is sensitive. It has to be done whenever changes
to the SAM are made. Every user's password change is done in the smbpasswd file and
has to be replicated to the BDC. So replicating the smbpasswd file very often is necessary.
</para>

<para>
As the smbpasswd file contains plain text password equivalents, it must not be
sent unencrypted over the wire. The best way to set up smbpasswd replication from
the PDC to the BDC is to use the utility rsync. rsync can use ssh as a transport.
Ssh itself can be set up to accept *only* rsync transfer without requiring the user
to type a password.
</para>

</sect2>

<sect2>
<title>Can I do this all with LDAP?</title>

<para>
The simple answer is YES.  Samba's pdb_ldap code supports binding to a replica
LDAP server, and will also follow referrals and rebind to the master if it ever
needs to make a modification to the database. (Normally BDCs are read only, so
this will not occur often).
</para>

</sect2>
</sect1>
</chapter>