/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: 2008-08-18 03:25:01 UTC
  • Revision ID: teddy@fukt.bsnet.se-20080818032501-2cl874fi3uvsqn1b
* mandos.xml (SYNOPSIS): Removed unnecessary 'choice="opt"' from <arg>
                         tags.  Also show the "-h" option.
  (OPTIONS): Note that failure to obey the "--interface" option is not
             considered critical.
  (ENVIRONMENT): New section to document the use of PATH by /bin/sh.
  (FILES): Added "/bin/sh".
  (BUGS): Add five bugs from the TODO file.
  (EXAMPLES): Renamed to "EXAMPLE", as per man-pages(7).
  (SERVER, CLIENTS): Added "id" attribute.
  (CLIENT): Document the security implications of one of the five
            bugs added to the BUGS section.

Show diffs side-by-side

added added

removed removed

Lines of Context:
3
3
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4
4
<!ENTITY VERSION "1.0">
5
5
<!ENTITY COMMANDNAME "mandos">
6
 
<!ENTITY TIMESTAMP "2008-08-31">
 
6
<!ENTITY OVERVIEW SYSTEM "overview.xml">
7
7
]>
8
8
 
9
 
<refentry xmlns:xi="http://www.w3.org/2001/XInclude">
 
9
<refentry>
10
10
  <refentryinfo>
11
 
    <title>Mandos Manual</title>
 
11
    <title>&COMMANDNAME;</title>
12
12
    <!-- NWalsh’s docbook scripts use this to generate the footer: -->
13
 
    <productname>Mandos</productname>
 
13
    <productname>&COMMANDNAME;</productname>
14
14
    <productnumber>&VERSION;</productnumber>
15
 
    <date>&TIMESTAMP;</date>
16
15
    <authorgroup>
17
16
      <author>
18
17
        <firstname>Björn</firstname>
67
66
  <refnamediv>
68
67
    <refname><command>&COMMANDNAME;</command></refname>
69
68
    <refpurpose>
70
 
      Gives encrypted passwords to authenticated Mandos clients
 
69
      Sends encrypted passwords to authenticated Mandos clients
71
70
    </refpurpose>
72
71
  </refnamediv>
73
72
 
74
73
  <refsynopsisdiv>
75
74
    <cmdsynopsis>
76
75
      <command>&COMMANDNAME;</command>
77
 
      <group>
78
 
        <arg choice="plain"><option>--interface
79
 
        <replaceable>NAME</replaceable></option></arg>
80
 
        <arg choice="plain"><option>-i
81
 
        <replaceable>NAME</replaceable></option></arg>
82
 
      </group>
83
 
      <sbr/>
84
 
      <group>
85
 
        <arg choice="plain"><option>--address
86
 
        <replaceable>ADDRESS</replaceable></option></arg>
87
 
        <arg choice="plain"><option>-a
88
 
        <replaceable>ADDRESS</replaceable></option></arg>
89
 
      </group>
90
 
      <sbr/>
91
 
      <group>
92
 
        <arg choice="plain"><option>--port
93
 
        <replaceable>PORT</replaceable></option></arg>
94
 
        <arg choice="plain"><option>-p
95
 
        <replaceable>PORT</replaceable></option></arg>
96
 
      </group>
97
 
      <sbr/>
98
 
      <arg><option>--priority
99
 
      <replaceable>PRIORITY</replaceable></option></arg>
100
 
      <sbr/>
101
 
      <arg><option>--servicename
102
 
      <replaceable>NAME</replaceable></option></arg>
103
 
      <sbr/>
104
 
      <arg><option>--configdir
105
 
      <replaceable>DIRECTORY</replaceable></option></arg>
106
 
      <sbr/>
107
 
      <arg><option>--debug</option></arg>
 
76
      <arg>--interface<arg choice="plain">IF</arg></arg>
 
77
      <arg>--address<arg choice="plain">ADDRESS</arg></arg>
 
78
      <arg>--port<arg choice="plain">PORT</arg></arg>
 
79
      <arg>--priority<arg choice="plain">PRIORITY</arg></arg>
 
80
      <arg>--servicename<arg choice="plain">NAME</arg></arg>
 
81
      <arg>--configdir<arg choice="plain">DIRECTORY</arg></arg>
 
82
      <arg>--debug</arg>
 
83
    </cmdsynopsis>
 
84
    <cmdsynopsis>
 
85
      <command>&COMMANDNAME;</command>
 
86
      <arg>-i<arg choice="plain">IF</arg></arg>
 
87
      <arg>-a<arg choice="plain">ADDRESS</arg></arg>
 
88
      <arg>-p<arg choice="plain">PORT</arg></arg>
 
89
      <arg>--priority<arg choice="plain">PRIORITY</arg></arg>
 
90
      <arg>--servicename<arg choice="plain">NAME</arg></arg>
 
91
      <arg>--configdir<arg choice="plain">DIRECTORY</arg></arg>
 
92
      <arg>--debug</arg>
108
93
    </cmdsynopsis>
109
94
    <cmdsynopsis>
110
95
      <command>&COMMANDNAME;</command>
111
96
      <group choice="req">
112
 
        <arg choice="plain"><option>--help</option></arg>
113
 
        <arg choice="plain"><option>-h</option></arg>
 
97
        <arg choice="plain">-h</arg>
 
98
        <arg choice="plain">--help</arg>
114
99
      </group>
115
100
    </cmdsynopsis>
116
101
    <cmdsynopsis>
117
102
      <command>&COMMANDNAME;</command>
118
 
      <arg choice="plain"><option>--version</option></arg>
 
103
      <arg choice="plain">--version</arg>
119
104
    </cmdsynopsis>
120
105
    <cmdsynopsis>
121
106
      <command>&COMMANDNAME;</command>
122
 
      <arg choice="plain"><option>--check</option></arg>
 
107
      <arg choice="plain">--check</arg>
123
108
    </cmdsynopsis>
124
109
  </refsynopsisdiv>
125
110
 
149
134
      <emphasis>encrypted root file system</emphasis>.  See <xref
150
135
      linkend="overview"/> for details.
151
136
    </para>
152
 
    
 
137
 
153
138
  </refsect1>
154
139
  
155
140
  <refsect1 id="options">
156
141
    <title>OPTIONS</title>
157
 
    
 
142
 
158
143
    <variablelist>
159
144
      <varlistentry>
160
 
        <term><option>--help</option></term>
161
 
        <term><option>-h</option></term>
 
145
        <term><literal>-h</literal>, <literal>--help</literal></term>
162
146
        <listitem>
163
147
          <para>
164
148
            Show a help message and exit
165
149
          </para>
166
150
        </listitem>
167
151
      </varlistentry>
168
 
      
169
 
      <varlistentry>
170
 
        <term><option>--interface</option>
171
 
        <replaceable>NAME</replaceable></term>
172
 
        <term><option>-i</option>
173
 
        <replaceable>NAME</replaceable></term>
174
 
        <listitem>
175
 
          <xi:include href="mandos-options.xml" xpointer="interface"/>
176
 
        </listitem>
177
 
      </varlistentry>
178
 
      
179
 
      <varlistentry>
180
 
        <term><option>--address
181
 
        <replaceable>ADDRESS</replaceable></option></term>
182
 
        <term><option>-a
183
 
        <replaceable>ADDRESS</replaceable></option></term>
184
 
        <listitem>
185
 
          <xi:include href="mandos-options.xml" xpointer="address"/>
186
 
        </listitem>
187
 
      </varlistentry>
188
 
      
189
 
      <varlistentry>
190
 
        <term><option>--port
191
 
        <replaceable>PORT</replaceable></option></term>
192
 
        <term><option>-p
193
 
        <replaceable>PORT</replaceable></option></term>
194
 
        <listitem>
195
 
          <xi:include href="mandos-options.xml" xpointer="port"/>
196
 
        </listitem>
197
 
      </varlistentry>
198
 
      
199
 
      <varlistentry>
200
 
        <term><option>--check</option></term>
 
152
 
 
153
      <varlistentry>
 
154
        <term><literal>-i</literal>, <literal>--interface <replaceable>
 
155
        IF</replaceable></literal></term>
 
156
        <listitem>
 
157
          <para>
 
158
            Only announce the server and listen to requests on network
 
159
            interface <replaceable>IF</replaceable>.  Default is to
 
160
            use all available interfaces.  <emphasis>Note:</emphasis>
 
161
            a failure to bind to the specified interface is not
 
162
            considered critical, and the server does not exit.
 
163
          </para>
 
164
        </listitem>
 
165
      </varlistentry>
 
166
 
 
167
      <varlistentry>
 
168
        <term><literal>-a</literal>, <literal>--address <replaceable>
 
169
        ADDRESS</replaceable></literal></term>
 
170
        <listitem>
 
171
          <para>
 
172
            If this option is used, the server will only listen to a
 
173
            specific address.  This must currently be an IPv6 address;
 
174
            an IPv4 address can be specified using the
 
175
            <quote><literal>::FFFF:192.0.2.3</literal></quote> syntax.
 
176
            Also, if a link-local address is specified, an interface
 
177
            should be set, since a link-local address is only valid on
 
178
            a single interface.  By default, the server will listen to
 
179
            all available addresses.
 
180
          </para>
 
181
        </listitem>
 
182
      </varlistentry>
 
183
 
 
184
      <varlistentry>
 
185
        <term><literal>-p</literal>, <literal>--port <replaceable>
 
186
        PORT</replaceable></literal></term>
 
187
        <listitem>
 
188
          <para>
 
189
            If this option is used, the server to bind to that
 
190
            port. By default, the server will listen to an arbitrary
 
191
            port given by the operating system.
 
192
          </para>
 
193
        </listitem>
 
194
      </varlistentry>
 
195
 
 
196
      <varlistentry>
 
197
        <term><literal>--check</literal></term>
201
198
        <listitem>
202
199
          <para>
203
200
            Run the server’s self-tests.  This includes any unit
205
202
          </para>
206
203
        </listitem>
207
204
      </varlistentry>
208
 
      
209
 
      <varlistentry>
210
 
        <term><option>--debug</option></term>
211
 
        <listitem>
212
 
          <xi:include href="mandos-options.xml" xpointer="debug"/>
213
 
        </listitem>
214
 
      </varlistentry>
215
 
 
216
 
      <varlistentry>
217
 
        <term><option>--priority <replaceable>
218
 
        PRIORITY</replaceable></option></term>
219
 
        <listitem>
220
 
          <xi:include href="mandos-options.xml" xpointer="priority"/>
221
 
        </listitem>
222
 
      </varlistentry>
223
 
 
224
 
      <varlistentry>
225
 
        <term><option>--servicename
226
 
        <replaceable>NAME</replaceable></option></term>
227
 
        <listitem>
228
 
          <xi:include href="mandos-options.xml"
229
 
                      xpointer="servicename"/>
230
 
        </listitem>
231
 
      </varlistentry>
232
 
 
233
 
      <varlistentry>
234
 
        <term><option>--configdir
235
 
        <replaceable>DIRECTORY</replaceable></option></term>
 
205
 
 
206
      <varlistentry>
 
207
        <term><literal>--debug</literal></term>
 
208
        <listitem>
 
209
          <para>
 
210
            If the server is run in debug mode, it will run in the
 
211
            foreground and print a lot of debugging information.  The
 
212
            default is <emphasis>not</emphasis> to run in debug mode.
 
213
          </para>
 
214
        </listitem>
 
215
      </varlistentry>
 
216
 
 
217
      <varlistentry>
 
218
        <term><literal>--priority <replaceable>
 
219
        PRIORITY</replaceable></literal></term>
 
220
        <listitem>
 
221
          <para>
 
222
            GnuTLS priority string for the TLS handshake with the
 
223
            clients.  The default is
 
224
            <quote><literal>SECURE256:!CTYPE-X.509:+CTYPE-OPENPGP</literal></quote>.
 
225
            See <citerefentry><refentrytitle>gnutls_priority_init
 
226
            </refentrytitle><manvolnum>3</manvolnum></citerefentry>
 
227
            for the syntax.  <emphasis>Warning</emphasis>: changing
 
228
            this may make the TLS handshake fail, making communication
 
229
            with clients impossible.
 
230
          </para>
 
231
        </listitem>
 
232
      </varlistentry>
 
233
 
 
234
      <varlistentry>
 
235
        <term><literal>--servicename <replaceable>NAME</replaceable>
 
236
        </literal></term>
 
237
        <listitem>
 
238
          <para>
 
239
            Zeroconf service name.  The default is
 
240
            <quote><literal>Mandos</literal></quote>.  You only need
 
241
            to change this if you for some reason want to run more
 
242
            than one server on the same <emphasis>host</emphasis>,
 
243
            which would not normally be useful.  If there are name
 
244
            collisions on the same <emphasis>network</emphasis>, the
 
245
            newer server will automatically rename itself to
 
246
            <quote><literal>Mandos #2</literal></quote>, and so on;
 
247
            therefore, this option is not needed in that case.
 
248
          </para>
 
249
        </listitem>
 
250
      </varlistentry>
 
251
 
 
252
      <varlistentry>
 
253
        <term><literal>--configdir <replaceable>DIR</replaceable>
 
254
        </literal></term>
236
255
        <listitem>
237
256
          <para>
238
257
            Directory to search for configuration files.  Default is
246
265
      </varlistentry>
247
266
 
248
267
      <varlistentry>
249
 
        <term><option>--version</option></term>
 
268
        <term><literal>--version</literal></term>
250
269
        <listitem>
251
270
          <para>
252
271
            Prints the program version and exit.
258
277
 
259
278
  <refsect1 id="overview">
260
279
    <title>OVERVIEW</title>
261
 
    <xi:include href="overview.xml"/>
 
280
    &OVERVIEW;
262
281
    <para>
263
282
      This program is the server part.  It is a normal server program
264
283
      and will run in a normal system environment, not in an initial
297
316
        <entry>-><!-- &rarr; --></entry>
298
317
      </row>
299
318
      <row>
300
 
        <entry><quote><literal>1\r\n</literal></quote></entry>
 
319
        <entry><quote><literal>1\r\en</literal></quote></entry>
301
320
        <entry>-><!-- &rarr; --></entry>
302
321
      </row>
303
322
      <row>
333
352
      longer eligible to receive the encrypted password.  The timeout,
334
353
      checker program, and interval between checks can be configured
335
354
      both globally and per client; see <citerefentry>
 
355
      <refentrytitle>mandos.conf</refentrytitle>
 
356
      <manvolnum>5</manvolnum></citerefentry> and <citerefentry>
336
357
      <refentrytitle>mandos-clients.conf</refentrytitle>
337
358
      <manvolnum>5</manvolnum></citerefentry>.
338
359
    </para>
341
362
  <refsect1 id="logging">
342
363
    <title>LOGGING</title>
343
364
    <para>
344
 
      The server will send log message with various severity levels to
345
 
      <filename>/dev/log</filename>.  With the
 
365
      The server will send log messaged with various severity levels
 
366
      to <filename>/dev/log</filename>.  With the
346
367
      <option>--debug</option> option, it will log even more messages,
347
368
      and also show them on the console.
348
369
    </para>
360
381
    <title>ENVIRONMENT</title>
361
382
    <variablelist>
362
383
      <varlistentry>
363
 
        <term><envar>PATH</envar></term>
 
384
        <term><varname>PATH</varname></term>
364
385
        <listitem>
365
386
          <para>
366
387
            To start the configured checker (see <xref
369
390
            <varname>PATH</varname> to search for matching commands if
370
391
            an absolute path is not given.  See <citerefentry>
371
392
            <refentrytitle>sh</refentrytitle><manvolnum>1</manvolnum>
372
 
            </citerefentry>.
 
393
          </citerefentry>
373
394
          </para>
374
395
        </listitem>
375
396
      </varlistentry>
471
492
        Normal invocation needs no options:
472
493
      </para>
473
494
      <para>
474
 
        <userinput>&COMMANDNAME;</userinput>
 
495
        <userinput>mandos</userinput>
475
496
      </para>
476
497
    </informalexample>
477
498
    <informalexample>
484
505
      <para>
485
506
 
486
507
<!-- do not wrap this line -->
487
 
<userinput>&COMMANDNAME; --debug --configdir ~/mandos --servicename Test</userinput>
 
508
<userinput>mandos --debug --configdir ~/mandos --servicename Test</userinput>
488
509
 
489
510
      </para>
490
511
    </informalexample>
496
517
      <para>
497
518
 
498
519
<!-- do not wrap this line -->
499
 
<userinput>&COMMANDNAME; --interface eth7 --address fe80::aede:48ff:fe71:f6f2</userinput>
 
520
<userinput>mandos --interface eth7 --address fe80::aede:48ff:fe71:f6f2</userinput>
500
521
 
501
522
      </para>
502
523
    </informalexample>
540
561
        re-read its client list from its configuration file and again
541
562
        regard all clients therein as valid, and hence eligible to
542
563
        receive their passwords.  Therefore, be careful when
543
 
        restarting servers if it is suspected that a client has, in
544
 
        fact, been compromised by parties who may now be running a
545
 
        fake Mandos client with the keys from the non-encrypted
546
 
        initial RAM image of the client host.  What should be done in
547
 
        that case (if restarting the server program really is
548
 
        necessary) is to stop the server program, edit the
549
 
        configuration file to omit any suspect clients, and restart
550
 
        the server program.
 
564
        restarting servers if you suspect that a client has, in fact,
 
565
        been compromised by parties who may now be running a fake
 
566
        Mandos client with the keys from the non-encrypted initial RAM
 
567
        image of the client host.  What should be done in that case
 
568
        (if restarting the server program really is necessary) is to
 
569
        stop the server program, edit the configuration file to omit
 
570
        any suspect clients, and restart the server program.
551
571
      </para>
552
572
      <para>
553
573
        For more details on client-side security, see
559
579
 
560
580
  <refsect1 id="see_also">
561
581
    <title>SEE ALSO</title>
562
 
    <para>
563
 
      <citerefentry>
564
 
        <refentrytitle>mandos-clients.conf</refentrytitle>
565
 
        <manvolnum>5</manvolnum></citerefentry>, <citerefentry>
566
 
        <refentrytitle>mandos.conf</refentrytitle>
567
 
        <manvolnum>5</manvolnum></citerefentry>, <citerefentry>
568
 
        <refentrytitle>password-request</refentrytitle>
569
 
        <manvolnum>8mandos</manvolnum></citerefentry>, <citerefentry>
570
 
        <refentrytitle>sh</refentrytitle><manvolnum>1</manvolnum>
571
 
      </citerefentry>
572
 
    </para>
573
582
    <variablelist>
574
583
      <varlistentry>
575
584
        <term>
 
585
          <citerefentry>
 
586
            <refentrytitle>password-request</refentrytitle>
 
587
            <manvolnum>8mandos</manvolnum>
 
588
          </citerefentry>
 
589
        </term>
 
590
        <listitem>
 
591
          <para>
 
592
            This is the actual program which talks to this server.
 
593
            Note that it is normally not invoked directly, and is only
 
594
            run in the initial RAM disk environment, and not on a
 
595
            fully started system.
 
596
          </para>
 
597
        </listitem>
 
598
      </varlistentry>
 
599
      <varlistentry>
 
600
        <term>
576
601
          <ulink url="http://www.zeroconf.org/">Zeroconf</ulink>
577
602
        </term>
578
603
        <listitem>
595
620
      </varlistentry>
596
621
      <varlistentry>
597
622
        <term>
598
 
          <ulink url="http://www.gnu.org/software/gnutls/"
599
 
          >GnuTLS</ulink>
 
623
          <ulink
 
624
              url="http://www.gnu.org/software/gnutls/">GnuTLS</ulink>
600
625
        </term>
601
626
      <listitem>
602
627
        <para>
608
633
      </varlistentry>
609
634
      <varlistentry>
610
635
        <term>
611
 
          RFC 4291: <citetitle>IP Version 6 Addressing
612
 
          Architecture</citetitle>
 
636
          <citation>RFC 4291: <citetitle>IP Version 6 Addressing
 
637
          Architecture</citetitle>, section 2.5.6, Link-Local IPv6
 
638
          Unicast Addresses</citation>
613
639
        </term>
614
640
        <listitem>
615
 
          <variablelist>
616
 
            <varlistentry>
617
 
              <term>Section 2.2: <citetitle>Text Representation of
618
 
              Addresses</citetitle></term>
619
 
              <listitem><para/></listitem>
620
 
            </varlistentry>
621
 
            <varlistentry>
622
 
              <term>Section 2.5.5.2: <citetitle>IPv4-Mapped IPv6
623
 
              Address</citetitle></term>
624
 
              <listitem><para/></listitem>
625
 
            </varlistentry>
626
 
            <varlistentry>
627
 
            <term>Section 2.5.6, <citetitle>Link-Local IPv6 Unicast
628
 
            Addresses</citetitle></term>
629
 
            <listitem>
630
 
              <para>
631
 
                The clients use IPv6 link-local addresses, which are
632
 
                immediately usable since a link-local addresses is
633
 
                automatically assigned to a network interfaces when it
634
 
                is brought up.
635
 
              </para>
636
 
            </listitem>
637
 
            </varlistentry>
638
 
          </variablelist>
 
641
          <para>
 
642
            The clients use IPv6 link-local addresses, which are
 
643
            immediately usable since a link-local addresses is
 
644
            automatically assigned to a network interfaces when it is
 
645
            brought up.
 
646
          </para>
639
647
        </listitem>
640
648
      </varlistentry>
641
649
      <varlistentry>
642
650
        <term>
643
 
          RFC 4346: <citetitle>The Transport Layer Security (TLS)
644
 
          Protocol Version 1.1</citetitle>
 
651
          <citation>RFC 4346: <citetitle>The Transport Layer Security
 
652
          (TLS) Protocol Version 1.1</citetitle></citation>
645
653
        </term>
646
654
      <listitem>
647
655
        <para>
651
659
      </varlistentry>
652
660
      <varlistentry>
653
661
        <term>
654
 
          RFC 4880: <citetitle>OpenPGP Message Format</citetitle>
 
662
          <citation>RFC 4880: <citetitle>OpenPGP Message
 
663
          Format</citetitle></citation>
655
664
        </term>
656
665
      <listitem>
657
666
        <para>
661
670
      </varlistentry>
662
671
      <varlistentry>
663
672
        <term>
664
 
          RFC 5081: <citetitle>Using OpenPGP Keys for Transport Layer
665
 
          Security</citetitle>
 
673
          <citation>RFC 5081: <citetitle>Using OpenPGP Keys for
 
674
          Transport Layer Security</citetitle></citation>
666
675
        </term>
667
676
      <listitem>
668
677
        <para>
674
683
    </variablelist>
675
684
  </refsect1>
676
685
</refentry>
677
 
<!-- Local Variables: -->
678
 
<!-- time-stamp-start: "<!ENTITY TIMESTAMP [\"']" -->
679
 
<!-- time-stamp-end: "[\"']>" -->
680
 
<!-- time-stamp-format: "%:y-%02m-%02d" -->
681
 
<!-- End: -->