/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

  • Committer: Teddy Hogeborn
  • Date: 2008-09-26 21:54:54 UTC
  • Revision ID: teddy@fukt.bsnet.se-20080926215454-7kfrl0gxmisz71gw
* mandos: Remove unused "select" module.  Import "ctypes.util".
  (AvahiError.__init__): Call __init__ of superclass.
  (AvahiService.__init__): Rename keyword arg "type" to "servicetype".
  (AvahiService.rename): Bug fix: use "self.rename_count".
  (Client.__init__): Use "None" instead of "{}" as default value.
  (tcp_handler): Renamed to "TCP_handler".  All callers changed.
  (IPv6_TCPServer.__init__): Don't "return", just call the superclass
                             method.
  (if_nametoindex): Don't import "ctypes.util" here.
  (main): Removed unused variable "main_loop_started".

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 VERSION "1.0">
5
 
<!ENTITY COMMANDNAME "password-request">
6
 
<!ENTITY TIMESTAMP "2008-09-03">
 
5
<!ENTITY COMMANDNAME "mandos-client">
 
6
<!ENTITY TIMESTAMP "2008-09-12">
7
7
]>
8
8
 
9
9
<refentry xmlns:xi="http://www.w3.org/2001/XInclude">
36
36
    </copyright>
37
37
    <xi:include href="../legalnotice.xml"/>
38
38
  </refentryinfo>
39
 
 
 
39
  
40
40
  <refmeta>
41
41
    <refentrytitle>&COMMANDNAME;</refentrytitle>
42
42
    <manvolnum>8mandos</manvolnum>
45
45
  <refnamediv>
46
46
    <refname><command>&COMMANDNAME;</command></refname>
47
47
    <refpurpose>
48
 
      Client for mandos
 
48
      Client for <application>Mandos</application>
49
49
    </refpurpose>
50
50
  </refnamediv>
51
 
 
 
51
  
52
52
  <refsynopsisdiv>
53
53
    <cmdsynopsis>
54
54
      <command>&COMMANDNAME;</command>
55
55
      <group>
56
56
        <arg choice="plain"><option>--connect
57
 
        <replaceable>IPADDR</replaceable><literal>:</literal
 
57
        <replaceable>ADDRESS</replaceable><literal>:</literal
58
58
        ><replaceable>PORT</replaceable></option></arg>
59
59
        <arg choice="plain"><option>-c
60
 
        <replaceable>IPADDR</replaceable><literal>:</literal
 
60
        <replaceable>ADDRESS</replaceable><literal>:</literal
61
61
        ><replaceable>PORT</replaceable></option></arg>
62
62
      </group>
63
63
      <sbr/>
64
64
      <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
65
        <arg choice="plain"><option>--interface
73
66
        <replaceable>NAME</replaceable></option></arg>
74
67
        <arg choice="plain"><option>-i
120
113
      </group>
121
114
    </cmdsynopsis>
122
115
  </refsynopsisdiv>
123
 
 
 
116
  
124
117
  <refsect1 id="description">
125
118
    <title>DESCRIPTION</title>
126
119
    <para>
131
124
      network connectivity, Zeroconf to find servers, and TLS with an
132
125
      OpenPGP key to ensure authenticity and confidentiality.  It
133
126
      keeps running, trying all servers on the network, until it
134
 
      receives a satisfactory reply or a TERM signal is recieved.
 
127
      receives a satisfactory reply or a TERM signal is received.
135
128
    </para>
136
129
    <para>
137
130
      This program is not meant to be run directly; it is really meant
191
184
      </varlistentry>
192
185
      
193
186
      <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
187
        <term><option>--interface=
211
188
        <replaceable>NAME</replaceable></option></term>
212
189
        <term><option>-i
232
209
        <replaceable>FILE</replaceable></option></term>
233
210
        <listitem>
234
211
          <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>.
 
212
            OpenPGP public key file name.  The default name is
 
213
            <quote><filename>/conf/conf.d/mandos/pubkey.txt</filename
 
214
            ></quote>.
239
215
          </para>
240
216
        </listitem>
241
217
      </varlistentry>
242
 
 
 
218
      
243
219
      <varlistentry>
244
220
        <term><option>--seckey=<replaceable
245
221
        >FILE</replaceable></option></term>
247
223
        <replaceable>FILE</replaceable></option></term>
248
224
        <listitem>
249
225
          <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>.
 
226
            OpenPGP secret key file name.  The default name is
 
227
            <quote><filename>/conf/conf.d/mandos/seckey.txt</filename
 
228
            ></quote>.
254
229
          </para>
255
230
        </listitem>
256
231
      </varlistentry>
263
238
                      xpointer="priority"/>
264
239
        </listitem>
265
240
      </varlistentry>
266
 
 
 
241
      
267
242
      <varlistentry>
268
243
        <term><option>--dh-bits=<replaceable
269
244
        >BITS</replaceable></option></term>
309
284
          </para>
310
285
        </listitem>
311
286
      </varlistentry>
312
 
 
 
287
      
313
288
      <varlistentry>
314
289
        <term><option>--version</option></term>
315
290
        <term><option>-V</option></term>
321
296
      </varlistentry>
322
297
    </variablelist>
323
298
  </refsect1>
324
 
 
 
299
  
325
300
  <refsect1 id="overview">
326
301
    <title>OVERVIEW</title>
327
302
    <xi:include href="../overview.xml"/>
336
311
      <filename>/etc/crypttab</filename>, but it would then be
337
312
      impossible to enter a password for the encrypted root disk at
338
313
      the console, since this program does not read from the console
339
 
      at all.  This is why a separate plugin does that, which will be
340
 
      run in parallell to this one by the plugin runner.
 
314
      at all.  This is why a separate plugin runner (<citerefentry>
 
315
      <refentrytitle>plugin-runner</refentrytitle>
 
316
      <manvolnum>8mandos</manvolnum></citerefentry>) is used to run
 
317
      both this program and others in in parallel,
 
318
      <emphasis>one</emphasis> of which will prompt for passwords on
 
319
      the system console.
341
320
    </para>
342
321
  </refsect1>
343
322
  
350
329
      program will exit with a non-zero exit status only if a critical
351
330
      error occurs.  Otherwise, it will forever connect to new
352
331
      <application>Mandos</application> servers as they appear, trying
353
 
      to get a decryptable password.
 
332
      to get a decryptable password and print it.
354
333
    </para>
355
334
  </refsect1>
356
335
  
389
368
<!--     <para> -->
390
369
<!--     </para> -->
391
370
<!--   </refsect1> -->
392
 
 
 
371
  
393
372
  <refsect1 id="example">
394
373
    <title>EXAMPLE</title>
395
374
    <para>
409
388
    </informalexample>
410
389
    <informalexample>
411
390
      <para>
412
 
        Search for Mandos servers on another interface:
 
391
        Search for Mandos servers (and connect to them) using another
 
392
        interface:
413
393
      </para>
414
394
      <para>
415
395
        <!-- do not wrap this line -->
418
398
    </informalexample>
419
399
    <informalexample>
420
400
      <para>
421
 
        Run in debug mode, and use a custom key directory:
 
401
        Run in debug mode, and use a custom key:
422
402
      </para>
423
403
      <para>
424
 
        <!-- do not wrap this line -->
425
 
        <userinput>&COMMANDNAME; --debug --keydir keydir</userinput>
 
404
 
 
405
<!-- do not wrap this line -->
 
406
<userinput>&COMMANDNAME; --debug --pubkey keydir/pubkey.txt --seckey keydir/seckey.txt</userinput>
 
407
 
426
408
      </para>
427
409
    </informalexample>
428
410
    <informalexample>
429
411
      <para>
430
 
        Run in debug mode, with a custom key directory, and do not use
431
 
        Zeroconf to locate a server; connect directly to the IPv6
432
 
        address <quote><systemitem class="ipaddress"
 
412
        Run in debug mode, with a custom key, and do not use Zeroconf
 
413
        to locate a server; connect directly to the IPv6 address
 
414
        <quote><systemitem class="ipaddress"
433
415
        >2001:db8:f983:bd0b:30de:ae4a:71f2:f672</systemitem></quote>,
434
416
        port 4711, using interface eth2:
435
417
      </para>
436
418
      <para>
437
419
 
438
420
<!-- do not wrap this line -->
439
 
<userinput>&COMMANDNAME; --debug --keydir keydir --connect 2001:db8:f983:bd0b:30de:ae4a:71f2:f672:4711 --interface eth2</userinput>
 
421
<userinput>&COMMANDNAME; --debug --pubkey keydir/pubkey.txt --seckey keydir/seckey.txt --connect 2001:db8:f983:bd0b:30de:ae4a:71f2:f672:4711 --interface eth2</userinput>
440
422
 
441
423
      </para>
442
424
    </informalexample>
443
425
  </refsect1>
444
 
 
 
426
  
445
427
  <refsect1 id="security">
446
428
    <title>SECURITY</title>
447
429
    <para>
448
430
      This program is set-uid to root, but will switch back to the
449
 
      original user and group after bringing up the network interface.
 
431
      original (and presumably non-privileged) user and group after
 
432
      bringing up the network interface.
450
433
    </para>
451
434
    <para>
452
435
      To use this program for its intended purpose (see <xref
474
457
      >mandos</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
475
458
    </para>
476
459
    <para>
477
 
      <emphasis>Note</emphasis>: This makes it impossible to have
478
 
      <application >Mandos</application> clients which dual-boot to
479
 
      another operating system which does <emphasis>not</emphasis> run
480
 
      a <application>Mandos</application> client.
 
460
      It will also help if the checker program on the server is
 
461
      configured to request something from the client which can not be
 
462
      spoofed by someone else on the network, unlike unencrypted
 
463
      <acronym>ICMP</acronym> echo (<quote>ping</quote>) replies.
 
464
    </para>
 
465
    <para>
 
466
      <emphasis>Note</emphasis>: This makes it completely insecure to
 
467
      have <application >Mandos</application> clients which dual-boot
 
468
      to another operating system which is <emphasis>not</emphasis>
 
469
      trusted to keep the initial <acronym>RAM</acronym> disk image
 
470
      confidential.
481
471
    </para>
482
472
  </refsect1>
483
 
 
 
473
  
484
474
  <refsect1 id="see_also">
485
475
    <title>SEE ALSO</title>
486
476
    <para>
 
477
      <citerefentry><refentrytitle>cryptsetup</refentrytitle>
 
478
      <manvolnum>8</manvolnum></citerefentry>,
 
479
      <citerefentry><refentrytitle>crypttab</refentrytitle>
 
480
      <manvolnum>5</manvolnum></citerefentry>,
487
481
      <citerefentry><refentrytitle>mandos</refentrytitle>
488
482
      <manvolnum>8</manvolnum></citerefentry>,
489
483
      <citerefentry><refentrytitle>password-prompt</refentrytitle>
491
485
      <citerefentry><refentrytitle>plugin-runner</refentrytitle>
492
486
      <manvolnum>8mandos</manvolnum></citerefentry>
493
487
    </para>
494
 
    <itemizedlist>
495
 
      <listitem><para>
496
 
        <ulink url="http://www.zeroconf.org/">Zeroconf</ulink>
497
 
      </para></listitem>
498
 
      
499
 
      <listitem><para>
500
 
        <ulink url="http://www.avahi.org/">Avahi</ulink>
501
 
      </para></listitem>
502
 
      
503
 
      <listitem><para>
504
 
        <ulink
505
 
            url="http://www.gnu.org/software/gnutls/">GnuTLS</ulink>
506
 
      </para></listitem>
507
 
      
508
 
      <listitem><para>
509
 
        <ulink
510
 
        url="http://www.gnupg.org/related_software/gpgme/"
511
 
        >GPGME</ulink>
512
 
      </para></listitem>
513
 
      
514
 
      <listitem><para>
515
 
        <citation>RFC 4880: <citetitle>OpenPGP Message
516
 
        Format</citetitle></citation>
517
 
      </para></listitem>
518
 
      
519
 
      <listitem><para>
520
 
        <citation>RFC 5081: <citetitle>Using OpenPGP Keys for
521
 
        Transport Layer Security</citetitle></citation>
522
 
      </para></listitem>
523
 
      
524
 
      <listitem><para>
525
 
        <citation>RFC 4291: <citetitle>IP Version 6 Addressing
526
 
        Architecture</citetitle>, section 2.5.6, Link-Local IPv6
527
 
        Unicast Addresses</citation>
528
 
      </para></listitem>
529
 
    </itemizedlist>
 
488
    <variablelist>
 
489
      <varlistentry>
 
490
        <term>
 
491
          <ulink url="http://www.zeroconf.org/">Zeroconf</ulink>
 
492
        </term>
 
493
        <listitem>
 
494
          <para>
 
495
            Zeroconf is the network protocol standard used for finding
 
496
            Mandos servers on the local network.
 
497
          </para>
 
498
        </listitem>
 
499
      </varlistentry>
 
500
      <varlistentry>
 
501
        <term>
 
502
          <ulink url="http://www.avahi.org/">Avahi</ulink>
 
503
        </term>
 
504
      <listitem>
 
505
        <para>
 
506
          Avahi is the library this program calls to find Zeroconf
 
507
          services.
 
508
        </para>
 
509
      </listitem>
 
510
      </varlistentry>
 
511
      <varlistentry>
 
512
        <term>
 
513
          <ulink url="http://www.gnu.org/software/gnutls/"
 
514
          >GnuTLS</ulink>
 
515
        </term>
 
516
      <listitem>
 
517
        <para>
 
518
          GnuTLS is the library this client uses to implement TLS for
 
519
          communicating securely with the server, and at the same time
 
520
          send the public OpenPGP key to the server.
 
521
        </para>
 
522
      </listitem>
 
523
      </varlistentry>
 
524
      <varlistentry>
 
525
        <term>
 
526
          <ulink url="http://www.gnupg.org/related_software/gpgme/"
 
527
                 >GPGME</ulink>
 
528
        </term>
 
529
        <listitem>
 
530
          <para>
 
531
            GPGME is the library used to decrypt the OpenPGP data sent
 
532
            by the server.
 
533
          </para>
 
534
        </listitem>
 
535
      </varlistentry>
 
536
      <varlistentry>
 
537
        <term>
 
538
          RFC 4291: <citetitle>IP Version 6 Addressing
 
539
          Architecture</citetitle>
 
540
        </term>
 
541
        <listitem>
 
542
          <variablelist>
 
543
            <varlistentry>
 
544
              <term>Section 2.2: <citetitle>Text Representation of
 
545
              Addresses</citetitle></term>
 
546
              <listitem><para/></listitem>
 
547
            </varlistentry>
 
548
            <varlistentry>
 
549
              <term>Section 2.5.5.2: <citetitle>IPv4-Mapped IPv6
 
550
              Address</citetitle></term>
 
551
              <listitem><para/></listitem>
 
552
            </varlistentry>
 
553
            <varlistentry>
 
554
            <term>Section 2.5.6, <citetitle>Link-Local IPv6 Unicast
 
555
            Addresses</citetitle></term>
 
556
            <listitem>
 
557
              <para>
 
558
                This client uses IPv6 link-local addresses, which are
 
559
                immediately usable since a link-local addresses is
 
560
                automatically assigned to a network interfaces when it
 
561
                is brought up.
 
562
              </para>
 
563
            </listitem>
 
564
            </varlistentry>
 
565
          </variablelist>
 
566
        </listitem>
 
567
      </varlistentry>
 
568
      <varlistentry>
 
569
        <term>
 
570
          RFC 4346: <citetitle>The Transport Layer Security (TLS)
 
571
          Protocol Version 1.1</citetitle>
 
572
        </term>
 
573
      <listitem>
 
574
        <para>
 
575
          TLS 1.1 is the protocol implemented by GnuTLS.
 
576
        </para>
 
577
      </listitem>
 
578
      </varlistentry>
 
579
      <varlistentry>
 
580
        <term>
 
581
          RFC 4880: <citetitle>OpenPGP Message Format</citetitle>
 
582
        </term>
 
583
      <listitem>
 
584
        <para>
 
585
          The data received from the server is binary encrypted
 
586
          OpenPGP data.
 
587
        </para>
 
588
      </listitem>
 
589
      </varlistentry>
 
590
      <varlistentry>
 
591
        <term>
 
592
          RFC 5081: <citetitle>Using OpenPGP Keys for Transport Layer
 
593
          Security</citetitle>
 
594
        </term>
 
595
      <listitem>
 
596
        <para>
 
597
          This is implemented by GnuTLS and used by this program so
 
598
          that OpenPGP keys can be used.
 
599
        </para>
 
600
      </listitem>
 
601
      </varlistentry>
 
602
    </variablelist>
530
603
  </refsect1>
531
 
 
532
604
</refentry>
 
605
 
533
606
<!-- Local Variables: -->
534
607
<!-- time-stamp-start: "<!ENTITY TIMESTAMP [\"']" -->
535
608
<!-- time-stamp-end: "[\"']>" -->