Progress update.
[Samba/gebeck_regimport.git] / docs / Samba3-HOWTO / TOSHARG-BDC.xml
blob1bd6db90289e3cb1eb3ff984691d6696adce24c9
1 <?xml version="1.0" encoding="iso-8859-1"?>
2 <!DOCTYPE chapter PUBLIC "-//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN" "http://www.samba.org/samba/DTD/samba-doc">
3 <chapter id="samba-bdc">
5 <chapterinfo>
6         &author.jht;
7         &author.vl;
8         <author>&person.gd;<contrib>LDAP updates</contrib></author>
9 </chapterinfo>
11 <title>Backup Domain Control</title>
13 <para>
14 Before you continue reading this section, please make sure that you are comfortable
15 with configuring a Samba domain controller as described in <link linkend="samba-pdc">Domain Control</link>.
16 </para>
18 <sect1>
19 <title>Features and Benefits</title>
21 <para>
22 This is one of the most difficult chapters to summarize. It does not matter what we say here, for someone will
23 still draw conclusions and/or approach the Samba Team with expectations that are either not yet capable of
24 being delivered or that can be achieved far more effectively using a totally different approach. In the event
25 that you should have a persistent concern that is not addressed in this book, please email <ulink
26 url="mailto:jht@samba.org">John H. Terpstra</ulink> clearly setting out your requirements and/or question, and
27 we will do our best to provide a solution.
28 </para>
30 <para>
31 <indexterm><primary>SAM backend</primary><secondary>LDAP</secondary></indexterm>
32 <indexterm><primary>PDC</primary></indexterm>
33 <indexterm><primary>BDC</primary></indexterm>
34 <indexterm><primary>LDAP</primary><secondary>slave</secondary></indexterm>
35 <indexterm><primary>scalability</primary></indexterm>
36 Samba-3 can act as a Backup Domain Controller (BDC) to another Samba Primary Domain Controller (PDC). A
37 Samba-3 PDC can operate with an LDAP account backend. The LDAP backend can be either a common master LDAP
38 server or a slave server. The use of a slave LDAP server has the benefit that when the master is down, clients
39 may still be able to log onto the network.  This effectively gives Samba a high degree of scalability and is
40 an effective solution for large organizations. If you use an LDAP slave server for a PDC, you will need to
41 ensure the master's continued availability &smbmdash; if the slave finds its master down at the wrong time,
42 you will have stability and operational problems.
43 </para>
45 <para>
46 <indexterm><primary>two-way</primary><secondary>propagation</secondary></indexterm>
47 <indexterm><primary>replication</primary><secondary>SAM</secondary></indexterm>
48 <indexterm><primary>non-LDAP</primary><secondary>backend</secondary></indexterm>
49 <indexterm><primary>propagate</primary></indexterm>
50 While it is possible to run a Samba-3 BDC with a non-LDAP backend, that backend must allow some form of
51 "two-way" propagation of changes from the BDC to the master.  At this time only LDAP delivers the capability
52 to propagate identity database changes from the BDC to the PDC. The BDC can use a slave LDAP server, while it
53 is preferable for the PDC to use as its primary an LDAP master server.
54 </para>
56 <para>
57 <indexterm><primary>non-LDAP</primary><secondary>backend</secondary></indexterm>
58 <indexterm><primary>SAM backend</primary><secondary>non-LDAP</secondary></indexterm>
59 <indexterm><primary>domain</primary><secondary>member</secondary><tertiary>server</tertiary></indexterm>
60 <indexterm><primary>BDC</primary></indexterm>
61 <indexterm><primary>PDC</primary></indexterm>
62 <indexterm><primary>trust account password</primary></indexterm>
63 <indexterm><primary>domain trust</primary></indexterm>
64 The use of a non-LDAP backend SAM database is particularly problematic because domain member
65 servers and workstations periodically change the Machine Trust Account password. The new
66 password is then stored only locally. This means that in the absence of a centrally stored
67 accounts database (such as that provided with an LDAP-based solution) if Samba-3 is running
68 as a BDC, the BDC instance of the domain member trust account password will not reach the
69 PDC (master) copy of the SAM. If the PDC SAM is then replicated to BDCs, this results in 
70 overwriting the SAM that contains the updated (changed) trust account password with resulting
71 breakage of the domain trust.
72 </para>
74 <para>
75 <indexterm><primary>net</primary><secondary>rpc</secondary></indexterm>
76 <indexterm><primary>SAM backend</primary><secondary>ldapsam</secondary></indexterm>
77 <indexterm><primary>SAM backend</primary><secondary>tdbsam</secondary></indexterm>
78 <indexterm><primary>replication</primary><secondary>SAM</secondary></indexterm>
79 Considering the number of comments and questions raised concerning how to configure a BDC,
80 let's consider each possible option and look at the pros and cons for each possible solution.
81 <link linkend="pdc-bdc-table">The Domain Backend Account Distribution Options table below</link> lists 
82 possible design configurations for a PDC/BDC infrastructure.
83 </para>
85 <table frame="all" id="pdc-bdc-table"><title>Domain Backend Account Distribution Options</title>
86 <tgroup cols="3">
87         <colspec align="center" colwidth="1*"/>
88         <colspec align="center" colwidth="1*"/>
89         <colspec align="left" colwidth="3*"/>
91         <thead>
92         <row><entry>PDC Backend</entry><entry>BDC Backend</entry><entry>Notes/Discussion</entry></row>
93         </thead>
94         <tbody>
95         <row>
96         <entry><para>Master LDAP Server</para></entry>
97         <entry><para>Slave LDAP Server</para></entry>
98         <entry><para>The optimal solution that provides high integrity. The SAM will be
99                 replicated to a common master LDAP server.</para></entry>
100         </row>
101         <row>
102         <entry><para>Single Central LDAP Server</para></entry>
103         <entry><para>Single Central LDAP Server</para></entry>
104         <entry><para>
105         A workable solution without failover ability. This is a usable solution, but not optimal. 
106         </para></entry>
107         </row>
108         <row>
109         <entry><para>tdbsam</para></entry>
110         <entry><para>tdbsam + <command>net rpc vampire</command></para></entry>
111         <entry><para>
112         Does not work with Samba-3.0; Samba does not implement the
113         server-side protocols required.
114         </para></entry>
115         </row>
116         <row>
117         <entry><para>tdbsam</para></entry>
118         <entry><para>tdbsam + <command>rsync</command></para></entry>
119         <entry><para>
120         Do not use this configuration.
121         Does not work because the TDB files are live and data may not
122         have been flushed to disk.  Furthermore, this will cause
123         domain trust breakdown.
124         </para></entry>
125         </row>
126         <row>
127         <entry><para>smbpasswd file</para></entry>
128         <entry><para>smbpasswd file</para></entry>
129         <entry><para>
130         Do not use this configuration.
131         Not an elegant solution due to the delays in synchronization
132         and also suffers
133         from the issue of domain trust breakdown.
134         </para></entry>
135         </row>
136         </tbody>
137 </tgroup>
138 </table>
140 </sect1>
142 <sect1>
143 <title>Essential Background Information</title>
145 <para>
146 <indexterm><primary>domain controller</primary></indexterm>
147 <indexterm><primary>logon requests</primary></indexterm>
148 <indexterm><primary>LanMan</primary></indexterm>
149 <indexterm><primary>Netlogon</primary></indexterm>
150 A domain controller is a machine that is able to answer logon requests from network
151 workstations. Microsoft LanManager and IBM LanServer were two early products that
152 provided this capability. The technology has become known as the LanMan Netlogon service.
153 </para>
155 <para>
156 <indexterm>network<primary></primary><secondary>logon</secondary><tertiary>service</tertiary></indexterm>
157 <indexterm><primary>Windows NT3.10</primary></indexterm>
158 When MS Windows NT3.10 was first released, it supported a new style of Domain Control
159 and with it a new form of the network logon service that has extended functionality.
160 This service became known as the NT NetLogon Service. The nature of this service has
161 changed with the evolution of MS Windows NT and today provides a complex array of
162 services that are implemented over an intricate spectrum of technologies.
163 </para>
165 <sect2>
166 <title>MS Windows NT4-style Domain Control</title>
168 <para>
169 <indexterm><primary>domain controller</primary></indexterm>
170 <indexterm><primary>authentication server</primary></indexterm>
171 <indexterm><primary>username</primary></indexterm>
172 <indexterm><primary>password</primary></indexterm>
173 <indexterm><primary>SAM</primary></indexterm>
174 <indexterm><primary>Security Account Manager</primary><see>SAM</see></indexterm>
175 <indexterm><primary>domain control database</primary><see>SAM</see></indexterm>
176 Whenever a user logs into a Windows NT4/200x/XP Professional workstation,
177 the workstation connects to a domain controller (authentication server) to validate that
178 the username and password the user entered are valid. If the information entered
179 does not match account information that has been stored in the domain
180 control database (the SAM, or Security Account Manager database), a set of error
181 codes is returned to the workstation that has made the authentication request.
182 </para>
184 <para>
185 <indexterm><primary>account information</primary></indexterm>
186 <indexterm><primary>machine accounts database</primary></indexterm>
187 <indexterm><primary>profile</primary></indexterm>
188 <indexterm><primary>network access profile</primary></indexterm>
189 <indexterm><primary>desktop profile</primary></indexterm>
190 When the username/password pair has been validated, the domain controller
191 (authentication server) will respond with full enumeration of the account information
192 that has been stored regarding that user in the user and machine accounts database
193 for that domain. This information contains a complete network access profile for
194 the user but excludes any information that is particular to the user's desktop profile,
195 or for that matter it excludes all desktop profiles for groups that the user may
196 belong to. It does include password time limits, password uniqueness controls,
197 network access time limits, account validity information, machine names from which the
198 user may access the network, and much more. All this information was stored in the SAM
199 in all versions of MS Windows NT (3.10, 3.50, 3.51, 4.0).
200 </para>
202 <para>
203 <indexterm><primary>replication</primary><secondary>SAM</secondary></indexterm>
204 <indexterm><primary>%SystemRoot%\System32\config</primary></indexterm>
205 <indexterm><primary>C:\WinNT\System32\config</primary></indexterm>
206 <indexterm><primary>BDC</primary></indexterm>
207 <indexterm><primary>SAM</primary></indexterm>
208 The account information (user and machine) on domain controllers is stored in two files,
209 one containing the security information and the other the SAM. These are stored in files
210 by the same name in the <filename>%SystemRoot%\System32\config</filename> directory. 
211 This normally translates to the path <filename>C:\WinNT\System32\config</filename>. These
212 are the files that are involved in replication of the SAM database where BDCs are present
213 on the network.
214 </para>
216 <para>
217 There are two situations in which it is desirable to install BDCs:
218 </para>
220 <itemizedlist>
221         <listitem><para>
222         <indexterm><primary>PDC</primary></indexterm>
223         <indexterm><primary>BDC</primary></indexterm>
224         On the local network that the PDC is on, if there are many
225         workstations and/or where the PDC is generally very busy. In this case the BDCs
226         will pick up network logon requests and help to add robustness to network services.
227         </para></listitem>
229         <listitem><para>
230         <indexterm><primary>network</primary><secondary>wide-area</secondary></indexterm>
231         At each remote site, to reduce wide-area network traffic and to add stability to
232         remote network operations. The design of the network, and the strategic placement of
233         BDCs, together with an implementation that localizes as much of network to client
234         interchange as possible, will help to minimize wide-area network bandwidth needs
235         (and thus costs).
236         </para></listitem>
237 </itemizedlist>
239 <para>
240 <indexterm><primary>PDC</primary></indexterm>
241 <indexterm><primary>SAM</primary></indexterm>
242 <indexterm><primary>user account database</primary></indexterm>
243 <indexterm><primary>BDC</primary></indexterm>
244 <indexterm><primary>trigger</primary></indexterm>
245 The interoperation of a PDC and its BDCs in a true Windows NT4 environment is worth
246 mentioning here. The PDC contains the master copy of the SAM. In the event that an
247 administrator makes a change to the user account database while physically present
248 on the local network that has the PDC, the change will likely be made directly to
249 the PDC instance of the master copy of the SAM. In the event that this update may
250 be performed in a branch office, the change will likely be stored in a delta file
251 on the local BDC. The BDC will then send a trigger to the PDC to commence the process
252 of SAM synchronization. The PDC will then request the delta from the BDC and apply
253 it to the master SAM. The PDC will then contact all the BDCs in the domain and
254 trigger them to obtain the update and then apply that to their own copy of the SAM.
255 </para>
257 <para>
258 <indexterm><primary>SAM</primary><secondary>replication</secondary></indexterm>
259 <indexterm><primary>SAM</primary><secondary>delta file</secondary></indexterm>
260 <indexterm><primary>PDC</primary></indexterm>
261 <indexterm><primary>BDC</primary></indexterm>
262 Samba-3 cannot participate in true SAM replication and is therefore not able to
263 employ precisely the same protocols used by MS Windows NT4. A Samba-3 BDC will
264 not create SAM update delta files. It will not interoperate with a PDC (NT4 or Samba)
265 to synchronize the SAM from delta files that are held by BDCs.
266 </para>
268 <para>
269 <indexterm><primary>PDC</primary></indexterm>
270 <indexterm><primary>BDC</primary></indexterm>
271 Samba-3 cannot function as a BDC to an MS Windows NT4 PDC, and Samba-3 cannot
272 function correctly as a PDC to an MS Windows NT4 BDC. Both Samba-3 and MS Windows
273 NT4 can function as a BDC to its own type of PDC.
274 </para>
276 <para>
277 <indexterm><primary>SAM</primary></indexterm>
278 <indexterm><primary>BDC</primary></indexterm>
279 <indexterm><primary>domain security</primary></indexterm>
280 The BDC is said to hold a <emphasis>read-only</emphasis> of the SAM from which
281 it is able to process network logon requests and authenticate users. The BDC can
282 continue to provide this service, particularly while, for example, the wide-area
283 network link to the PDC is down. A BDC plays a very important role in both the
284 maintenance of domain security as well as in network integrity.
285 </para>
287 <para>
288 <indexterm><primary>PDC</primary></indexterm>
289 <indexterm><primary>promoted</primary></indexterm>
290 <indexterm><primary>demoted</primary></indexterm>
291 <indexterm><primary>reconfiguration</primary></indexterm>
292 In the event that the NT4 PDC should need to be taken out of service, or if it dies, one of the NT4 BDCs can
293 be promoted to a PDC. If this happens while the original NT4 PDC is online, it is automatically demoted to an
294 NT4 BDC. This is an important aspect of domain controller management. The tool that is used to effect a
295 promotion or a demotion is the Server Manager for Domains. It should be noted that Samba-3 BDCs cannot be
296 promoted in this manner because reconfiguration of Samba requires changes to the &smb.conf; file. It is easy
297 enough to manuall change the &smb.conf; file and then restart relevant Samba network services.
298 </para>
300 <sect3>
301 <title>Example PDC Configuration</title>
303 <para>
304 <indexterm><primary>domain logon</primary></indexterm>
305 <indexterm><primary>PDC</primary></indexterm>
306 Beginning with Version 2.2, Samba officially supports domain logons for all current Windows clients, including
307 Windows NT4, 2003, and XP Professional. For Samba to be enabled as a PDC, some parameters in the
308 <smbconfsection name="[global]"/> section of the &smb.conf; have to be set.  Refer to <link
309 linkend="minimalPDC">the Minimal smb.conf for a PDC in Use with a BDC &smbmdash; LDAP Server on PDC
310 section</link> for an example of the minimum required settings.
311 </para>
313 <example id="minimalPDC">
314 <title>Minimal smb.conf for a PDC in Use with a BDC &smbmdash; LDAP Server on PDC</title>
315 <smbconfblock>
316 <smbconfoption name="workgroup">&example.workgroup;</smbconfoption>
317 <smbconfoption name="passdb backend">ldapsam://localhost:389</smbconfoption>
318 <smbconfoption name="domain master">yes</smbconfoption>
319 <smbconfoption name="domain logons">yes</smbconfoption>
320 </smbconfblock>
321 </example>
323 <para>
324 <indexterm><primary>profile path</primary></indexterm>
325 <indexterm><primary>home drive</primary></indexterm>
326 Several other things like a <smbconfsection name="[homes]"/> and a
327 <smbconfsection name="[netlogon]"/> share also need to be set along with
328 settings for the profile path, the user's home drive, and so on. This is not covered in this
329 chapter; for more information please refer to <link linkend="samba-pdc">Domain Control</link>.
330 </para>
332 </sect3>
333 </sect2>
335 <sect2>
336 <title>LDAP Configuration Notes</title>
338 <para>
339 <indexterm><primary>LDAP</primary><secondary>master</secondary></indexterm>
340 <indexterm><primary>LDAP</primary><secondary>slave</secondary></indexterm>
341 <indexterm><primary>BDC</primary></indexterm>
342 When configuring a master and a slave LDAP server, it is advisable to use the master LDAP server
343 for the PDC and slave LDAP servers for the BDCs. It is not essential to use slave LDAP servers; however,
344 many administrators will want to do so in order to provide redundant services. Of course, one or more BDCs
345 may use any slave LDAP server. Then again, it is entirely possible to use a single LDAP server for the
346 entire network.
347 </para>
349 <para>
350 <indexterm><primary>LDAP</primary><secondary>master</secondary></indexterm>
351 <indexterm><primary>LDAP</primary><secondary>server</secondary></indexterm>
352 <indexterm><primary>CN</primary></indexterm>
353 <indexterm><primary>DN</primary></indexterm>
354 <indexterm><primary>RFC2830</primary></indexterm>
355 When configuring a master LDAP server that will have slave LDAP servers, do not forget to configure this in
356 the <filename>/etc/openldap/slapd.conf</filename> file. It must be noted that the DN of a server certificate
357 must use the CN attribute to name the server, and the CN must carry the servers' fully qualified domain name.
358 Additional alias names and wildcards may be present in the subjectAltName certificate extension. More details
359 on server certificate names are in RFC2830.
360 </para>
362 <para>
363 <indexterm><primary>LDAP</primary></indexterm>
364 <indexterm><primary>BDC</primary></indexterm>
365 <indexterm><primary>OpenLDAP</primary></indexterm>
366 <indexterm><primary>transport layer security</primary><see>TLS</see></indexterm>
367 <indexterm><primary>/etc/ssl/certs/slapd.pem</primary></indexterm>
368 <indexterm><primary>slapd.pem</primary></indexterm>
369 <indexterm><primary>Red Hat Linux</primary></indexterm>
370 It does not really fit within the scope of this document, but a working LDAP installation is basic to
371 LDAP-enabled Samba operation. When using an OpenLDAP server with Transport Layer Security (TLS), the machine
372 name in <filename>/etc/ssl/certs/slapd.pem</filename> must be the same as in
373 <filename>/etc/openldap/sldap.conf</filename>. The Red Hat Linux startup script creates the
374 <filename>slapd.pem</filename> file with hostname <quote>localhost.localdomain.</quote> It is impossible to
375 access this LDAP server from a slave LDAP server (i.e., a Samba BDC) unless the certificate is re-created with
376 a correct hostname.
377 </para>
379 <para>
380 <indexterm><primary>PDC</primary></indexterm>
381 <indexterm><primary>OpenLDAP</primary></indexterm>
382 <indexterm><primary>machine account</primary></indexterm>
383 <indexterm><primary>credentials</primary></indexterm>
384 <indexterm><primary>replication</primary></indexterm>
385 <indexterm><primary>duplicate</primary></indexterm>
386 Do not install a Samba PDC so that is uses an LDAP slave server. Joining client machines to the domain
387 will fail in this configuration because the change to the machine account in the LDAP tree must take place on
388 the master LDAP server. This is not replicated rapidly enough to the slave server that the PDC queries. It
389 therefore gives an error message on the client machine about not being able to set up account credentials. The
390 machine account is created on the LDAP server, but the password fields will be empty.  Unfortunately, some
391 sites are unable to avoid such configurations, and these sites should review the <smbconfoption name="ldap
392 replication sleep"/> parameter, intended to slow down Samba sufficiently for the replication to catch up.
393 This is a kludge, and one that the administrator must manually duplicate in any scripts (such as the
394 <smbconfoption name="add machine script"/>) that they use.
395 </para>
397 <para>
398 Possible PDC/BDC plus LDAP configurations include:
399 </para>
401 <itemizedlist>
402         <listitem><para>
403         PDC+BDC -> One Central LDAP Server.
404         </para></listitem>
405         <listitem><para>
406         PDC -> LDAP master server, BDC -> LDAP slave server.
407         </para></listitem>
408         <listitem><para>
409         PDC -> LDAP master, with secondary slave LDAP server.
410         </para><para>
411         BDC -> LDAP master, with secondary slave LDAP server.
412         </para></listitem>
413         <listitem><para>
414         PDC -> LDAP master, with secondary slave LDAP server.
415         </para><para>
416         BDC -> LDAP slave server, with secondary master LDAP server.
417         </para></listitem>
418 </itemizedlist>
420 <para>
421 In order to have a fallback configuration (secondary) LDAP server, you would specify
422 the secondary LDAP server in the &smb.conf; file as shown in <link linkend="mulitldapcfg">the Multiple LDAP
423 Servers in &smb.conf; example</link>.
424 </para>
426 <example id="mulitldapcfg">
427 <title>Multiple LDAP Servers in &smb.conf;</title>
428 <smbconfblock>
429 <smbconfoption name="passdb backend">ldapsam:"ldap://master.quenya.org ldap://slave.quenya.org"</smbconfoption>
430 </smbconfblock>
431 </example>
433 </sect2>
435 <sect2>
436 <title>Active Directory Domain Control</title>
438 <para>
439 <indexterm><primary>MS Windows 2000</primary></indexterm>
440 <indexterm><primary>Active Directory</primary></indexterm>
441 <indexterm><primary>directory</primary></indexterm>
442 <indexterm><primary>replicated</primary></indexterm>
443 <indexterm><primary>BDC</primary></indexterm>
444 <indexterm><primary>domain controller</primary></indexterm>
445 As of the release of MS Windows 2000 and Active Directory, this information is now stored
446 in a directory that can be replicated and for which partial or full administrative control
447 can be delegated. Samba-3 is not able to be a domain controller within an Active Directory
448 tree, and it cannot be an Active Directory server. This means that Samba-3 also cannot
449 act as a BDC to an Active Directory domain controller.
450 </para>
452 </sect2>
454 <sect2>
455 <title>What Qualifies a Domain Controller on the Network?</title>
457 <para>
458 <indexterm><primary>DMB</primary></indexterm>
459 <indexterm><primary>PDC</primary></indexterm>
460 <indexterm><primary>WINS</primary></indexterm>
461 <indexterm><primary>NetBIOS</primary></indexterm>
462 Every machine that is a domain controller for the domain MIDEARTH has to register the NetBIOS
463 group name MIDEARTH&lt;#1C&gt; with the WINS server and/or by broadcast on the local network.
464 The PDC also registers the unique NetBIOS name MIDEARTH&lt;#1B&gt; with the WINS server.
465 The name type &lt;#1B&gt; name is normally reserved for the Domain Master Browser (DMB), a role
466 that has nothing to do with anything related to authentication, but the Microsoft domain
467 implementation requires the DMB to be on the same machine as the PDC.
468 </para>
470 <para>
471 <indexterm><primary>broadcast</primary></indexterm>
472 <indexterm><primary>name registration</primary></indexterm>
473 <indexterm><primary>SMB/CIFS</primary></indexterm>
474 Where a WINS server is not used, broadcast name registrations alone must suffice. Refer to
475 <link linkend="NetworkBrowsing">Network Browsing</link>,<link linkend="netdiscuss">Discussion</link>
476 for more information regarding TCP/IP network protocols and how SMB/CIFS names are handled.
477 </para>
479 </sect2>
481 <sect2>
482 <title>How Does a Workstation find its Domain Controller?</title>
484 <para>
485 <indexterm><primary>locate domain controller</primary></indexterm>
486 <indexterm><primary>NetBIOS</primary></indexterm>
487 There are two different mechanisms to locate a domain controller: one method is used when
488 NetBIOS over TCP/IP is enabled and the other when it has been disabled in the TCP/IP
489 network configuration.
490 </para>
492 <para>
493 <indexterm><primary>DNS</primary></indexterm>
494 <indexterm><primary>broadcast messaging</primary></indexterm>
495 Where NetBIOS over TCP/IP is disabled, all name resolution involves the use of DNS, broadcast
496 messaging over UDP, as well as Active Directory communication technologies. In this type of
497 environment all machines require appropriate DNS entries. More information may be found in
498 <link linkend="adsdnstech">DNS and Active Directory</link>.
499 </para>
501 <sect3>
502 <title>NetBIOS Over TCP/IP Enabled</title>
503 <para>
504 <indexterm><primary>Windows NT4/200x/XP</primary></indexterm>
505 <indexterm><primary>domain controller</primary></indexterm>
506 <indexterm><primary>logon requests</primary></indexterm>
507 <indexterm><primary>credentials validation</primary></indexterm>
508 An MS Windows NT4/200x/XP Professional workstation in the domain MIDEARTH that wants a
509 local user to be authenticated has to find the domain controller for MIDEARTH. It does this
510 by doing a NetBIOS name query for the group name MIDEARTH&lt;#1c&gt;. It assumes that each
511 of the machines it gets back from the queries is a domain controller and can answer logon
512 requests. To not open security holes, both the workstation and the selected domain controller
513 authenticate each other. After that the workstation sends the user's credentials (name and
514 password) to the local domain controller for validation.
515 </para>
517 </sect3>
519 <sect3>
520 <title>NetBIOS Over TCP/IP Disabled</title>
522 <para>
523 <indexterm><primary>realm</primary></indexterm>
524 <indexterm><primary>logon authentication</primary></indexterm>
525 <indexterm><primary>DNS</primary></indexterm>
526 <indexterm><primary>_ldap._tcp.pdc._msdcs.quenya.org</primary></indexterm>
527 An MS Windows NT4/200x/XP Professional workstation in the realm <constant>quenya.org</constant>
528 that has a need to affect user logon authentication will locate the domain controller by 
529 re-querying DNS servers for the <constant>_ldap._tcp.pdc._msdcs.quenya.org</constant> record.
530 More information regarding this subject may be found in <link linkend="adsdnstech">DNS and Active Directory</link>.
531 </para>
533 </sect3>
534 </sect2>
535 </sect1>
537 <sect1>
538 <title>Backup Domain Controller Configuration</title>
540 <para>
541 <indexterm><primary>BDC</primary></indexterm>
542 The creation of a BDC requires some steps to prepare the Samba server before
543 &smbd; is executed for the first time. These steps are as follows:
544 </para>
546 <itemizedlist>
547         <listitem><para>
548         <indexterm><primary>SID</primary></indexterm>
549         <indexterm><primary>PDC</primary></indexterm>
550         <indexterm><primary>BDC</primary></indexterm>
551         <indexterm><primary>private/secrets.tdb</primary></indexterm>
552         <indexterm><primary>private/MACHINE.SID</primary></indexterm>
553         <indexterm><primary>domain SID</primary></indexterm>
554         The domain SID has to be the same on the PDC and the BDC. In Samba versions
555         pre-2.2.5, the domain SID was stored in the file <filename>private/MACHINE.SID</filename>.
556         The domain SID is now stored in the file <filename>private/secrets.tdb</filename>. This file
557         is unique to each server and cannot be copied from a PDC to a BDC; the BDC will generate
558         a new SID at startup. It will overwrite the PDC domain SID with the newly created BDC SID.
559         There is a procedure that will allow the BDC to aquire the domain SID. This is described here.
560         </para>
562         <para>
563         <indexterm><primary>domain SID</primary></indexterm>
564         <indexterm><primary>PDC</primary></indexterm>
565         <indexterm><primary>BDC</primary></indexterm>
566         <indexterm><primary>secrets.tdb</primary></indexterm>
567         <indexterm><primary>net</primary><secondary>rpc</secondary><tertiary>getsid</tertiary></indexterm>
568         To retrieve the domain SID from the PDC or an existing BDC and store it in the
569         <filename>secrets.tdb</filename>, execute:
570         </para>
571 <screen>
572 &rootprompt;<userinput>net rpc getsid</userinput>
573 </screen>
574         </listitem>
576         <listitem><para>
577         <indexterm><primary>secrets.tdb</primary></indexterm>
578         <indexterm><primary>smbpasswd</primary></indexterm>
579         <indexterm><primary>LDAP administration password</primary></indexterm>
580         Specification of the <smbconfoption name="ldap admin dn"/> is obligatory.
581         This also requires the LDAP administration password to be set in the <filename>secrets.tdb</filename>
582         using the <command>smbpasswd -w <replaceable>mysecret</replaceable></command>.
583         </para></listitem>
585         <listitem><para>
586         Either <smbconfoption name="ldap suffix"/> or
587         <smbconfoption name="ldap idmap suffix"/> must be specified in
588         the &smb.conf; file.
589         </para></listitem>
591         <listitem><para>
592         <indexterm><primary>replication</primary><secondary>SAM</secondary></indexterm>
593         <indexterm><primary>user database</primary></indexterm>
594         <indexterm><primary>synchronized</primary></indexterm>
595         <indexterm><primary>NIS</primary></indexterm>
596         The UNIX user database has to be synchronized from the PDC to the
597         BDC. This means that both the <filename>/etc/passwd</filename> and
598         <filename>/etc/group</filename> have to be replicated from the PDC
599         to the BDC. This can be done manually whenever changes are made. 
600         Alternately, the PDC is set up as an NIS master server and the BDC as an NIS slave
601         server. To set up the BDC as a mere NIS client would not be enough,
602         as the BDC would not be able to access its user database in case of
603         a PDC failure. NIS is by no means the only method to synchronize
604         passwords. An LDAP solution would also work.
605         </para>
606         </listitem>
608         <listitem><para>
609         <indexterm><primary>password database</primary></indexterm>
610         <indexterm><primary>replicated</primary></indexterm>
611         <indexterm><primary>PDC</primary></indexterm>
612         <indexterm><primary>BDC</primary></indexterm>
613         <indexterm><primary>smbpasswd</primary></indexterm>
614         <indexterm><primary>rsync</primary></indexterm>
615         <indexterm><primary>ssh</primary></indexterm>
616         <indexterm><primary>LDAP</primary></indexterm>
617         The Samba password database must be replicated from the PDC to the BDC.
618         Although it is possible to synchronize the <filename>smbpasswd</filename>
619         file with <command>rsync</command> and <command>ssh</command>, this method
620         is broken and flawed, and is therefore not recommended. A better solution
621         is to set up slave LDAP servers for each BDC and a master LDAP server for the PDC.
622         </para></listitem>
624         <listitem><para>
625         <indexterm><primary>netlogon share</primary></indexterm>
626         <indexterm><primary>replicate</primary></indexterm>
627         <indexterm><primary>PDC</primary></indexterm>
628         <indexterm><primary>BDC</primary></indexterm>
629         <indexterm><primary>cron</primary></indexterm>
630         <indexterm><primary>rsync</primary></indexterm>
631         The netlogon share has to be replicated from the PDC to the
632         BDC. This can be done manually whenever login scripts are changed,
633         or it can be done automatically using a <command>cron</command> job
634         that will replicate the directory structure in this share using a tool
635         like <command>rsync</command>.
636         </para></listitem>
638 </itemizedlist>
640 <sect2>
641 <title>Example Configuration</title>
643 <para> Finally, the BDC has to be found by the workstations. This can be
644 done by configuring the Samba &smb.conf; file <smbconfsection name="[global]"/> section 
645 as shown in <link linkend="minim-bdc">Minimal Setup for Being a BDC</link>.
646 </para>
648 <example id="minim-bdc">
649 <title>Minimal Setup for Being a BDC</title>
650 <smbconfblock>
651 <smbconfoption name="workgroup">&example.workgroup;</smbconfoption>
652 <smbconfoption name="passdb backend">ldapsam:ldap://slave-ldap.quenya.org</smbconfoption>
653 <smbconfoption name="domain master">no</smbconfoption>
654 <smbconfoption name="domain logons">yes</smbconfoption>
655 <smbconfoption name="idmap backend">ldap:ldap://slave-ldap.quenya.org</smbconfoption>
656 </smbconfblock>
657 </example>
659 <para>
660 <indexterm><primary>BDC</primary></indexterm>
661 <indexterm><primary>NetBIOS</primary></indexterm>
662 <indexterm><primary>group</primary></indexterm>
663 <indexterm><primary>PDC</primary></indexterm>
664 This configuration causes the BDC to register only the name MIDEARTH&lt;#1C&gt; with the
665 WINS server. This is not a problem, as the name MIDEARTH&lt;#1C&gt; is a NetBIOS group name
666 that is meant to be registered by more than one machine. The parameter
667 <smbconfoption name="domain master">no</smbconfoption>
668 forces the BDC not to register MIDEARTH&lt;#1B&gt;, which is a unique NetBIOS name that 
669 is reserved for the PDC.
670 </para>
672 <para>
673 <indexterm><primary>idmap backend</primary></indexterm>
674 <indexterm><primary>winbindd</primary></indexterm>
675 <indexterm><primary>redirect</primary></indexterm>
676 <indexterm><primary>winbindd</primary></indexterm>
677 <indexterm><primary>LDAP database</primary></indexterm>
678 <indexterm><primary>UID</primary></indexterm>
679 <indexterm><primary>GID</primary></indexterm>
680 The <parameter>idmap backend</parameter> will redirect the <command>winbindd</command> utility to
681 use the LDAP database to resolve all UIDs and GIDs for UNIX accounts.
682 </para>
684 <note><para>
685 <indexterm><primary>Server Type</primary><secondary>Domain Member</secondary></indexterm>
686 <indexterm><primary>ID mapping</primary></indexterm>
687 <indexterm><primary>domain member server</primary></indexterm>
688 <indexterm><primary>idmap backend</primary></indexterm>
689 Samba-3 has introduced a new ID mapping facility. One of the features of this facility is that it
690 allows greater flexibility in how user and group IDs are handled in respect to NT domain user and group
691 SIDs. One of the new facilities provides for explicitly ensuring that UNIX/Linux UID and GID values
692 will be consistent on the PDC, all BDCs, and all domain member servers. The parameter that controls this
693 is called <parameter>idmap backend</parameter>. Please refer to the man page for &smb.conf; for more information
694 regarding its behavior.
695 </para></note>
697 <para>
698 <indexterm><primary>BDC</primary></indexterm>
699 <indexterm><primary>winbindd</primary></indexterm>
700 <indexterm><primary>domain member servers</primary></indexterm>
701 The use of the <smbconfoption name="idmap backend">ldap:ldap://master.quenya.org</smbconfoption>
702 option on a BDC only makes sense where ldapsam is used on a PDC. The purpose of an LDAP-based idmap backend is
703 also to allow a domain member (without its own passdb backend) to use winbindd to resolve Windows network users
704 and groups to common UID/GIDs. In other words, this option is generally intended for use on BDCs and on domain
705 member servers.
706 </para>
708 </sect2>
709 </sect1>
711 <sect1>
712 <title>Common Errors</title>
714 <para>
715 <indexterm><primary>domain control</primary></indexterm>
716 As domain control is a rather new area for Samba, there are not many examples that we may refer to.
717 Updates will be published as they become available and may be found in later Samba releases or
718 from the Samba Web <ulink url="http://samba.org">site</ulink>.
719 </para>
721 <sect2>
722 <title>Machine Accounts Keep Expiring</title>
724 <para>
725 <indexterm><primary>Machine Trust Accounts</primary></indexterm>
726 <indexterm><primary>passdb</primary></indexterm>
727 <indexterm><primary>SAM</primary></indexterm>
728 <indexterm><primary>Local Machine Trust Account</primary></indexterm>
729 This problem will occur when the passdb (SAM) files are copied  from a central
730 server but the local BDC is acting as a PDC. This results in the application of
731 Local Machine Trust Account password updates to the local SAM. Such updates 
732 are not copied back to the central server. The newer machine account password is then
733 overwritten when the SAM is recopied from the PDC. The result is that the domain member machine
734 on startup will find that its passwords do not match the one now in the database, and
735 since the startup security check will now fail, this machine will not allow logon attempts
736 to proceed and the account expiry error will be reported.
737 </para>
739 <para>
740 The solution is to use a more robust passdb backend, such as the ldapsam backend, setting up
741 a slave LDAP server for each BDC and a master LDAP server for the PDC.
742 </para>
744 </sect2>
746 <sect2>
747 <title>Can Samba Be a Backup Domain Controller to an NT4 PDC?</title>
749 <para>
750 <indexterm><primary>replication</primary><secondary>SAM</secondary></indexterm>
751 <indexterm><primary>SAM</primary></indexterm>
752 No. The native NT4 SAM replication protocols have not yet been fully implemented.
753 </para>
755 <para>
756 <indexterm><primary>BDC</primary></indexterm>
757 <indexterm><primary>PDC</primary></indexterm>
758 <indexterm><primary>logon requests</primary></indexterm>
759 Can I get the benefits of a BDC with Samba?  Yes, but only to a Samba PDC.The
760 main reason for implementing a BDC is availability. If the PDC is a Samba
761 machine, a second Samba machine can be set up to service logon requests whenever
762 the PDC is down.
763 </para>
765 </sect2>
767 <sect2>
768 <title>How Do I Replicate the smbpasswd File?</title>
770 <para>
771 <indexterm><primary>replication</primary><secondary>SAM</secondary></indexterm>
772 <indexterm><primary>smbpasswd</primary></indexterm>
773 <indexterm><primary>SAM</primary></indexterm>
774 Replication of the smbpasswd file is sensitive. It has to be done whenever changes
775 to the SAM are made. Every user's password change is done in the smbpasswd file and
776 has to be replicated to the BDC. So replicating the smbpasswd file very often is necessary.
777 </para>
779 <para>
780 <indexterm><primary>plaintext password</primary></indexterm>
781 <indexterm><primary>ssh</primary></indexterm>
782 <indexterm><primary>rsync</primary></indexterm>
783 As the smbpasswd file contains plaintext password equivalents, it must not be
784 sent unencrypted over the wire. The best way to set up smbpasswd replication from
785 the PDC to the BDC is to use the utility rsync. rsync can use ssh as a transport.
786 <command>ssh</command> itself can be set up to accept <emphasis>only</emphasis>
787 <command>rsync</command> transfer without requiring the user to type a password.
788 </para>
790 <para>
791 <indexterm><primary>machine trust accounts</primary></indexterm>
792 <indexterm><primary>LDAP</primary></indexterm>
793 As said a few times before, use of this method is broken and flawed. Machine trust 
794 accounts will go out of sync, resulting in a broken domain. This method is
795 <emphasis>not</emphasis> recommended. Try using LDAP instead.
796 </para>
798 </sect2>
800 <sect2>
801 <title>Can I Do This All with LDAP?</title>
803 <para>
804 <indexterm><primary>pdb_ldap</primary></indexterm>
805 <indexterm><primary>LDAP</primary></indexterm>
806 The simple answer is yes. Samba's pdb_ldap code supports binding to a replica
807 LDAP server and will also follow referrals and rebind to the master if it ever
808 needs to make a modification to the database. (Normally BDCs are read-only, so
809 this will not occur often).
810 </para>
812 </sect2>
813 </sect1>
814 </chapter>