/mandos/trunk

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/trunk

« back to all changes in this revision

Viewing changes to mandos.xml

  • Committer: Teddy Hogeborn
  • Date: 2011-12-03 01:04:54 UTC
  • Revision ID: teddy@recompile.se-20111203010454-9g5cyo2x7xwnacc5
* mandos (ClientDBus.approval_delay, ClientDBus.approval_duration,
  ClientDBus.timeout, ClientDBus.extended_timeout,
  ClientDBus.interval): Bug fix: Cast to correct D-Bus type.
* mandos-ctl (string_to_delta): Interpret unadorned numbers as
                                milliseconds.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
<?xml version="1.0" encoding="UTF-8"?>
2
2
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3
3
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4
 
<!ENTITY VERSION "1.0">
5
4
<!ENTITY COMMANDNAME "mandos">
6
 
<!ENTITY TIMESTAMP "2008-08-31">
 
5
<!ENTITY TIMESTAMP "2011-10-22">
 
6
<!ENTITY % common SYSTEM "common.ent">
 
7
%common;
7
8
]>
8
9
 
9
10
<refentry xmlns:xi="http://www.w3.org/2001/XInclude">
10
 
  <refentryinfo>
 
11
   <refentryinfo>
11
12
    <title>Mandos Manual</title>
12
13
    <!-- NWalsh’s docbook scripts use this to generate the footer: -->
13
14
    <productname>Mandos</productname>
14
 
    <productnumber>&VERSION;</productnumber>
 
15
    <productnumber>&version;</productnumber>
15
16
    <date>&TIMESTAMP;</date>
16
17
    <authorgroup>
17
18
      <author>
18
19
        <firstname>Björn</firstname>
19
20
        <surname>Påhlsson</surname>
20
21
        <address>
21
 
          <email>belorn@fukt.bsnet.se</email>
 
22
          <email>belorn@recompile.se</email>
22
23
        </address>
23
24
      </author>
24
25
      <author>
25
26
        <firstname>Teddy</firstname>
26
27
        <surname>Hogeborn</surname>
27
28
        <address>
28
 
          <email>teddy@fukt.bsnet.se</email>
 
29
          <email>teddy@recompile.se</email>
29
30
        </address>
30
31
      </author>
31
32
    </authorgroup>
32
33
    <copyright>
33
34
      <year>2008</year>
 
35
      <year>2009</year>
 
36
      <year>2010</year>
 
37
      <year>2011</year>
34
38
      <holder>Teddy Hogeborn</holder>
35
39
      <holder>Björn Påhlsson</holder>
36
40
    </copyright>
37
 
    <legalnotice>
38
 
      <para>
39
 
        This manual page is free software: you can redistribute it
40
 
        and/or modify it under the terms of the GNU General Public
41
 
        License as published by the Free Software Foundation,
42
 
        either version 3 of the License, or (at your option) any
43
 
        later version.
44
 
      </para>
45
 
 
46
 
      <para>
47
 
        This manual page is distributed in the hope that it will
48
 
        be useful, but WITHOUT ANY WARRANTY; without even the
49
 
        implied warranty of MERCHANTABILITY or FITNESS FOR A
50
 
        PARTICULAR PURPOSE.  See the GNU General Public License
51
 
        for more details.
52
 
      </para>
53
 
 
54
 
      <para>
55
 
        You should have received a copy of the GNU General Public
56
 
        License along with this program; If not, see
57
 
        <ulink url="http://www.gnu.org/licenses/"/>.
58
 
      </para>
59
 
    </legalnotice>
 
41
    <xi:include href="legalnotice.xml"/>
60
42
  </refentryinfo>
61
 
 
 
43
  
62
44
  <refmeta>
63
45
    <refentrytitle>&COMMANDNAME;</refentrytitle>
64
46
    <manvolnum>8</manvolnum>
70
52
      Gives encrypted passwords to authenticated Mandos clients
71
53
    </refpurpose>
72
54
  </refnamediv>
73
 
 
 
55
  
74
56
  <refsynopsisdiv>
75
57
    <cmdsynopsis>
76
58
      <command>&COMMANDNAME;</command>
105
87
      <replaceable>DIRECTORY</replaceable></option></arg>
106
88
      <sbr/>
107
89
      <arg><option>--debug</option></arg>
 
90
      <sbr/>
 
91
      <arg><option>--debuglevel
 
92
      <replaceable>LEVEL</replaceable></option></arg>
 
93
      <sbr/>
 
94
      <arg><option>--no-dbus</option></arg>
 
95
      <sbr/>
 
96
      <arg><option>--no-ipv6</option></arg>
 
97
      <sbr/>
 
98
      <arg><option>--no-restore</option></arg>
108
99
    </cmdsynopsis>
109
100
    <cmdsynopsis>
110
101
      <command>&COMMANDNAME;</command>
122
113
      <arg choice="plain"><option>--check</option></arg>
123
114
    </cmdsynopsis>
124
115
  </refsynopsisdiv>
125
 
 
 
116
  
126
117
  <refsect1 id="description">
127
118
    <title>DESCRIPTION</title>
128
119
    <para>
129
120
      <command>&COMMANDNAME;</command> is a server daemon which
130
121
      handles incoming request for passwords for a pre-defined list of
131
 
      client host computers.  The Mandos server uses Zeroconf to
132
 
      announce itself on the local network, and uses TLS to
133
 
      communicate securely with and to authenticate the clients.  The
134
 
      Mandos server uses IPv6 to allow Mandos clients to use IPv6
135
 
      link-local addresses, since the clients will probably not have
136
 
      any other addresses configured (see <xref linkend="overview"/>).
137
 
      Any authenticated client is then given the stored pre-encrypted
138
 
      password for that specific client.
 
122
      client host computers. For an introduction, see
 
123
      <citerefentry><refentrytitle>intro</refentrytitle>
 
124
      <manvolnum>8mandos</manvolnum></citerefentry>. The Mandos server
 
125
      uses Zeroconf to announce itself on the local network, and uses
 
126
      TLS to communicate securely with and to authenticate the
 
127
      clients.  The Mandos server uses IPv6 to allow Mandos clients to
 
128
      use IPv6 link-local addresses, since the clients will probably
 
129
      not have any other addresses configured (see <xref
 
130
      linkend="overview"/>).  Any authenticated client is then given
 
131
      the stored pre-encrypted password for that specific client.
139
132
    </para>
140
 
 
141
133
  </refsect1>
142
134
  
143
135
  <refsect1 id="purpose">
144
136
    <title>PURPOSE</title>
145
 
 
146
137
    <para>
147
138
      The purpose of this is to enable <emphasis>remote and unattended
148
139
      rebooting</emphasis> of client host computer with an
149
140
      <emphasis>encrypted root file system</emphasis>.  See <xref
150
141
      linkend="overview"/> for details.
151
142
    </para>
152
 
 
153
143
  </refsect1>
154
144
  
155
145
  <refsect1 id="options">
156
146
    <title>OPTIONS</title>
157
 
 
158
147
    <variablelist>
159
148
      <varlistentry>
 
149
        <term><option>--help</option></term>
160
150
        <term><option>-h</option></term>
161
 
        <term><option>--help</option></term>
162
151
        <listitem>
163
152
          <para>
164
153
            Show a help message and exit
165
154
          </para>
166
155
        </listitem>
167
156
      </varlistentry>
168
 
 
 
157
      
169
158
      <varlistentry>
 
159
        <term><option>--interface</option>
 
160
        <replaceable>NAME</replaceable></term>
170
161
        <term><option>-i</option>
171
162
        <replaceable>NAME</replaceable></term>
172
 
        <term><option>--interface</option>
173
 
        <replaceable>NAME</replaceable></term>
174
163
        <listitem>
175
164
          <xi:include href="mandos-options.xml" xpointer="interface"/>
176
165
        </listitem>
177
166
      </varlistentry>
178
 
 
 
167
      
179
168
      <varlistentry>
180
 
        <term><literal>-a</literal>, <literal>--address <replaceable>
181
 
        ADDRESS</replaceable></literal></term>
 
169
        <term><option>--address
 
170
        <replaceable>ADDRESS</replaceable></option></term>
 
171
        <term><option>-a
 
172
        <replaceable>ADDRESS</replaceable></option></term>
182
173
        <listitem>
183
174
          <xi:include href="mandos-options.xml" xpointer="address"/>
184
175
        </listitem>
185
176
      </varlistentry>
186
 
 
 
177
      
187
178
      <varlistentry>
188
 
        <term><literal>-p</literal>, <literal>--port <replaceable>
189
 
        PORT</replaceable></literal></term>
 
179
        <term><option>--port
 
180
        <replaceable>PORT</replaceable></option></term>
 
181
        <term><option>-p
 
182
        <replaceable>PORT</replaceable></option></term>
190
183
        <listitem>
191
184
          <xi:include href="mandos-options.xml" xpointer="port"/>
192
185
        </listitem>
193
186
      </varlistentry>
194
 
 
 
187
      
195
188
      <varlistentry>
196
 
        <term><literal>--check</literal></term>
 
189
        <term><option>--check</option></term>
197
190
        <listitem>
198
191
          <para>
199
192
            Run the server’s self-tests.  This includes any unit
201
194
          </para>
202
195
        </listitem>
203
196
      </varlistentry>
204
 
 
 
197
      
205
198
      <varlistentry>
206
 
        <term><literal>--debug</literal></term>
 
199
        <term><option>--debug</option></term>
207
200
        <listitem>
208
201
          <xi:include href="mandos-options.xml" xpointer="debug"/>
209
202
        </listitem>
210
203
      </varlistentry>
211
 
 
212
 
      <varlistentry>
213
 
        <term><literal>--priority <replaceable>
214
 
        PRIORITY</replaceable></literal></term>
 
204
      
 
205
      <varlistentry>
 
206
        <term><option>--debuglevel
 
207
        <replaceable>LEVEL</replaceable></option></term>
 
208
        <listitem>
 
209
          <para>
 
210
            Set the debugging log level.
 
211
            <replaceable>LEVEL</replaceable> is a string, one of
 
212
            <quote><literal>CRITICAL</literal></quote>,
 
213
            <quote><literal>ERROR</literal></quote>,
 
214
            <quote><literal>WARNING</literal></quote>,
 
215
            <quote><literal>INFO</literal></quote>, or
 
216
            <quote><literal>DEBUG</literal></quote>, in order of
 
217
            increasing verbosity.  The default level is
 
218
            <quote><literal>WARNING</literal></quote>.
 
219
          </para>
 
220
        </listitem>
 
221
      </varlistentry>
 
222
      
 
223
      <varlistentry>
 
224
        <term><option>--priority <replaceable>
 
225
        PRIORITY</replaceable></option></term>
215
226
        <listitem>
216
227
          <xi:include href="mandos-options.xml" xpointer="priority"/>
217
228
        </listitem>
218
229
      </varlistentry>
219
 
 
 
230
      
220
231
      <varlistentry>
221
 
        <term><literal>--servicename <replaceable>NAME</replaceable>
222
 
        </literal></term>
 
232
        <term><option>--servicename
 
233
        <replaceable>NAME</replaceable></option></term>
223
234
        <listitem>
224
235
          <xi:include href="mandos-options.xml"
225
236
                      xpointer="servicename"/>
226
237
        </listitem>
227
238
      </varlistentry>
228
 
 
 
239
      
229
240
      <varlistentry>
230
 
        <term><literal>--configdir <replaceable>DIR</replaceable>
231
 
        </literal></term>
 
241
        <term><option>--configdir
 
242
        <replaceable>DIRECTORY</replaceable></option></term>
232
243
        <listitem>
233
244
          <para>
234
245
            Directory to search for configuration files.  Default is
240
251
          </para>
241
252
        </listitem>
242
253
      </varlistentry>
243
 
 
 
254
      
244
255
      <varlistentry>
245
 
        <term><literal>--version</literal></term>
 
256
        <term><option>--version</option></term>
246
257
        <listitem>
247
258
          <para>
248
259
            Prints the program version and exit.
249
260
          </para>
250
261
        </listitem>
251
262
      </varlistentry>
 
263
      
 
264
      <varlistentry>
 
265
        <term><option>--no-dbus</option></term>
 
266
        <listitem>
 
267
          <xi:include href="mandos-options.xml" xpointer="dbus"/>
 
268
          <para>
 
269
            See also <xref linkend="dbus_interface"/>.
 
270
          </para>
 
271
        </listitem>
 
272
      </varlistentry>
 
273
      
 
274
      <varlistentry>
 
275
        <term><option>--no-ipv6</option></term>
 
276
        <listitem>
 
277
          <xi:include href="mandos-options.xml" xpointer="ipv6"/>
 
278
        </listitem>
 
279
      </varlistentry>
 
280
      
 
281
      <varlistentry>
 
282
        <term><option>--no-restore</option></term>
 
283
        <listitem>
 
284
          <xi:include href="mandos-options.xml" xpointer="restore"/>
 
285
        </listitem>
 
286
      </varlistentry>
252
287
    </variablelist>
253
288
  </refsect1>
254
 
 
 
289
  
255
290
  <refsect1 id="overview">
256
291
    <title>OVERVIEW</title>
257
292
    <xi:include href="overview.xml"/>
258
293
    <para>
259
294
      This program is the server part.  It is a normal server program
260
295
      and will run in a normal system environment, not in an initial
261
 
      RAM disk environment.
 
296
      <acronym>RAM</acronym> disk environment.
262
297
    </para>
263
298
  </refsect1>
264
 
 
 
299
  
265
300
  <refsect1 id="protocol">
266
301
    <title>NETWORK PROTOCOL</title>
267
302
    <para>
319
354
      </row>
320
355
    </tbody></tgroup></table>
321
356
  </refsect1>
322
 
 
 
357
  
323
358
  <refsect1 id="checking">
324
359
    <title>CHECKING</title>
325
360
    <para>
326
361
      The server will, by default, continually check that the clients
327
362
      are still up.  If a client has not been confirmed as being up
328
363
      for some time, the client is assumed to be compromised and is no
329
 
      longer eligible to receive the encrypted password.  The timeout,
330
 
      checker program, and interval between checks can be configured
331
 
      both globally and per client; see <citerefentry>
 
364
      longer eligible to receive the encrypted password.  (Manual
 
365
      intervention is required to re-enable a client.)  The timeout,
 
366
      extended timeout, checker program, and interval between checks
 
367
      can be configured both globally and per client; see
 
368
      <citerefentry><refentrytitle>mandos-clients.conf</refentrytitle>
 
369
      <manvolnum>5</manvolnum></citerefentry>.  A client successfully
 
370
      receiving its password will also be treated as a successful
 
371
      checker run.
 
372
    </para>
 
373
  </refsect1>
 
374
  
 
375
  <refsect1 id="approval">
 
376
    <title>APPROVAL</title>
 
377
    <para>
 
378
      The server can be configured to require manual approval for a
 
379
      client before it is sent its secret.  The delay to wait for such
 
380
      approval and the default action (approve or deny) can be
 
381
      configured both globally and per client; see <citerefentry>
332
382
      <refentrytitle>mandos-clients.conf</refentrytitle>
333
 
      <manvolnum>5</manvolnum></citerefentry>.
334
 
    </para>
 
383
      <manvolnum>5</manvolnum></citerefentry>.  By default all clients
 
384
      will be approved immediately without delay.
 
385
    </para>
 
386
    <para>
 
387
      This can be used to deny a client its secret if not manually
 
388
      approved within a specified time.  It can also be used to make
 
389
      the server delay before giving a client its secret, allowing
 
390
      optional manual denying of this specific client.
 
391
    </para>
 
392
    
335
393
  </refsect1>
336
 
 
 
394
  
337
395
  <refsect1 id="logging">
338
396
    <title>LOGGING</title>
339
397
    <para>
340
398
      The server will send log message with various severity levels to
341
 
      <filename>/dev/log</filename>.  With the
 
399
      <filename class="devicefile">/dev/log</filename>.  With the
342
400
      <option>--debug</option> option, it will log even more messages,
343
401
      and also show them on the console.
344
402
    </para>
345
403
  </refsect1>
346
 
 
 
404
  
 
405
  <refsect1 id="dbus_interface">
 
406
    <title>D-BUS INTERFACE</title>
 
407
    <para>
 
408
      The server will by default provide a D-Bus system bus interface.
 
409
      This interface will only be accessible by the root user or a
 
410
      Mandos-specific user, if such a user exists.  For documentation
 
411
      of the D-Bus API, see the file <filename>DBUS-API</filename>.
 
412
    </para>
 
413
  </refsect1>
 
414
  
347
415
  <refsect1 id="exit_status">
348
416
    <title>EXIT STATUS</title>
349
417
    <para>
351
419
      critical error is encountered.
352
420
    </para>
353
421
  </refsect1>
354
 
 
 
422
  
355
423
  <refsect1 id="environment">
356
424
    <title>ENVIRONMENT</title>
357
425
    <variablelist>
371
439
      </varlistentry>
372
440
    </variablelist>
373
441
  </refsect1>
374
 
 
375
 
  <refsect1 id="file">
 
442
  
 
443
  <refsect1 id="files">
376
444
    <title>FILES</title>
377
445
    <para>
378
446
      Use the <option>--configdir</option> option to change where
401
469
        </listitem>
402
470
      </varlistentry>
403
471
      <varlistentry>
404
 
        <term><filename>/var/run/mandos/mandos.pid</filename></term>
 
472
        <term><filename>/var/run/mandos.pid</filename></term>
405
473
        <listitem>
406
474
          <para>
407
 
            The file containing the process id of
408
 
            <command>&COMMANDNAME;</command>.
 
475
            The file containing the process id of the
 
476
            <command>&COMMANDNAME;</command> process started last.
409
477
          </para>
410
478
        </listitem>
411
479
      </varlistentry>
412
480
      <varlistentry>
413
 
        <term><filename>/dev/log</filename></term>
 
481
        <term><filename class="devicefile">/dev/log</filename></term>
414
482
        <listitem>
415
483
          <para>
416
484
            The Unix domain socket to where local syslog messages are
439
507
      backtrace.  This could be considered a feature.
440
508
    </para>
441
509
    <para>
442
 
      Currently, if a client is declared <quote>invalid</quote> due to
443
 
      having timed out, the server does not record this fact onto
444
 
      permanent storage.  This has some security implications, see
445
 
      <xref linkend="CLIENTS"/>.
446
 
    </para>
447
 
    <para>
448
 
      There is currently no way of querying the server of the current
449
 
      status of clients, other than analyzing its <systemitem
450
 
      class="service">syslog</systemitem> output.
 
510
      Currently, if a client is disabled due to having timed out, the
 
511
      server does not record this fact onto permanent storage.  This
 
512
      has some security implications, see <xref linkend="clients"/>.
451
513
    </para>
452
514
    <para>
453
515
      There is no fine-grained control over logging and debug output.
456
518
      Debug mode is conflated with running in the foreground.
457
519
    </para>
458
520
    <para>
459
 
      The console log messages does not show a timestamp.
 
521
      This server does not check the expire time of clients’ OpenPGP
 
522
      keys.
460
523
    </para>
461
524
  </refsect1>
462
525
  
497
560
      </para>
498
561
    </informalexample>
499
562
  </refsect1>
500
 
 
 
563
  
501
564
  <refsect1 id="security">
502
565
    <title>SECURITY</title>
503
 
    <refsect2 id="SERVER">
 
566
    <refsect2 id="server">
504
567
      <title>SERVER</title>
505
568
      <para>
506
569
        Running this <command>&COMMANDNAME;</command> server program
507
570
        should not in itself present any security risk to the host
508
 
        computer running it.  The program does not need any special
509
 
        privileges to run, and is designed to run as a non-root user.
 
571
        computer running it.  The program switches to a non-root user
 
572
        soon after startup.
510
573
      </para>
511
574
    </refsect2>
512
 
    <refsect2 id="CLIENTS">
 
575
    <refsect2 id="clients">
513
576
      <title>CLIENTS</title>
514
577
      <para>
515
578
        The server only gives out its stored data to clients which
522
585
        <citerefentry><refentrytitle>mandos-clients.conf</refentrytitle>
523
586
        <manvolnum>5</manvolnum></citerefentry>)
524
587
        <emphasis>must</emphasis> be made non-readable by anyone
525
 
        except the user running the server.
 
588
        except the user starting the server (usually root).
526
589
      </para>
527
590
      <para>
528
591
        As detailed in <xref linkend="checking"/>, the status of all
531
594
      </para>
532
595
      <para>
533
596
        If a client is compromised, its downtime should be duly noted
534
 
        by the server which would therefore declare the client
535
 
        invalid.  But if the server was ever restarted, it would
536
 
        re-read its client list from its configuration file and again
537
 
        regard all clients therein as valid, and hence eligible to
538
 
        receive their passwords.  Therefore, be careful when
539
 
        restarting servers if it is suspected that a client has, in
540
 
        fact, been compromised by parties who may now be running a
541
 
        fake Mandos client with the keys from the non-encrypted
542
 
        initial RAM image of the client host.  What should be done in
543
 
        that case (if restarting the server program really is
544
 
        necessary) is to stop the server program, edit the
545
 
        configuration file to omit any suspect clients, and restart
546
 
        the server program.
 
597
        by the server which would therefore disable the client.  But
 
598
        if the server was ever restarted, it would re-read its client
 
599
        list from its configuration file and again regard all clients
 
600
        therein as enabled, and hence eligible to receive their
 
601
        passwords.  Therefore, be careful when restarting servers if
 
602
        it is suspected that a client has, in fact, been compromised
 
603
        by parties who may now be running a fake Mandos client with
 
604
        the keys from the non-encrypted initial <acronym>RAM</acronym>
 
605
        image of the client host.  What should be done in that case
 
606
        (if restarting the server program really is necessary) is to
 
607
        stop the server program, edit the configuration file to omit
 
608
        any suspect clients, and restart the server program.
547
609
      </para>
548
610
      <para>
549
611
        For more details on client-side security, see
550
 
        <citerefentry><refentrytitle>password-request</refentrytitle>
 
612
        <citerefentry><refentrytitle>mandos-client</refentrytitle>
551
613
        <manvolnum>8mandos</manvolnum></citerefentry>.
552
614
      </para>
553
615
    </refsect2>
554
616
  </refsect1>
555
 
 
 
617
  
556
618
  <refsect1 id="see_also">
557
619
    <title>SEE ALSO</title>
558
620
    <para>
559
 
      <citerefentry>
560
 
        <refentrytitle>mandos-clients.conf</refentrytitle>
561
 
        <manvolnum>5</manvolnum></citerefentry>, <citerefentry>
562
 
        <refentrytitle>mandos.conf</refentrytitle>
563
 
        <manvolnum>5</manvolnum></citerefentry>, <citerefentry>
564
 
        <refentrytitle>password-request</refentrytitle>
565
 
        <manvolnum>8mandos</manvolnum></citerefentry>, <citerefentry>
566
 
        <refentrytitle>sh</refentrytitle><manvolnum>1</manvolnum>
567
 
      </citerefentry>
 
621
      <citerefentry><refentrytitle>intro</refentrytitle>
 
622
      <manvolnum>8mandos</manvolnum></citerefentry>,
 
623
      <citerefentry><refentrytitle>mandos-clients.conf</refentrytitle>
 
624
      <manvolnum>5</manvolnum></citerefentry>,
 
625
      <citerefentry><refentrytitle>mandos.conf</refentrytitle>
 
626
      <manvolnum>5</manvolnum></citerefentry>,
 
627
      <citerefentry><refentrytitle>mandos-client</refentrytitle>
 
628
      <manvolnum>8mandos</manvolnum></citerefentry>,
 
629
      <citerefentry><refentrytitle>sh</refentrytitle>
 
630
      <manvolnum>1</manvolnum></citerefentry>
568
631
    </para>
569
632
    <variablelist>
570
633
      <varlistentry>