/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 plugins.d/mandos-client.xml

* plugins.d/mandos-client.c (main): Add "DELAY" environment variable.
                                    Check return value from setenv().

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-client">
6
 
<!ENTITY TIMESTAMP "2008-09-06">
 
5
<!ENTITY TIMESTAMP "2011-10-03">
 
6
<!ENTITY % common SYSTEM "../common.ent">
 
7
%common;
7
8
]>
8
9
 
9
10
<refentry xmlns:xi="http://www.w3.org/2001/XInclude">
10
11
  <refentryinfo>
11
12
    <title>Mandos Manual</title>
12
 
    <!-- Nwalsh’s docbook scripts use this to generate the footer: -->
 
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>2011</year>
34
37
      <holder>Teddy Hogeborn</holder>
35
38
      <holder>Björn Påhlsson</holder>
36
39
    </copyright>
37
40
    <xi:include href="../legalnotice.xml"/>
38
41
  </refentryinfo>
39
 
 
 
42
  
40
43
  <refmeta>
41
44
    <refentrytitle>&COMMANDNAME;</refentrytitle>
42
45
    <manvolnum>8mandos</manvolnum>
45
48
  <refnamediv>
46
49
    <refname><command>&COMMANDNAME;</command></refname>
47
50
    <refpurpose>
48
 
      Client for mandos
 
51
      Client for <application>Mandos</application>
49
52
    </refpurpose>
50
53
  </refnamediv>
51
 
 
 
54
  
52
55
  <refsynopsisdiv>
53
56
    <cmdsynopsis>
54
57
      <command>&COMMANDNAME;</command>
91
94
      </arg>
92
95
      <sbr/>
93
96
      <arg>
 
97
        <option>--delay <replaceable>SECONDS</replaceable></option>
 
98
      </arg>
 
99
      <sbr/>
 
100
      <arg>
 
101
        <option>--retry <replaceable>SECONDS</replaceable></option>
 
102
      </arg>
 
103
      <sbr/>
 
104
      <arg>
94
105
        <option>--debug</option>
95
106
      </arg>
96
107
    </cmdsynopsis>
113
124
      </group>
114
125
    </cmdsynopsis>
115
126
  </refsynopsisdiv>
116
 
 
 
127
  
117
128
  <refsect1 id="description">
118
129
    <title>DESCRIPTION</title>
119
130
    <para>
120
131
      <command>&COMMANDNAME;</command> is a client program that
121
132
      communicates with <citerefentry><refentrytitle
122
133
      >mandos</refentrytitle><manvolnum>8</manvolnum></citerefentry>
123
 
      to get a password.  It uses IPv6 link-local addresses to get
124
 
      network connectivity, Zeroconf to find servers, and TLS with an
125
 
      OpenPGP key to ensure authenticity and confidentiality.  It
126
 
      keeps running, trying all servers on the network, until it
127
 
      receives a satisfactory reply or a TERM signal is received.
 
134
      to get a password.  In slightly more detail, this client program
 
135
      brings up a network interface, uses the interface’s IPv6
 
136
      link-local address to get network connectivity, uses Zeroconf to
 
137
      find servers on the local network, and communicates with servers
 
138
      using TLS with an OpenPGP key to ensure authenticity and
 
139
      confidentiality.  This client program keeps running, trying all
 
140
      servers on the network, until it receives a satisfactory reply
 
141
      or a TERM signal.  After all servers have been tried, all
 
142
      servers are periodically retried.  If no servers are found it
 
143
      will wait indefinitely for new servers to appear.
128
144
    </para>
129
145
    <para>
130
146
      This program is not meant to be run directly; it is really meant
184
200
      </varlistentry>
185
201
      
186
202
      <varlistentry>
187
 
        <term><option>--interface=
188
 
        <replaceable>NAME</replaceable></option></term>
 
203
        <term><option>--interface=<replaceable
 
204
        >NAME</replaceable></option></term>
189
205
        <term><option>-i
190
206
        <replaceable>NAME</replaceable></option></term>
191
207
        <listitem>
192
208
          <para>
193
209
            Network interface that will be brought up and scanned for
194
 
            Mandos servers to connect to.  The default it
195
 
            <quote><literal>eth0</literal></quote>.
 
210
            Mandos servers to connect to.  The default is the empty
 
211
            string, which will automatically choose an appropriate
 
212
            interface.
196
213
          </para>
197
214
          <para>
198
215
            If the <option>--connect</option> option is used, this
199
216
            specifies the interface to use to connect to the address
200
217
            given.
201
218
          </para>
 
219
          <para>
 
220
            Note that since this program will normally run in the
 
221
            initial RAM disk environment, the interface must be an
 
222
            interface which exists at that stage.  Thus, the interface
 
223
            can not be a pseudo-interface such as <quote>br0</quote>
 
224
            or <quote>tun0</quote>; such interfaces will not exist
 
225
            until much later in the boot process, and can not be used
 
226
            by this program.
 
227
          </para>
 
228
          <para>
 
229
            <replaceable>NAME</replaceable> can be the string
 
230
            <quote><literal>none</literal></quote>; this will not use
 
231
            any specific interface, and will not bring up an interface
 
232
            on startup.  This is not recommended, and only meant for
 
233
            advanced users.
 
234
          </para>
202
235
        </listitem>
203
236
      </varlistentry>
204
237
      
215
248
          </para>
216
249
        </listitem>
217
250
      </varlistentry>
218
 
 
 
251
      
219
252
      <varlistentry>
220
253
        <term><option>--seckey=<replaceable
221
254
        >FILE</replaceable></option></term>
238
271
                      xpointer="priority"/>
239
272
        </listitem>
240
273
      </varlistentry>
241
 
 
 
274
      
242
275
      <varlistentry>
243
276
        <term><option>--dh-bits=<replaceable
244
277
        >BITS</replaceable></option></term>
249
282
          </para>
250
283
        </listitem>
251
284
      </varlistentry>
 
285
 
 
286
      <varlistentry>
 
287
        <term><option>--delay=<replaceable
 
288
        >SECONDS</replaceable></option></term>
 
289
        <listitem>
 
290
          <para>
 
291
            After bringing the network interface up, the program waits
 
292
            for the interface to arrive in a <quote>running</quote>
 
293
            state before proceeding.  During this time, the kernel log
 
294
            level will be lowered to reduce clutter on the system
 
295
            console, alleviating any other plugins which might be
 
296
            using the system console.  This option sets the upper
 
297
            limit of seconds to wait.  The default is 2.5 seconds.
 
298
          </para>
 
299
        </listitem>
 
300
      </varlistentry>
 
301
 
 
302
      <varlistentry>
 
303
        <term><option>--retry=<replaceable
 
304
        >SECONDS</replaceable></option></term>
 
305
        <listitem>
 
306
          <para>
 
307
            All Mandos servers are tried repeatedly until a password
 
308
            is received.  This value specifies, in seconds, how long
 
309
            between each successive try <emphasis>for the same
 
310
            server</emphasis>.  The default is 10 seconds.
 
311
          </para>
 
312
        </listitem>
 
313
      </varlistentry>
252
314
      
253
315
      <varlistentry>
254
316
        <term><option>--debug</option></term>
284
346
          </para>
285
347
        </listitem>
286
348
      </varlistentry>
287
 
 
 
349
      
288
350
      <varlistentry>
289
351
        <term><option>--version</option></term>
290
352
        <term><option>-V</option></term>
296
358
      </varlistentry>
297
359
    </variablelist>
298
360
  </refsect1>
299
 
 
 
361
  
300
362
  <refsect1 id="overview">
301
363
    <title>OVERVIEW</title>
302
364
    <xi:include href="../overview.xml"/>
311
373
      <filename>/etc/crypttab</filename>, but it would then be
312
374
      impossible to enter a password for the encrypted root disk at
313
375
      the console, since this program does not read from the console
314
 
      at all.  This is why a separate plugin (<citerefentry>
315
 
      <refentrytitle>password-prompt</refentrytitle>
316
 
      <manvolnum>8mandos</manvolnum></citerefentry>) does that, which
317
 
      will be run in parallel to this one by the plugin runner.
 
376
      at all.  This is why a separate plugin runner (<citerefentry>
 
377
      <refentrytitle>plugin-runner</refentrytitle>
 
378
      <manvolnum>8mandos</manvolnum></citerefentry>) is used to run
 
379
      both this program and others in in parallel,
 
380
      <emphasis>one</emphasis> of which will prompt for passwords on
 
381
      the system console.
318
382
    </para>
319
383
  </refsect1>
320
384
  
325
389
      server could be found and the password received from it could be
326
390
      successfully decrypted and output on standard output.  The
327
391
      program will exit with a non-zero exit status only if a critical
328
 
      error occurs.  Otherwise, it will forever connect to new
329
 
      <application>Mandos</application> servers as they appear, trying
330
 
      to get a decryptable password.
 
392
      error occurs.  Otherwise, it will forever connect to any
 
393
      discovered <application>Mandos</application> servers, trying to
 
394
      get a decryptable password and print it.
331
395
    </para>
332
396
  </refsect1>
333
397
  
341
405
    </para>
342
406
  </refsect1>
343
407
  
344
 
  <refsect1 id="file">
 
408
  <refsect1 id="files">
345
409
    <title>FILES</title>
346
410
    <variablelist>
347
411
      <varlistentry>
366
430
<!--     <para> -->
367
431
<!--     </para> -->
368
432
<!--   </refsect1> -->
369
 
 
 
433
  
370
434
  <refsect1 id="example">
371
435
    <title>EXAMPLE</title>
372
436
    <para>
408
472
    <informalexample>
409
473
      <para>
410
474
        Run in debug mode, with a custom key, and do not use Zeroconf
411
 
        to locate a server; connect directly to the IPv6 address
412
 
        <quote><systemitem class="ipaddress"
413
 
        >2001:db8:f983:bd0b:30de:ae4a:71f2:f672</systemitem></quote>,
414
 
        port 4711, using interface eth2:
 
475
        to locate a server; connect directly to the IPv6 link-local
 
476
        address <quote><systemitem class="ipaddress"
 
477
        >fe80::aede:48ff:fe71:f6f2</systemitem></quote>, port 4711,
 
478
        using interface eth2:
415
479
      </para>
416
480
      <para>
417
481
 
418
482
<!-- do not wrap this line -->
419
 
<userinput>&COMMANDNAME; --debug --pubkey keydir/pubkey.txt --seckey keydir/seckey.txt --connect 2001:db8:f983:bd0b:30de:ae4a:71f2:f672:4711 --interface eth2</userinput>
 
483
<userinput>&COMMANDNAME; --debug --pubkey keydir/pubkey.txt --seckey keydir/seckey.txt --connect fe80::aede:48ff:fe71:f6f2:4711 --interface eth2</userinput>
420
484
 
421
485
      </para>
422
486
    </informalexample>
423
487
  </refsect1>
424
 
 
 
488
  
425
489
  <refsect1 id="security">
426
490
    <title>SECURITY</title>
427
491
    <para>
447
511
      The only remaining weak point is that someone with physical
448
512
      access to the client hard drive might turn off the client
449
513
      computer, read the OpenPGP keys directly from the hard drive,
450
 
      and communicate with the server.  The defense against this is
451
 
      that the server is supposed to notice the client disappearing
452
 
      and will stop giving out the encrypted data.  Therefore, it is
453
 
      important to set the timeout and checker interval values tightly
454
 
      on the server.  See <citerefentry><refentrytitle
 
514
      and communicate with the server.  To safeguard against this, the
 
515
      server is supposed to notice the client disappearing and stop
 
516
      giving out the encrypted data.  Therefore, it is important to
 
517
      set the timeout and checker interval values tightly on the
 
518
      server.  See <citerefentry><refentrytitle
455
519
      >mandos</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
456
520
    </para>
457
521
    <para>
468
532
      confidential.
469
533
    </para>
470
534
  </refsect1>
471
 
 
 
535
  
472
536
  <refsect1 id="see_also">
473
537
    <title>SEE ALSO</title>
474
538
    <para>
 
539
      <citerefentry><refentrytitle>intro</refentrytitle>
 
540
      <manvolnum>8mandos</manvolnum></citerefentry>,
475
541
      <citerefentry><refentrytitle>cryptsetup</refentrytitle>
476
542
      <manvolnum>8</manvolnum></citerefentry>,
477
543
      <citerefentry><refentrytitle>crypttab</refentrytitle>
599
665
      </varlistentry>
600
666
    </variablelist>
601
667
  </refsect1>
602
 
 
603
668
</refentry>
 
669
 
604
670
<!-- Local Variables: -->
605
671
<!-- time-stamp-start: "<!ENTITY TIMESTAMP [\"']" -->
606
672
<!-- time-stamp-end: "[\"']>" -->