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

* debian/source/local-options: New; contains "--single-debian-patch".

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
 
<!ENTITY COMMANDNAME "password-request">
6
 
<!ENTITY TIMESTAMP "2008-09-03">
 
4
<!ENTITY COMMANDNAME "mandos-client">
 
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>
55
58
      <group>
56
59
        <arg choice="plain"><option>--connect
57
 
        <replaceable>IPADDR</replaceable><literal>:</literal
 
60
        <replaceable>ADDRESS</replaceable><literal>:</literal
58
61
        ><replaceable>PORT</replaceable></option></arg>
59
62
        <arg choice="plain"><option>-c
60
 
        <replaceable>IPADDR</replaceable><literal>:</literal
 
63
        <replaceable>ADDRESS</replaceable><literal>:</literal
61
64
        ><replaceable>PORT</replaceable></option></arg>
62
65
      </group>
63
66
      <sbr/>
64
67
      <group>
65
 
        <arg choice="plain"><option>--keydir
66
 
        <replaceable>DIRECTORY</replaceable></option></arg>
67
 
        <arg choice="plain"><option>-d
68
 
        <replaceable>DIRECTORY</replaceable></option></arg>
69
 
      </group>
70
 
      <sbr/>
71
 
      <group>
72
68
        <arg choice="plain"><option>--interface
73
69
        <replaceable>NAME</replaceable></option></arg>
74
70
        <arg choice="plain"><option>-i
98
94
      </arg>
99
95
      <sbr/>
100
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>
101
105
        <option>--debug</option>
102
106
      </arg>
103
107
    </cmdsynopsis>
120
124
      </group>
121
125
    </cmdsynopsis>
122
126
  </refsynopsisdiv>
123
 
 
 
127
  
124
128
  <refsect1 id="description">
125
129
    <title>DESCRIPTION</title>
126
130
    <para>
127
131
      <command>&COMMANDNAME;</command> is a client program that
128
132
      communicates with <citerefentry><refentrytitle
129
133
      >mandos</refentrytitle><manvolnum>8</manvolnum></citerefentry>
130
 
      to get a password.  It uses IPv6 link-local addresses to get
131
 
      network connectivity, Zeroconf to find servers, and TLS with an
132
 
      OpenPGP key to ensure authenticity and confidentiality.  It
133
 
      keeps running, trying all servers on the network, until it
134
 
      receives a satisfactory reply or a TERM signal is recieved.
 
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.
135
144
    </para>
136
145
    <para>
137
146
      This program is not meant to be run directly; it is really meant
191
200
      </varlistentry>
192
201
      
193
202
      <varlistentry>
194
 
        <term><option>--keydir=<replaceable
195
 
        >DIRECTORY</replaceable></option></term>
196
 
        <term><option>-d
197
 
        <replaceable>DIRECTORY</replaceable></option></term>
198
 
        <listitem>
199
 
          <para>
200
 
            Directory to read the OpenPGP key files
201
 
            <filename>pubkey.txt</filename> and
202
 
            <filename>seckey.txt</filename> from.  The default is
203
 
            <filename>/conf/conf.d/mandos</filename> (in the initial
204
 
            <acronym>RAM</acronym> disk environment).
205
 
          </para>
206
 
        </listitem>
207
 
      </varlistentry>
208
 
 
209
 
      <varlistentry>
210
 
        <term><option>--interface=
211
 
        <replaceable>NAME</replaceable></option></term>
 
203
        <term><option>--interface=<replaceable
 
204
        >NAME</replaceable></option></term>
212
205
        <term><option>-i
213
206
        <replaceable>NAME</replaceable></option></term>
214
207
        <listitem>
215
208
          <para>
216
209
            Network interface that will be brought up and scanned for
217
 
            Mandos servers to connect to.  The default it
218
 
            <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.
219
213
          </para>
220
214
          <para>
221
215
            If the <option>--connect</option> option is used, this
222
216
            specifies the interface to use to connect to the address
223
217
            given.
224
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>
225
235
        </listitem>
226
236
      </varlistentry>
227
237
      
232
242
        <replaceable>FILE</replaceable></option></term>
233
243
        <listitem>
234
244
          <para>
235
 
            OpenPGP public key file base name.  This will be combined
236
 
            with the directory from the <option>--keydir</option>
237
 
            option to form an absolute file name.  The default name is
238
 
            <quote><literal>pubkey.txt</literal></quote>.
 
245
            OpenPGP public key file name.  The default name is
 
246
            <quote><filename>/conf/conf.d/mandos/pubkey.txt</filename
 
247
            ></quote>.
239
248
          </para>
240
249
        </listitem>
241
250
      </varlistentry>
242
 
 
 
251
      
243
252
      <varlistentry>
244
253
        <term><option>--seckey=<replaceable
245
254
        >FILE</replaceable></option></term>
247
256
        <replaceable>FILE</replaceable></option></term>
248
257
        <listitem>
249
258
          <para>
250
 
            OpenPGP secret key file base name.  This will be combined
251
 
            with the directory from the <option>--keydir</option>
252
 
            option to form an absolute file name.  The default name is
253
 
            <quote><literal>seckey.txt</literal></quote>.
 
259
            OpenPGP secret key file name.  The default name is
 
260
            <quote><filename>/conf/conf.d/mandos/seckey.txt</filename
 
261
            ></quote>.
254
262
          </para>
255
263
        </listitem>
256
264
      </varlistentry>
263
271
                      xpointer="priority"/>
264
272
        </listitem>
265
273
      </varlistentry>
266
 
 
 
274
      
267
275
      <varlistentry>
268
276
        <term><option>--dh-bits=<replaceable
269
277
        >BITS</replaceable></option></term>
274
282
          </para>
275
283
        </listitem>
276
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>
277
314
      
278
315
      <varlistentry>
279
316
        <term><option>--debug</option></term>
309
346
          </para>
310
347
        </listitem>
311
348
      </varlistentry>
312
 
 
 
349
      
313
350
      <varlistentry>
314
351
        <term><option>--version</option></term>
315
352
        <term><option>-V</option></term>
321
358
      </varlistentry>
322
359
    </variablelist>
323
360
  </refsect1>
324
 
 
 
361
  
325
362
  <refsect1 id="overview">
326
363
    <title>OVERVIEW</title>
327
364
    <xi:include href="../overview.xml"/>
336
373
      <filename>/etc/crypttab</filename>, but it would then be
337
374
      impossible to enter a password for the encrypted root disk at
338
375
      the console, since this program does not read from the console
339
 
      at all.  This is why a separate plugin (<citerefentry>
340
 
      <refentrytitle>password-prompt</refentrytitle>
341
 
      <manvolnum>8mandos</manvolnum></citerefentry>) does that, which
342
 
      will be run in parallell 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.
343
382
    </para>
344
383
  </refsect1>
345
384
  
350
389
      server could be found and the password received from it could be
351
390
      successfully decrypted and output on standard output.  The
352
391
      program will exit with a non-zero exit status only if a critical
353
 
      error occurs.  Otherwise, it will forever connect to new
354
 
      <application>Mandos</application> servers as they appear, trying
355
 
      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.
356
395
    </para>
357
396
  </refsect1>
358
397
  
366
405
    </para>
367
406
  </refsect1>
368
407
  
369
 
  <refsect1 id="file">
 
408
  <refsect1 id="files">
370
409
    <title>FILES</title>
371
410
    <variablelist>
372
411
      <varlistentry>
391
430
<!--     <para> -->
392
431
<!--     </para> -->
393
432
<!--   </refsect1> -->
394
 
 
 
433
  
395
434
  <refsect1 id="example">
396
435
    <title>EXAMPLE</title>
397
436
    <para>
411
450
    </informalexample>
412
451
    <informalexample>
413
452
      <para>
414
 
        Search for Mandos servers on another interface:
 
453
        Search for Mandos servers (and connect to them) using another
 
454
        interface:
415
455
      </para>
416
456
      <para>
417
457
        <!-- do not wrap this line -->
420
460
    </informalexample>
421
461
    <informalexample>
422
462
      <para>
423
 
        Run in debug mode, and use a custom key directory:
 
463
        Run in debug mode, and use a custom key:
424
464
      </para>
425
465
      <para>
426
 
        <!-- do not wrap this line -->
427
 
        <userinput>&COMMANDNAME; --debug --keydir keydir</userinput>
 
466
 
 
467
<!-- do not wrap this line -->
 
468
<userinput>&COMMANDNAME; --debug --pubkey keydir/pubkey.txt --seckey keydir/seckey.txt</userinput>
 
469
 
428
470
      </para>
429
471
    </informalexample>
430
472
    <informalexample>
431
473
      <para>
432
 
        Run in debug mode, with a custom key directory, and do not use
433
 
        Zeroconf to locate a server; connect directly to the IPv6
 
474
        Run in debug mode, with a custom key, and do not use Zeroconf
 
475
        to locate a server; connect directly to the IPv6 link-local
434
476
        address <quote><systemitem class="ipaddress"
435
 
        >2001:db8:f983:bd0b:30de:ae4a:71f2:f672</systemitem></quote>,
436
 
        port 4711, using interface eth2:
 
477
        >fe80::aede:48ff:fe71:f6f2</systemitem></quote>, port 4711,
 
478
        using interface eth2:
437
479
      </para>
438
480
      <para>
439
481
 
440
482
<!-- do not wrap this line -->
441
 
<userinput>&COMMANDNAME; --debug --keydir keydir --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>
442
484
 
443
485
      </para>
444
486
    </informalexample>
445
487
  </refsect1>
446
 
 
 
488
  
447
489
  <refsect1 id="security">
448
490
    <title>SECURITY</title>
449
491
    <para>
469
511
      The only remaining weak point is that someone with physical
470
512
      access to the client hard drive might turn off the client
471
513
      computer, read the OpenPGP keys directly from the hard drive,
472
 
      and communicate with the server.  The defense against this is
473
 
      that the server is supposed to notice the client disappearing
474
 
      and will stop giving out the encrypted data.  Therefore, it is
475
 
      important to set the timeout and checker interval values tightly
476
 
      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
477
519
      >mandos</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
478
520
    </para>
479
521
    <para>
490
532
      confidential.
491
533
    </para>
492
534
  </refsect1>
493
 
 
 
535
  
494
536
  <refsect1 id="see_also">
495
537
    <title>SEE ALSO</title>
496
538
    <para>
 
539
      <citerefentry><refentrytitle>intro</refentrytitle>
 
540
      <manvolnum>8mandos</manvolnum></citerefentry>,
497
541
      <citerefentry><refentrytitle>cryptsetup</refentrytitle>
498
542
      <manvolnum>8</manvolnum></citerefentry>,
499
543
      <citerefentry><refentrytitle>crypttab</refentrytitle>
621
665
      </varlistentry>
622
666
    </variablelist>
623
667
  </refsect1>
624
 
 
625
668
</refentry>
 
669
 
626
670
<!-- Local Variables: -->
627
671
<!-- time-stamp-start: "<!ENTITY TIMESTAMP [\"']" -->
628
672
<!-- time-stamp-end: "[\"']>" -->