/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

Four new interrelated features:

1. Support using a different network interface via both initramfs.conf
   (the DEVICE setting) and the kernel command line (sixth field of
   the "ip=" option as in Linux' Documentation/nfsroot.txt).

2. Support connecting to a specified Mandos server directly using a
   kernel command line option ("mandos=connect:<ADDRESS>:<PORT>").

3. Support connecting directly to an IPv4 address (and port) using the
   "--connect" option of mandos-client.

4. Support an empty string to the --interface option to mandos-client.

* Makefile (WARN): Increase strictness by changing to
                   "-Wstrict-aliasing=1".

* debian/mandos-client.README.Debian (Use the Correct Network
  Interface): Changed to refer to initramfs.conf and nfsroot.txt.
  (Test the Server): Improve wording.
  (Non-local Connection): New section.
* initramfs-tools-script: Obey DEVICE environment variable and setting
                          from "/conf/initramfs.conf".  Also let any
                          "ip=" kernel command line option override
                          it.  Support new "mandos=connect" option.
                          Call "configure_networking" to set up IP
                          address on interface if necessary.
* plugin-runner.conf: Change example.
* plugins.d/mandos-client.c: Some whitespace and comment changes.
  (start_mandos_communication): Take an additional argument for
                                address family, all callers changed.
                                Connect to an IPv4 address if address
                                family is AF_INET.  Only set IPv6
                                scope_id for link-local addresses.
  (main): Accept empty interface name; this will not bring up any
         interface and leave the interface as unspecified.  Also do
         not restore kernel log level if lowering it failed.
* plugins.d/mandos-client.xml (OPTIONS): Document that the
                                         "--interface" option accepts
                                         an empty string.
  (EXAMPLE): Change example IPv6 address to a link-local address.

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-29">
 
5
<!ENTITY TIMESTAMP "2009-01-04">
 
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>
31
32
    </authorgroup>
32
33
    <copyright>
33
34
      <year>2008</year>
 
35
      <year>2009</year>
34
36
      <holder>Teddy Hogeborn</holder>
35
37
      <holder>Björn Påhlsson</holder>
36
38
    </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>
 
39
    <xi:include href="legalnotice.xml"/>
60
40
  </refentryinfo>
61
 
 
 
41
  
62
42
  <refmeta>
63
43
    <refentrytitle>&COMMANDNAME;</refentrytitle>
64
44
    <manvolnum>8</manvolnum>
67
47
  <refnamediv>
68
48
    <refname><command>&COMMANDNAME;</command></refname>
69
49
    <refpurpose>
70
 
      Sends encrypted passwords to authenticated Mandos clients
 
50
      Gives encrypted passwords to authenticated Mandos clients
71
51
    </refpurpose>
72
52
  </refnamediv>
73
 
 
 
53
  
74
54
  <refsynopsisdiv>
75
55
    <cmdsynopsis>
76
56
      <command>&COMMANDNAME;</command>
77
 
      <arg>--interface<arg choice="plain">NAME</arg></arg>
78
 
      <arg>--address<arg choice="plain">ADDRESS</arg></arg>
79
 
      <arg>--port<arg choice="plain">PORT</arg></arg>
80
 
      <arg>--priority<arg choice="plain">PRIORITY</arg></arg>
81
 
      <arg>--servicename<arg choice="plain">NAME</arg></arg>
82
 
      <arg>--configdir<arg choice="plain">DIRECTORY</arg></arg>
83
 
      <arg>--debug</arg>
84
 
    </cmdsynopsis>
85
 
    <cmdsynopsis>
86
 
      <command>&COMMANDNAME;</command>
87
 
      <arg>-i<arg choice="plain">NAME</arg></arg>
88
 
      <arg>-a<arg choice="plain">ADDRESS</arg></arg>
89
 
      <arg>-p<arg choice="plain">PORT</arg></arg>
90
 
      <arg>--priority<arg choice="plain">PRIORITY</arg></arg>
91
 
      <arg>--servicename<arg choice="plain">NAME</arg></arg>
92
 
      <arg>--configdir<arg choice="plain">DIRECTORY</arg></arg>
93
 
      <arg>--debug</arg>
 
57
      <group>
 
58
        <arg choice="plain"><option>--interface
 
59
        <replaceable>NAME</replaceable></option></arg>
 
60
        <arg choice="plain"><option>-i
 
61
        <replaceable>NAME</replaceable></option></arg>
 
62
      </group>
 
63
      <sbr/>
 
64
      <group>
 
65
        <arg choice="plain"><option>--address
 
66
        <replaceable>ADDRESS</replaceable></option></arg>
 
67
        <arg choice="plain"><option>-a
 
68
        <replaceable>ADDRESS</replaceable></option></arg>
 
69
      </group>
 
70
      <sbr/>
 
71
      <group>
 
72
        <arg choice="plain"><option>--port
 
73
        <replaceable>PORT</replaceable></option></arg>
 
74
        <arg choice="plain"><option>-p
 
75
        <replaceable>PORT</replaceable></option></arg>
 
76
      </group>
 
77
      <sbr/>
 
78
      <arg><option>--priority
 
79
      <replaceable>PRIORITY</replaceable></option></arg>
 
80
      <sbr/>
 
81
      <arg><option>--servicename
 
82
      <replaceable>NAME</replaceable></option></arg>
 
83
      <sbr/>
 
84
      <arg><option>--configdir
 
85
      <replaceable>DIRECTORY</replaceable></option></arg>
 
86
      <sbr/>
 
87
      <arg><option>--debug</option></arg>
 
88
      <sbr/>
 
89
      <arg><option>--no-dbus</option></arg>
94
90
    </cmdsynopsis>
95
91
    <cmdsynopsis>
96
92
      <command>&COMMANDNAME;</command>
97
93
      <group choice="req">
98
 
        <arg choice="plain">-h</arg>
99
 
        <arg choice="plain">--help</arg>
 
94
        <arg choice="plain"><option>--help</option></arg>
 
95
        <arg choice="plain"><option>-h</option></arg>
100
96
      </group>
101
97
    </cmdsynopsis>
102
98
    <cmdsynopsis>
103
99
      <command>&COMMANDNAME;</command>
104
 
      <arg choice="plain">--version</arg>
 
100
      <arg choice="plain"><option>--version</option></arg>
105
101
    </cmdsynopsis>
106
102
    <cmdsynopsis>
107
103
      <command>&COMMANDNAME;</command>
108
 
      <arg choice="plain">--check</arg>
 
104
      <arg choice="plain"><option>--check</option></arg>
109
105
    </cmdsynopsis>
110
106
  </refsynopsisdiv>
111
 
 
 
107
  
112
108
  <refsect1 id="description">
113
109
    <title>DESCRIPTION</title>
114
110
    <para>
123
119
      Any authenticated client is then given the stored pre-encrypted
124
120
      password for that specific client.
125
121
    </para>
126
 
 
127
122
  </refsect1>
128
123
  
129
124
  <refsect1 id="purpose">
130
125
    <title>PURPOSE</title>
131
 
 
132
126
    <para>
133
127
      The purpose of this is to enable <emphasis>remote and unattended
134
128
      rebooting</emphasis> of client host computer with an
135
129
      <emphasis>encrypted root file system</emphasis>.  See <xref
136
130
      linkend="overview"/> for details.
137
131
    </para>
138
 
 
139
132
  </refsect1>
140
133
  
141
134
  <refsect1 id="options">
142
135
    <title>OPTIONS</title>
143
 
 
144
136
    <variablelist>
145
137
      <varlistentry>
 
138
        <term><option>--help</option></term>
146
139
        <term><option>-h</option></term>
147
 
        <term><option>--help</option></term>
148
140
        <listitem>
149
141
          <para>
150
142
            Show a help message and exit
151
143
          </para>
152
144
        </listitem>
153
145
      </varlistentry>
154
 
 
 
146
      
155
147
      <varlistentry>
 
148
        <term><option>--interface</option>
 
149
        <replaceable>NAME</replaceable></term>
156
150
        <term><option>-i</option>
157
151
        <replaceable>NAME</replaceable></term>
158
 
        <term><option>--interface</option>
159
 
        <replaceable>NAME</replaceable></term>
160
152
        <listitem>
161
153
          <xi:include href="mandos-options.xml" xpointer="interface"/>
162
154
        </listitem>
163
155
      </varlistentry>
164
 
 
 
156
      
165
157
      <varlistentry>
166
 
        <term><literal>-a</literal>, <literal>--address <replaceable>
167
 
        ADDRESS</replaceable></literal></term>
 
158
        <term><option>--address
 
159
        <replaceable>ADDRESS</replaceable></option></term>
 
160
        <term><option>-a
 
161
        <replaceable>ADDRESS</replaceable></option></term>
168
162
        <listitem>
169
163
          <xi:include href="mandos-options.xml" xpointer="address"/>
170
164
        </listitem>
171
165
      </varlistentry>
172
 
 
 
166
      
173
167
      <varlistentry>
174
 
        <term><literal>-p</literal>, <literal>--port <replaceable>
175
 
        PORT</replaceable></literal></term>
 
168
        <term><option>--port
 
169
        <replaceable>PORT</replaceable></option></term>
 
170
        <term><option>-p
 
171
        <replaceable>PORT</replaceable></option></term>
176
172
        <listitem>
177
173
          <xi:include href="mandos-options.xml" xpointer="port"/>
178
174
        </listitem>
179
175
      </varlistentry>
180
 
 
 
176
      
181
177
      <varlistentry>
182
 
        <term><literal>--check</literal></term>
 
178
        <term><option>--check</option></term>
183
179
        <listitem>
184
180
          <para>
185
181
            Run the server’s self-tests.  This includes any unit
187
183
          </para>
188
184
        </listitem>
189
185
      </varlistentry>
190
 
 
 
186
      
191
187
      <varlistentry>
192
 
        <term><literal>--debug</literal></term>
 
188
        <term><option>--debug</option></term>
193
189
        <listitem>
194
190
          <xi:include href="mandos-options.xml" xpointer="debug"/>
195
191
        </listitem>
196
192
      </varlistentry>
197
 
 
 
193
      
198
194
      <varlistentry>
199
 
        <term><literal>--priority <replaceable>
200
 
        PRIORITY</replaceable></literal></term>
 
195
        <term><option>--priority <replaceable>
 
196
        PRIORITY</replaceable></option></term>
201
197
        <listitem>
202
198
          <xi:include href="mandos-options.xml" xpointer="priority"/>
203
199
        </listitem>
204
200
      </varlistentry>
205
 
 
 
201
      
206
202
      <varlistentry>
207
 
        <term><literal>--servicename <replaceable>NAME</replaceable>
208
 
        </literal></term>
 
203
        <term><option>--servicename
 
204
        <replaceable>NAME</replaceable></option></term>
209
205
        <listitem>
210
206
          <xi:include href="mandos-options.xml"
211
207
                      xpointer="servicename"/>
212
208
        </listitem>
213
209
      </varlistentry>
214
 
 
 
210
      
215
211
      <varlistentry>
216
 
        <term><literal>--configdir <replaceable>DIR</replaceable>
217
 
        </literal></term>
 
212
        <term><option>--configdir
 
213
        <replaceable>DIRECTORY</replaceable></option></term>
218
214
        <listitem>
219
215
          <para>
220
216
            Directory to search for configuration files.  Default is
226
222
          </para>
227
223
        </listitem>
228
224
      </varlistentry>
229
 
 
 
225
      
230
226
      <varlistentry>
231
 
        <term><literal>--version</literal></term>
 
227
        <term><option>--version</option></term>
232
228
        <listitem>
233
229
          <para>
234
230
            Prints the program version and exit.
235
231
          </para>
236
232
        </listitem>
237
233
      </varlistentry>
 
234
      
 
235
      <varlistentry>
 
236
        <term><option>--no-dbus</option></term>
 
237
        <listitem>
 
238
          <xi:include href="mandos-options.xml" xpointer="dbus"/>
 
239
          <para>
 
240
            See also <xref linkend="dbus_interface"/>.
 
241
          </para>
 
242
        </listitem>
 
243
      </varlistentry>
238
244
    </variablelist>
239
245
  </refsect1>
240
 
 
 
246
  
241
247
  <refsect1 id="overview">
242
248
    <title>OVERVIEW</title>
243
249
    <xi:include href="overview.xml"/>
244
250
    <para>
245
251
      This program is the server part.  It is a normal server program
246
252
      and will run in a normal system environment, not in an initial
247
 
      RAM disk environment.
 
253
      <acronym>RAM</acronym> disk environment.
248
254
    </para>
249
255
  </refsect1>
250
 
 
 
256
  
251
257
  <refsect1 id="protocol">
252
258
    <title>NETWORK PROTOCOL</title>
253
259
    <para>
305
311
      </row>
306
312
    </tbody></tgroup></table>
307
313
  </refsect1>
308
 
 
 
314
  
309
315
  <refsect1 id="checking">
310
316
    <title>CHECKING</title>
311
317
    <para>
319
325
      <manvolnum>5</manvolnum></citerefentry>.
320
326
    </para>
321
327
  </refsect1>
322
 
 
 
328
  
323
329
  <refsect1 id="logging">
324
330
    <title>LOGGING</title>
325
331
    <para>
329
335
      and also show them on the console.
330
336
    </para>
331
337
  </refsect1>
 
338
  
 
339
  <refsect1 id="dbus_interface">
 
340
    <title>D-BUS INTERFACE</title>
 
341
    <para>
 
342
      The server will by default provide a D-Bus system bus interface.
 
343
      This interface will only be accessible by the root user or a
 
344
      Mandos-specific user, if such a user exists.
 
345
      <!-- XXX -->
 
346
    </para>
 
347
  </refsect1>
332
348
 
333
349
  <refsect1 id="exit_status">
334
350
    <title>EXIT STATUS</title>
337
353
      critical error is encountered.
338
354
    </para>
339
355
  </refsect1>
340
 
 
 
356
  
341
357
  <refsect1 id="environment">
342
358
    <title>ENVIRONMENT</title>
343
359
    <variablelist>
344
360
      <varlistentry>
345
 
        <term><varname>PATH</varname></term>
 
361
        <term><envar>PATH</envar></term>
346
362
        <listitem>
347
363
          <para>
348
364
            To start the configured checker (see <xref
357
373
      </varlistentry>
358
374
    </variablelist>
359
375
  </refsect1>
360
 
 
361
 
  <refsect1 id="file">
 
376
  
 
377
  <refsect1 id="files">
362
378
    <title>FILES</title>
363
379
    <para>
364
380
      Use the <option>--configdir</option> option to change where
387
403
        </listitem>
388
404
      </varlistentry>
389
405
      <varlistentry>
390
 
        <term><filename>/var/run/mandos/mandos.pid</filename></term>
 
406
        <term><filename>/var/run/mandos.pid</filename></term>
391
407
        <listitem>
392
408
          <para>
393
409
            The file containing the process id of
428
444
      Currently, if a client is declared <quote>invalid</quote> due to
429
445
      having timed out, the server does not record this fact onto
430
446
      permanent storage.  This has some security implications, see
431
 
      <xref linkend="CLIENTS"/>.
 
447
      <xref linkend="clients"/>.
432
448
    </para>
433
449
    <para>
434
450
      There is currently no way of querying the server of the current
442
458
      Debug mode is conflated with running in the foreground.
443
459
    </para>
444
460
    <para>
445
 
      The console log messages does not show a timestamp.
 
461
      The console log messages does not show a time stamp.
 
462
    </para>
 
463
    <para>
 
464
      This server does not check the expire time of clients’ OpenPGP
 
465
      keys.
446
466
    </para>
447
467
  </refsect1>
448
468
  
483
503
      </para>
484
504
    </informalexample>
485
505
  </refsect1>
486
 
 
 
506
  
487
507
  <refsect1 id="security">
488
508
    <title>SECURITY</title>
489
 
    <refsect2 id="SERVER">
 
509
    <refsect2 id="server">
490
510
      <title>SERVER</title>
491
511
      <para>
492
512
        Running this <command>&COMMANDNAME;</command> server program
493
513
        should not in itself present any security risk to the host
494
 
        computer running it.  The program does not need any special
495
 
        privileges to run, and is designed to run as a non-root user.
 
514
        computer running it.  The program switches to a non-root user
 
515
        soon after startup.
496
516
      </para>
497
517
    </refsect2>
498
 
    <refsect2 id="CLIENTS">
 
518
    <refsect2 id="clients">
499
519
      <title>CLIENTS</title>
500
520
      <para>
501
521
        The server only gives out its stored data to clients which
508
528
        <citerefentry><refentrytitle>mandos-clients.conf</refentrytitle>
509
529
        <manvolnum>5</manvolnum></citerefentry>)
510
530
        <emphasis>must</emphasis> be made non-readable by anyone
511
 
        except the user running the server.
 
531
        except the user starting the server (usually root).
512
532
      </para>
513
533
      <para>
514
534
        As detailed in <xref linkend="checking"/>, the status of all
525
545
        restarting servers if it is suspected that a client has, in
526
546
        fact, been compromised by parties who may now be running a
527
547
        fake Mandos client with the keys from the non-encrypted
528
 
        initial RAM image of the client host.  What should be done in
529
 
        that case (if restarting the server program really is
530
 
        necessary) is to stop the server program, edit the
 
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
531
551
        configuration file to omit any suspect clients, and restart
532
552
        the server program.
533
553
      </para>
534
554
      <para>
535
555
        For more details on client-side security, see
536
 
        <citerefentry><refentrytitle>password-request</refentrytitle>
 
556
        <citerefentry><refentrytitle>mandos-client</refentrytitle>
537
557
        <manvolnum>8mandos</manvolnum></citerefentry>.
538
558
      </para>
539
559
    </refsect2>
540
560
  </refsect1>
541
 
 
 
561
  
542
562
  <refsect1 id="see_also">
543
563
    <title>SEE ALSO</title>
544
564
    <para>
547
567
        <manvolnum>5</manvolnum></citerefentry>, <citerefentry>
548
568
        <refentrytitle>mandos.conf</refentrytitle>
549
569
        <manvolnum>5</manvolnum></citerefentry>, <citerefentry>
550
 
        <refentrytitle>password-request</refentrytitle>
 
570
        <refentrytitle>mandos-client</refentrytitle>
551
571
        <manvolnum>8mandos</manvolnum></citerefentry>, <citerefentry>
552
572
        <refentrytitle>sh</refentrytitle><manvolnum>1</manvolnum>
553
573
      </citerefentry>