/mandos/release

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

« back to all changes in this revision

Viewing changes to mandos.xml

* README (The Plugin System): Removed redundant text about options and
                              files for the plugins, this is now
                              documented in the manuals for the
                              plugins.

* plugins.d/mandos-client.c (main): Remove comment which was copied
                                    from another program by mistake.
                                    Use "sscanf" instead of "strtol"
                                    to parse numbers; this uses the
                                    correct type instead of casting.
                                    Don't report errors when removing
                                    temporary directory if directory
                                    is already gone.

Show diffs side-by-side

added added

removed removed

Lines of Context:
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
4
<!ENTITY COMMANDNAME "mandos">
5
 
<!ENTITY TIMESTAMP "2017-02-23">
 
5
<!ENTITY TIMESTAMP "2009-01-04">
6
6
<!ENTITY % common SYSTEM "common.ent">
7
7
%common;
8
8
]>
19
19
        <firstname>Björn</firstname>
20
20
        <surname>Påhlsson</surname>
21
21
        <address>
22
 
          <email>belorn@recompile.se</email>
 
22
          <email>belorn@fukt.bsnet.se</email>
23
23
        </address>
24
24
      </author>
25
25
      <author>
26
26
        <firstname>Teddy</firstname>
27
27
        <surname>Hogeborn</surname>
28
28
        <address>
29
 
          <email>teddy@recompile.se</email>
 
29
          <email>teddy@fukt.bsnet.se</email>
30
30
        </address>
31
31
      </author>
32
32
    </authorgroup>
33
33
    <copyright>
34
34
      <year>2008</year>
35
35
      <year>2009</year>
36
 
      <year>2010</year>
37
 
      <year>2011</year>
38
 
      <year>2012</year>
39
 
      <year>2013</year>
40
 
      <year>2014</year>
41
 
      <year>2015</year>
42
 
      <year>2016</year>
43
 
      <year>2017</year>
44
36
      <holder>Teddy Hogeborn</holder>
45
37
      <holder>Björn Påhlsson</holder>
46
38
    </copyright>
94
86
      <sbr/>
95
87
      <arg><option>--debug</option></arg>
96
88
      <sbr/>
97
 
      <arg><option>--debuglevel
98
 
      <replaceable>LEVEL</replaceable></option></arg>
99
 
      <sbr/>
100
89
      <arg><option>--no-dbus</option></arg>
101
 
      <sbr/>
102
 
      <arg><option>--no-ipv6</option></arg>
103
 
      <sbr/>
104
 
      <arg><option>--no-restore</option></arg>
105
 
      <sbr/>
106
 
      <arg><option>--statedir
107
 
      <replaceable>DIRECTORY</replaceable></option></arg>
108
 
      <sbr/>
109
 
      <arg><option>--socket
110
 
      <replaceable>FD</replaceable></option></arg>
111
 
      <sbr/>
112
 
      <arg><option>--foreground</option></arg>
113
 
      <sbr/>
114
 
      <arg><option>--no-zeroconf</option></arg>
115
90
    </cmdsynopsis>
116
91
    <cmdsynopsis>
117
92
      <command>&COMMANDNAME;</command>
135
110
    <para>
136
111
      <command>&COMMANDNAME;</command> is a server daemon which
137
112
      handles incoming request for passwords for a pre-defined list of
138
 
      client host computers. For an introduction, see
139
 
      <citerefentry><refentrytitle>intro</refentrytitle>
140
 
      <manvolnum>8mandos</manvolnum></citerefentry>. The Mandos server
141
 
      uses Zeroconf to announce itself on the local network, and uses
142
 
      TLS to communicate securely with and to authenticate the
143
 
      clients.  The Mandos server uses IPv6 to allow Mandos clients to
144
 
      use IPv6 link-local addresses, since the clients will probably
145
 
      not have any other addresses configured (see <xref
146
 
      linkend="overview"/>).  Any authenticated client is then given
147
 
      the stored pre-encrypted password for that specific client.
 
113
      client host computers.  The Mandos server uses Zeroconf to
 
114
      announce itself on the local network, and uses TLS to
 
115
      communicate securely with and to authenticate the clients.  The
 
116
      Mandos server uses IPv6 to allow Mandos clients to use IPv6
 
117
      link-local addresses, since the clients will probably not have
 
118
      any other addresses configured (see <xref linkend="overview"/>).
 
119
      Any authenticated client is then given the stored pre-encrypted
 
120
      password for that specific client.
148
121
    </para>
149
122
  </refsect1>
150
123
  
219
192
      </varlistentry>
220
193
      
221
194
      <varlistentry>
222
 
        <term><option>--debuglevel
223
 
        <replaceable>LEVEL</replaceable></option></term>
224
 
        <listitem>
225
 
          <para>
226
 
            Set the debugging log level.
227
 
            <replaceable>LEVEL</replaceable> is a string, one of
228
 
            <quote><literal>CRITICAL</literal></quote>,
229
 
            <quote><literal>ERROR</literal></quote>,
230
 
            <quote><literal>WARNING</literal></quote>,
231
 
            <quote><literal>INFO</literal></quote>, or
232
 
            <quote><literal>DEBUG</literal></quote>, in order of
233
 
            increasing verbosity.  The default level is
234
 
            <quote><literal>WARNING</literal></quote>.
235
 
          </para>
236
 
        </listitem>
237
 
      </varlistentry>
238
 
      
239
 
      <varlistentry>
240
195
        <term><option>--priority <replaceable>
241
196
        PRIORITY</replaceable></option></term>
242
197
        <listitem>
286
241
          </para>
287
242
        </listitem>
288
243
      </varlistentry>
289
 
      
290
 
      <varlistentry>
291
 
        <term><option>--no-ipv6</option></term>
292
 
        <listitem>
293
 
          <xi:include href="mandos-options.xml" xpointer="ipv6"/>
294
 
        </listitem>
295
 
      </varlistentry>
296
 
      
297
 
      <varlistentry>
298
 
        <term><option>--no-restore</option></term>
299
 
        <listitem>
300
 
          <xi:include href="mandos-options.xml" xpointer="restore"/>
301
 
          <para>
302
 
            See also <xref linkend="persistent_state"/>.
303
 
          </para>
304
 
        </listitem>
305
 
      </varlistentry>
306
 
      
307
 
      <varlistentry>
308
 
        <term><option>--statedir
309
 
        <replaceable>DIRECTORY</replaceable></option></term>
310
 
        <listitem>
311
 
          <xi:include href="mandos-options.xml" xpointer="statedir"/>
312
 
        </listitem>
313
 
      </varlistentry>
314
 
      
315
 
      <varlistentry>
316
 
        <term><option>--socket
317
 
        <replaceable>FD</replaceable></option></term>
318
 
        <listitem>
319
 
          <xi:include href="mandos-options.xml" xpointer="socket"/>
320
 
        </listitem>
321
 
      </varlistentry>
322
 
      
323
 
      <varlistentry>
324
 
        <term><option>--foreground</option></term>
325
 
        <listitem>
326
 
          <xi:include href="mandos-options.xml"
327
 
                      xpointer="foreground"/>
328
 
        </listitem>
329
 
      </varlistentry>
330
 
      
331
 
      <varlistentry>
332
 
        <term><option>--no-zeroconf</option></term>
333
 
        <listitem>
334
 
          <xi:include href="mandos-options.xml" xpointer="zeroconf"/>
335
 
        </listitem>
336
 
      </varlistentry>
337
 
      
338
244
    </variablelist>
339
245
  </refsect1>
340
246
  
412
318
      The server will, by default, continually check that the clients
413
319
      are still up.  If a client has not been confirmed as being up
414
320
      for some time, the client is assumed to be compromised and is no
415
 
      longer eligible to receive the encrypted password.  (Manual
416
 
      intervention is required to re-enable a client.)  The timeout,
417
 
      extended timeout, checker program, and interval between checks
418
 
      can be configured both globally and per client; see
419
 
      <citerefentry><refentrytitle>mandos-clients.conf</refentrytitle>
 
321
      longer eligible to receive the encrypted password.  The timeout,
 
322
      checker program, and interval between checks can be configured
 
323
      both globally and per client; see <citerefentry>
 
324
      <refentrytitle>mandos-clients.conf</refentrytitle>
420
325
      <manvolnum>5</manvolnum></citerefentry>.
421
326
    </para>
422
327
  </refsect1>
423
328
  
424
 
  <refsect1 id="approval">
425
 
    <title>APPROVAL</title>
426
 
    <para>
427
 
      The server can be configured to require manual approval for a
428
 
      client before it is sent its secret.  The delay to wait for such
429
 
      approval and the default action (approve or deny) can be
430
 
      configured both globally and per client; see <citerefentry>
431
 
      <refentrytitle>mandos-clients.conf</refentrytitle>
432
 
      <manvolnum>5</manvolnum></citerefentry>.  By default all clients
433
 
      will be approved immediately without delay.
434
 
    </para>
435
 
    <para>
436
 
      This can be used to deny a client its secret if not manually
437
 
      approved within a specified time.  It can also be used to make
438
 
      the server delay before giving a client its secret, allowing
439
 
      optional manual denying of this specific client.
440
 
    </para>
441
 
    
442
 
  </refsect1>
443
 
  
444
329
  <refsect1 id="logging">
445
330
    <title>LOGGING</title>
446
331
    <para>
447
332
      The server will send log message with various severity levels to
448
 
      <filename class="devicefile">/dev/log</filename>.  With the
 
333
      <filename>/dev/log</filename>.  With the
449
334
      <option>--debug</option> option, it will log even more messages,
450
335
      and also show them on the console.
451
336
    </para>
452
337
  </refsect1>
453
338
  
454
 
  <refsect1 id="persistent_state">
455
 
    <title>PERSISTENT STATE</title>
456
 
    <para>
457
 
      Client settings, initially read from
458
 
      <filename>clients.conf</filename>, are persistent across
459
 
      restarts, and run-time changes will override settings in
460
 
      <filename>clients.conf</filename>.  However, if a setting is
461
 
      <emphasis>changed</emphasis> (or a client added, or removed) in
462
 
      <filename>clients.conf</filename>, this will take precedence.
463
 
    </para>
464
 
  </refsect1>
465
 
  
466
339
  <refsect1 id="dbus_interface">
467
340
    <title>D-BUS INTERFACE</title>
468
341
    <para>
469
342
      The server will by default provide a D-Bus system bus interface.
470
343
      This interface will only be accessible by the root user or a
471
 
      Mandos-specific user, if such a user exists.  For documentation
472
 
      of the D-Bus API, see the file <filename>DBUS-API</filename>.
 
344
      Mandos-specific user, if such a user exists.
 
345
      <!-- XXX -->
473
346
    </para>
474
347
  </refsect1>
475
 
  
 
348
 
476
349
  <refsect1 id="exit_status">
477
350
    <title>EXIT STATUS</title>
478
351
    <para>
530
403
        </listitem>
531
404
      </varlistentry>
532
405
      <varlistentry>
533
 
        <term><filename>/run/mandos.pid</filename></term>
534
 
        <listitem>
535
 
          <para>
536
 
            The file containing the process id of the
537
 
            <command>&COMMANDNAME;</command> process started last.
538
 
            <emphasis >Note:</emphasis> If the <filename
539
 
            class="directory">/run</filename> directory does not
540
 
            exist, <filename>/var/run/mandos.pid</filename> will be
541
 
            used instead.
542
 
          </para>
543
 
        </listitem>
544
 
      </varlistentry>
545
 
      <varlistentry>
546
 
        <term><filename
547
 
        class="directory">/var/lib/mandos</filename></term>
548
 
        <listitem>
549
 
          <para>
550
 
            Directory where persistent state will be saved.  Change
551
 
            this with the <option>--statedir</option> option.  See
552
 
            also the <option>--no-restore</option> option.
553
 
          </para>
554
 
        </listitem>
555
 
      </varlistentry>
556
 
      <varlistentry>
557
 
        <term><filename class="devicefile">/dev/log</filename></term>
 
406
        <term><filename>/var/run/mandos.pid</filename></term>
 
407
        <listitem>
 
408
          <para>
 
409
            The file containing the process id of
 
410
            <command>&COMMANDNAME;</command>.
 
411
          </para>
 
412
        </listitem>
 
413
      </varlistentry>
 
414
      <varlistentry>
 
415
        <term><filename>/dev/log</filename></term>
558
416
        <listitem>
559
417
          <para>
560
418
            The Unix domain socket to where local syslog messages are
583
441
      backtrace.  This could be considered a feature.
584
442
    </para>
585
443
    <para>
 
444
      Currently, if a client is declared <quote>invalid</quote> due to
 
445
      having timed out, the server does not record this fact onto
 
446
      permanent storage.  This has some security implications, see
 
447
      <xref linkend="clients"/>.
 
448
    </para>
 
449
    <para>
 
450
      There is currently no way of querying the server of the current
 
451
      status of clients, other than analyzing its <systemitem
 
452
      class="service">syslog</systemitem> output.
 
453
    </para>
 
454
    <para>
586
455
      There is no fine-grained control over logging and debug output.
587
456
    </para>
588
457
    <para>
 
458
      Debug mode is conflated with running in the foreground.
 
459
    </para>
 
460
    <para>
 
461
      The console log messages does not show a time stamp.
 
462
    </para>
 
463
    <para>
589
464
      This server does not check the expire time of clients’ OpenPGP
590
465
      keys.
591
466
    </para>
592
 
    <xi:include href="bugs.xml"/>
593
467
  </refsect1>
594
468
  
595
469
  <refsect1 id="example">
605
479
    <informalexample>
606
480
      <para>
607
481
        Run the server in debug mode, read configuration files from
608
 
        the <filename class="directory">~/mandos</filename> directory,
609
 
        and use the Zeroconf service name <quote>Test</quote> to not
610
 
        collide with any other official Mandos server on this host:
 
482
        the <filename>~/mandos</filename> directory, and use the
 
483
        Zeroconf service name <quote>Test</quote> to not collide with
 
484
        any other official Mandos server on this host:
611
485
      </para>
612
486
      <para>
613
487
 
662
536
        compromised if they are gone for too long.
663
537
      </para>
664
538
      <para>
 
539
        If a client is compromised, its downtime should be duly noted
 
540
        by the server which would therefore declare the client
 
541
        invalid.  But if the server was ever restarted, it would
 
542
        re-read its client list from its configuration file and again
 
543
        regard all clients therein as valid, and hence eligible to
 
544
        receive their passwords.  Therefore, be careful when
 
545
        restarting servers if it is suspected that a client has, in
 
546
        fact, been compromised by parties who may now be running a
 
547
        fake Mandos client with the keys from the non-encrypted
 
548
        initial <acronym>RAM</acronym> image of the client host.  What
 
549
        should be done in that case (if restarting the server program
 
550
        really is necessary) is to stop the server program, edit the
 
551
        configuration file to omit any suspect clients, and restart
 
552
        the server program.
 
553
      </para>
 
554
      <para>
665
555
        For more details on client-side security, see
666
556
        <citerefentry><refentrytitle>mandos-client</refentrytitle>
667
557
        <manvolnum>8mandos</manvolnum></citerefentry>.
672
562
  <refsect1 id="see_also">
673
563
    <title>SEE ALSO</title>
674
564
    <para>
675
 
      <citerefentry><refentrytitle>intro</refentrytitle>
676
 
      <manvolnum>8mandos</manvolnum></citerefentry>,
677
 
      <citerefentry><refentrytitle>mandos-clients.conf</refentrytitle>
678
 
      <manvolnum>5</manvolnum></citerefentry>,
679
 
      <citerefentry><refentrytitle>mandos.conf</refentrytitle>
680
 
      <manvolnum>5</manvolnum></citerefentry>,
681
 
      <citerefentry><refentrytitle>mandos-client</refentrytitle>
682
 
      <manvolnum>8mandos</manvolnum></citerefentry>,
683
 
      <citerefentry><refentrytitle>sh</refentrytitle>
684
 
      <manvolnum>1</manvolnum></citerefentry>
 
565
      <citerefentry>
 
566
        <refentrytitle>mandos-clients.conf</refentrytitle>
 
567
        <manvolnum>5</manvolnum></citerefentry>, <citerefentry>
 
568
        <refentrytitle>mandos.conf</refentrytitle>
 
569
        <manvolnum>5</manvolnum></citerefentry>, <citerefentry>
 
570
        <refentrytitle>mandos-client</refentrytitle>
 
571
        <manvolnum>8mandos</manvolnum></citerefentry>, <citerefentry>
 
572
        <refentrytitle>sh</refentrytitle><manvolnum>1</manvolnum>
 
573
      </citerefentry>
685
574
    </para>
686
575
    <variablelist>
687
576
      <varlistentry>
708
597
      </varlistentry>
709
598
      <varlistentry>
710
599
        <term>
711
 
          <ulink url="https://gnutls.org/">GnuTLS</ulink>
 
600
          <ulink url="http://www.gnu.org/software/gnutls/"
 
601
          >GnuTLS</ulink>
712
602
        </term>
713
603
      <listitem>
714
604
        <para>
752
642
      </varlistentry>
753
643
      <varlistentry>
754
644
        <term>
755
 
          RFC 5246: <citetitle>The Transport Layer Security (TLS)
756
 
          Protocol Version 1.2</citetitle>
 
645
          RFC 4346: <citetitle>The Transport Layer Security (TLS)
 
646
          Protocol Version 1.1</citetitle>
757
647
        </term>
758
648
      <listitem>
759
649
        <para>
760
 
          TLS 1.2 is the protocol implemented by GnuTLS.
 
650
          TLS 1.1 is the protocol implemented by GnuTLS.
761
651
        </para>
762
652
      </listitem>
763
653
      </varlistentry>
773
663
      </varlistentry>
774
664
      <varlistentry>
775
665
        <term>
776
 
          RFC 6091: <citetitle>Using OpenPGP Keys for Transport Layer
777
 
          Security (TLS) Authentication</citetitle>
 
666
          RFC 5081: <citetitle>Using OpenPGP Keys for Transport Layer
 
667
          Security</citetitle>
778
668
        </term>
779
669
      <listitem>
780
670
        <para>