/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: 2016-02-28 03:01:43 UTC
  • Revision ID: teddy@recompile.se-20160228030143-i6w90r7wzkvlx9kq
Stop using python-gnutls.  Use GnuTLS 3.3 or later directly.

* INSTALL: Document dependency on GnuTLS 3.3 and remove dependency on
          Python-GnuTLS.

* debian/control (Source: mandos/Build-Depends): Add (>= 3.3.0) to
                                                 "libgnutls28-dev" and
                                                 "gnutls-dev".
  (Source: mandos/Build-Depends-Indep): Remove "python2.7-gnutls".
  (Package: mandos/Depends): Remove "python-gnutls" and
                             "python2.7-gnutls", add "libgnutls28-dev
                             (>= 3.3.0) | libgnutls30 (>= 3.3.0)"
* mandos: Remove imports of "gnutls" and all submodules.
  (GnuTLS, gnutls): New; simulate a "gnutls" module.  Change all
                    callers to match new shorter names.

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 "2009-02-24">
 
5
<!ENTITY TIMESTAMP "2015-12-06">
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@fukt.bsnet.se</email>
 
22
          <email>belorn@recompile.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@fukt.bsnet.se</email>
 
29
          <email>teddy@recompile.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>
36
42
      <holder>Teddy Hogeborn</holder>
37
43
      <holder>Björn Påhlsson</holder>
38
44
    </copyright>
86
92
      <sbr/>
87
93
      <arg><option>--debug</option></arg>
88
94
      <sbr/>
 
95
      <arg><option>--debuglevel
 
96
      <replaceable>LEVEL</replaceable></option></arg>
 
97
      <sbr/>
 
98
      <arg><option>--no-dbus</option></arg>
 
99
      <sbr/>
89
100
      <arg><option>--no-ipv6</option></arg>
 
101
      <sbr/>
 
102
      <arg><option>--no-restore</option></arg>
 
103
      <sbr/>
 
104
      <arg><option>--statedir
 
105
      <replaceable>DIRECTORY</replaceable></option></arg>
 
106
      <sbr/>
 
107
      <arg><option>--socket
 
108
      <replaceable>FD</replaceable></option></arg>
 
109
      <sbr/>
 
110
      <arg><option>--foreground</option></arg>
 
111
      <sbr/>
 
112
      <arg><option>--no-zeroconf</option></arg>
90
113
    </cmdsynopsis>
91
114
    <cmdsynopsis>
92
115
      <command>&COMMANDNAME;</command>
110
133
    <para>
111
134
      <command>&COMMANDNAME;</command> is a server daemon which
112
135
      handles incoming request for passwords for a pre-defined list of
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.
 
136
      client host computers. For an introduction, see
 
137
      <citerefentry><refentrytitle>intro</refentrytitle>
 
138
      <manvolnum>8mandos</manvolnum></citerefentry>. The Mandos server
 
139
      uses Zeroconf to announce itself on the local network, and uses
 
140
      TLS to communicate securely with and to authenticate the
 
141
      clients.  The Mandos server uses IPv6 to allow Mandos clients to
 
142
      use IPv6 link-local addresses, since the clients will probably
 
143
      not have any other addresses configured (see <xref
 
144
      linkend="overview"/>).  Any authenticated client is then given
 
145
      the stored pre-encrypted password for that specific client.
121
146
    </para>
122
147
  </refsect1>
123
148
  
192
217
      </varlistentry>
193
218
      
194
219
      <varlistentry>
 
220
        <term><option>--debuglevel
 
221
        <replaceable>LEVEL</replaceable></option></term>
 
222
        <listitem>
 
223
          <para>
 
224
            Set the debugging log level.
 
225
            <replaceable>LEVEL</replaceable> is a string, one of
 
226
            <quote><literal>CRITICAL</literal></quote>,
 
227
            <quote><literal>ERROR</literal></quote>,
 
228
            <quote><literal>WARNING</literal></quote>,
 
229
            <quote><literal>INFO</literal></quote>, or
 
230
            <quote><literal>DEBUG</literal></quote>, in order of
 
231
            increasing verbosity.  The default level is
 
232
            <quote><literal>WARNING</literal></quote>.
 
233
          </para>
 
234
        </listitem>
 
235
      </varlistentry>
 
236
      
 
237
      <varlistentry>
195
238
        <term><option>--priority <replaceable>
196
239
        PRIORITY</replaceable></option></term>
197
240
        <listitem>
233
276
      </varlistentry>
234
277
      
235
278
      <varlistentry>
 
279
        <term><option>--no-dbus</option></term>
 
280
        <listitem>
 
281
          <xi:include href="mandos-options.xml" xpointer="dbus"/>
 
282
          <para>
 
283
            See also <xref linkend="dbus_interface"/>.
 
284
          </para>
 
285
        </listitem>
 
286
      </varlistentry>
 
287
      
 
288
      <varlistentry>
236
289
        <term><option>--no-ipv6</option></term>
237
290
        <listitem>
238
291
          <xi:include href="mandos-options.xml" xpointer="ipv6"/>
239
292
        </listitem>
240
293
      </varlistentry>
 
294
      
 
295
      <varlistentry>
 
296
        <term><option>--no-restore</option></term>
 
297
        <listitem>
 
298
          <xi:include href="mandos-options.xml" xpointer="restore"/>
 
299
          <para>
 
300
            See also <xref linkend="persistent_state"/>.
 
301
          </para>
 
302
        </listitem>
 
303
      </varlistentry>
 
304
      
 
305
      <varlistentry>
 
306
        <term><option>--statedir
 
307
        <replaceable>DIRECTORY</replaceable></option></term>
 
308
        <listitem>
 
309
          <xi:include href="mandos-options.xml" xpointer="statedir"/>
 
310
        </listitem>
 
311
      </varlistentry>
 
312
      
 
313
      <varlistentry>
 
314
        <term><option>--socket
 
315
        <replaceable>FD</replaceable></option></term>
 
316
        <listitem>
 
317
          <xi:include href="mandos-options.xml" xpointer="socket"/>
 
318
        </listitem>
 
319
      </varlistentry>
 
320
      
 
321
      <varlistentry>
 
322
        <term><option>--foreground</option></term>
 
323
        <listitem>
 
324
          <xi:include href="mandos-options.xml"
 
325
                      xpointer="foreground"/>
 
326
        </listitem>
 
327
      </varlistentry>
 
328
      
 
329
      <varlistentry>
 
330
        <term><option>--no-zeroconf</option></term>
 
331
        <listitem>
 
332
          <xi:include href="mandos-options.xml" xpointer="zeroconf"/>
 
333
        </listitem>
 
334
      </varlistentry>
 
335
      
241
336
    </variablelist>
242
337
  </refsect1>
243
338
  
315
410
      The server will, by default, continually check that the clients
316
411
      are still up.  If a client has not been confirmed as being up
317
412
      for some time, the client is assumed to be compromised and is no
318
 
      longer eligible to receive the encrypted password.  The timeout,
319
 
      checker program, and interval between checks can be configured
320
 
      both globally and per client; see <citerefentry>
 
413
      longer eligible to receive the encrypted password.  (Manual
 
414
      intervention is required to re-enable a client.)  The timeout,
 
415
      extended timeout, checker program, and interval between checks
 
416
      can be configured both globally and per client; see
 
417
      <citerefentry><refentrytitle>mandos-clients.conf</refentrytitle>
 
418
      <manvolnum>5</manvolnum></citerefentry>.
 
419
    </para>
 
420
  </refsect1>
 
421
  
 
422
  <refsect1 id="approval">
 
423
    <title>APPROVAL</title>
 
424
    <para>
 
425
      The server can be configured to require manual approval for a
 
426
      client before it is sent its secret.  The delay to wait for such
 
427
      approval and the default action (approve or deny) can be
 
428
      configured both globally and per client; see <citerefentry>
321
429
      <refentrytitle>mandos-clients.conf</refentrytitle>
322
 
      <manvolnum>5</manvolnum></citerefentry>.
323
 
    </para>
 
430
      <manvolnum>5</manvolnum></citerefentry>.  By default all clients
 
431
      will be approved immediately without delay.
 
432
    </para>
 
433
    <para>
 
434
      This can be used to deny a client its secret if not manually
 
435
      approved within a specified time.  It can also be used to make
 
436
      the server delay before giving a client its secret, allowing
 
437
      optional manual denying of this specific client.
 
438
    </para>
 
439
    
324
440
  </refsect1>
325
441
  
326
442
  <refsect1 id="logging">
327
443
    <title>LOGGING</title>
328
444
    <para>
329
445
      The server will send log message with various severity levels to
330
 
      <filename>/dev/log</filename>.  With the
 
446
      <filename class="devicefile">/dev/log</filename>.  With the
331
447
      <option>--debug</option> option, it will log even more messages,
332
448
      and also show them on the console.
333
449
    </para>
334
450
  </refsect1>
335
451
  
 
452
  <refsect1 id="persistent_state">
 
453
    <title>PERSISTENT STATE</title>
 
454
    <para>
 
455
      Client settings, initially read from
 
456
      <filename>clients.conf</filename>, are persistent across
 
457
      restarts, and run-time changes will override settings in
 
458
      <filename>clients.conf</filename>.  However, if a setting is
 
459
      <emphasis>changed</emphasis> (or a client added, or removed) in
 
460
      <filename>clients.conf</filename>, this will take precedence.
 
461
    </para>
 
462
  </refsect1>
 
463
  
 
464
  <refsect1 id="dbus_interface">
 
465
    <title>D-BUS INTERFACE</title>
 
466
    <para>
 
467
      The server will by default provide a D-Bus system bus interface.
 
468
      This interface will only be accessible by the root user or a
 
469
      Mandos-specific user, if such a user exists.  For documentation
 
470
      of the D-Bus API, see the file <filename>DBUS-API</filename>.
 
471
    </para>
 
472
  </refsect1>
 
473
  
336
474
  <refsect1 id="exit_status">
337
475
    <title>EXIT STATUS</title>
338
476
    <para>
390
528
        </listitem>
391
529
      </varlistentry>
392
530
      <varlistentry>
393
 
        <term><filename>/var/run/mandos.pid</filename></term>
394
 
        <listitem>
395
 
          <para>
396
 
            The file containing the process id of
397
 
            <command>&COMMANDNAME;</command>.
398
 
          </para>
399
 
        </listitem>
400
 
      </varlistentry>
401
 
      <varlistentry>
402
 
        <term><filename>/dev/log</filename></term>
 
531
        <term><filename>/run/mandos.pid</filename></term>
 
532
        <listitem>
 
533
          <para>
 
534
            The file containing the process id of the
 
535
            <command>&COMMANDNAME;</command> process started last.
 
536
            <emphasis >Note:</emphasis> If the <filename
 
537
            class="directory">/run</filename> directory does not
 
538
            exist, <filename>/var/run/mandos.pid</filename> will be
 
539
            used instead.
 
540
          </para>
 
541
        </listitem>
 
542
      </varlistentry>
 
543
      <varlistentry>
 
544
        <term><filename
 
545
        class="directory">/var/lib/mandos</filename></term>
 
546
        <listitem>
 
547
          <para>
 
548
            Directory where persistent state will be saved.  Change
 
549
            this with the <option>--statedir</option> option.  See
 
550
            also the <option>--no-restore</option> option.
 
551
          </para>
 
552
        </listitem>
 
553
      </varlistentry>
 
554
      <varlistentry>
 
555
        <term><filename class="devicefile">/dev/log</filename></term>
403
556
        <listitem>
404
557
          <para>
405
558
            The Unix domain socket to where local syslog messages are
428
581
      backtrace.  This could be considered a feature.
429
582
    </para>
430
583
    <para>
431
 
      Currently, if a client is declared <quote>invalid</quote> due to
432
 
      having timed out, the server does not record this fact onto
433
 
      permanent storage.  This has some security implications, see
434
 
      <xref linkend="clients"/>.
435
 
    </para>
436
 
    <para>
437
 
      There is currently no way of querying the server of the current
438
 
      status of clients, other than analyzing its <systemitem
439
 
      class="service">syslog</systemitem> output.
440
 
    </para>
441
 
    <para>
442
584
      There is no fine-grained control over logging and debug output.
443
585
    </para>
444
586
    <para>
445
 
      Debug mode is conflated with running in the foreground.
446
 
    </para>
447
 
    <para>
448
 
      The console log messages do not show a time stamp.
449
 
    </para>
450
 
    <para>
451
587
      This server does not check the expire time of clients’ OpenPGP
452
588
      keys.
453
589
    </para>
466
602
    <informalexample>
467
603
      <para>
468
604
        Run the server in debug mode, read configuration files from
469
 
        the <filename>~/mandos</filename> directory, and use the
470
 
        Zeroconf service name <quote>Test</quote> to not collide with
471
 
        any other official Mandos server on this host:
 
605
        the <filename class="directory">~/mandos</filename> directory,
 
606
        and use the Zeroconf service name <quote>Test</quote> to not
 
607
        collide with any other official Mandos server on this host:
472
608
      </para>
473
609
      <para>
474
610
 
523
659
        compromised if they are gone for too long.
524
660
      </para>
525
661
      <para>
526
 
        If a client is compromised, its downtime should be duly noted
527
 
        by the server which would therefore declare the client
528
 
        invalid.  But if the server was ever restarted, it would
529
 
        re-read its client list from its configuration file and again
530
 
        regard all clients therein as valid, and hence eligible to
531
 
        receive their passwords.  Therefore, be careful when
532
 
        restarting servers if it is suspected that a client has, in
533
 
        fact, been compromised by parties who may now be running a
534
 
        fake Mandos client with the keys from the non-encrypted
535
 
        initial <acronym>RAM</acronym> image of the client host.  What
536
 
        should be done in that case (if restarting the server program
537
 
        really is necessary) is to stop the server program, edit the
538
 
        configuration file to omit any suspect clients, and restart
539
 
        the server program.
540
 
      </para>
541
 
      <para>
542
662
        For more details on client-side security, see
543
663
        <citerefentry><refentrytitle>mandos-client</refentrytitle>
544
664
        <manvolnum>8mandos</manvolnum></citerefentry>.
549
669
  <refsect1 id="see_also">
550
670
    <title>SEE ALSO</title>
551
671
    <para>
552
 
      <citerefentry>
553
 
        <refentrytitle>mandos-clients.conf</refentrytitle>
554
 
        <manvolnum>5</manvolnum></citerefentry>, <citerefentry>
555
 
        <refentrytitle>mandos.conf</refentrytitle>
556
 
        <manvolnum>5</manvolnum></citerefentry>, <citerefentry>
557
 
        <refentrytitle>mandos-client</refentrytitle>
558
 
        <manvolnum>8mandos</manvolnum></citerefentry>, <citerefentry>
559
 
        <refentrytitle>sh</refentrytitle><manvolnum>1</manvolnum>
560
 
      </citerefentry>
 
672
      <citerefentry><refentrytitle>intro</refentrytitle>
 
673
      <manvolnum>8mandos</manvolnum></citerefentry>,
 
674
      <citerefentry><refentrytitle>mandos-clients.conf</refentrytitle>
 
675
      <manvolnum>5</manvolnum></citerefentry>,
 
676
      <citerefentry><refentrytitle>mandos.conf</refentrytitle>
 
677
      <manvolnum>5</manvolnum></citerefentry>,
 
678
      <citerefentry><refentrytitle>mandos-client</refentrytitle>
 
679
      <manvolnum>8mandos</manvolnum></citerefentry>,
 
680
      <citerefentry><refentrytitle>sh</refentrytitle>
 
681
      <manvolnum>1</manvolnum></citerefentry>
561
682
    </para>
562
683
    <variablelist>
563
684
      <varlistentry>
584
705
      </varlistentry>
585
706
      <varlistentry>
586
707
        <term>
587
 
          <ulink url="http://www.gnu.org/software/gnutls/"
588
 
          >GnuTLS</ulink>
 
708
          <ulink url="http://gnutls.org/">GnuTLS</ulink>
589
709
        </term>
590
710
      <listitem>
591
711
        <para>
629
749
      </varlistentry>
630
750
      <varlistentry>
631
751
        <term>
632
 
          RFC 4346: <citetitle>The Transport Layer Security (TLS)
633
 
          Protocol Version 1.1</citetitle>
 
752
          RFC 5246: <citetitle>The Transport Layer Security (TLS)
 
753
          Protocol Version 1.2</citetitle>
634
754
        </term>
635
755
      <listitem>
636
756
        <para>
637
 
          TLS 1.1 is the protocol implemented by GnuTLS.
 
757
          TLS 1.2 is the protocol implemented by GnuTLS.
638
758
        </para>
639
759
      </listitem>
640
760
      </varlistentry>
650
770
      </varlistentry>
651
771
      <varlistentry>
652
772
        <term>
653
 
          RFC 5081: <citetitle>Using OpenPGP Keys for Transport Layer
654
 
          Security</citetitle>
 
773
          RFC 6091: <citetitle>Using OpenPGP Keys for Transport Layer
 
774
          Security (TLS) Authentication</citetitle>
655
775
        </term>
656
776
      <listitem>
657
777
        <para>