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 "2009-02-09">
6
<!ENTITY % common SYSTEM "../common.ent">
9
10
<refentry xmlns:xi="http://www.w3.org/2001/XInclude">
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>
34
36
<holder>Teddy Hogeborn</holder>
35
37
<holder>Björn Påhlsson</holder>
37
39
<xi:include href="../legalnotice.xml"/>
41
43
<refentrytitle>&COMMANDNAME;</refentrytitle>
42
44
<manvolnum>8mandos</manvolnum>
46
48
<refname><command>&COMMANDNAME;</command></refname>
50
Client for <application>Mandos</application>
54
56
<command>&COMMANDNAME;</command>
56
58
<arg choice="plain"><option>--connect
57
<replaceable>IPADDR</replaceable><literal>:</literal
59
<replaceable>ADDRESS</replaceable><literal>:</literal
58
60
><replaceable>PORT</replaceable></option></arg>
59
61
<arg choice="plain"><option>-c
60
<replaceable>IPADDR</replaceable><literal>:</literal
62
<replaceable>ADDRESS</replaceable><literal>:</literal
61
63
><replaceable>PORT</replaceable></option></arg>
65
<arg choice="plain"><option>--keydir
66
<replaceable>DIRECTORY</replaceable></option></arg>
67
<arg choice="plain"><option>-d
68
<replaceable>DIRECTORY</replaceable></option></arg>
72
67
<arg choice="plain"><option>--interface
73
68
<replaceable>NAME</replaceable></option></arg>
74
69
<arg choice="plain"><option>-i
122
121
</refsynopsisdiv>
124
123
<refsect1 id="description">
125
124
<title>DESCRIPTION</title>
127
126
<command>&COMMANDNAME;</command> is a client program that
128
127
communicates with <citerefentry><refentrytitle
129
128
>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.
129
to get a password. In slightly more detail, this client program
130
brings up a network interface, uses the interface’s IPv6
131
link-local address to get network connectivity, uses Zeroconf to
132
find servers on the local network, and communicates with servers
133
using TLS with an OpenPGP key to ensure authenticity and
134
confidentiality. This client program keeps running, trying all
135
servers on the network, until it receives a satisfactory reply
136
or a TERM signal is received. If no servers are found, or after
137
all servers have been tried, it waits indefinitely for new
137
141
This program is not meant to be run directly; it is really meant
194
<term><option>--keydir=<replaceable
195
>DIRECTORY</replaceable></option></term>
197
<replaceable>DIRECTORY</replaceable></option></term>
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).
210
<term><option>--interface=
211
<replaceable>NAME</replaceable></option></term>
198
<term><option>--interface=<replaceable
199
>NAME</replaceable></option></term>
213
201
<replaceable>NAME</replaceable></option></term>
216
204
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>.
205
Mandos servers to connect to. The default is the empty
206
string, which will automatically choose an appropriate
221
210
If the <option>--connect</option> option is used, this
222
211
specifies the interface to use to connect to the address
215
Note that since this program will normally run in the
216
initial RAM disk environment, the interface must be an
217
interface which exists at that stage. Thus, the interface
218
can not be a pseudo-interface such as <quote>br0</quote>
219
or <quote>tun0</quote>; such interfaces will not exist
220
until much later in the boot process, and can not be used
224
<replaceable>NAME</replaceable> can be the string
225
<quote><literal>none</literal></quote>; this will not use
226
any specific interface, and will not bring up an interface
227
on startup. This is not recommended, and only meant for
232
237
<replaceable>FILE</replaceable></option></term>
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>.
240
OpenPGP public key file name. The default name is
241
<quote><filename>/conf/conf.d/mandos/pubkey.txt</filename
244
248
<term><option>--seckey=<replaceable
245
249
>FILE</replaceable></option></term>
247
251
<replaceable>FILE</replaceable></option></term>
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>.
254
OpenPGP secret key file name. The default name is
255
<quote><filename>/conf/conf.d/mandos/seckey.txt</filename
282
<term><option>--delay=<replaceable
283
>SECONDS</replaceable></option></term>
286
After bringing the network interface up, the program waits
287
for the interface to arrive in a <quote>running</quote>
288
state before proceeding. During this time, the kernel log
289
level will be lowered to reduce clutter on the system
290
console, alleviating any other plugins which might be
291
using the system console. This option sets the upper
292
limit of seconds to wait. The default is 2.5 seconds.
279
298
<term><option>--debug</option></term>
336
355
<filename>/etc/crypttab</filename>, but it would then be
337
356
impossible to enter a password for the encrypted root disk at
338
357
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.
358
at all. This is why a separate plugin runner (<citerefentry>
359
<refentrytitle>plugin-runner</refentrytitle>
360
<manvolnum>8mandos</manvolnum></citerefentry>) is used to run
361
both this program and others in in parallel,
362
<emphasis>one</emphasis> of which will prompt for passwords on
352
373
program will exit with a non-zero exit status only if a critical
353
374
error occurs. Otherwise, it will forever connect to new
354
375
<application>Mandos</application> servers as they appear, trying
355
to get a decryptable password.
376
to get a decryptable password and print it.
420
442
</informalexample>
421
443
<informalexample>
423
Run in debug mode, and use a custom key directory:
445
Run in debug mode, and use a custom key:
426
<!-- do not wrap this line -->
427
<userinput>&COMMANDNAME; --debug --keydir keydir</userinput>
449
<!-- do not wrap this line -->
450
<userinput>&COMMANDNAME; --debug --pubkey keydir/pubkey.txt --seckey keydir/seckey.txt</userinput>
429
453
</informalexample>
430
454
<informalexample>
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
456
Run in debug mode, with a custom key, and do not use Zeroconf
457
to locate a server; connect directly to the IPv6 link-local
434
458
address <quote><systemitem class="ipaddress"
435
>2001:db8:f983:bd0b:30de:ae4a:71f2:f672</systemitem></quote>,
436
port 4711, using interface eth2:
459
>fe80::aede:48ff:fe71:f6f2</systemitem></quote>, port 4711,
460
using interface eth2:
440
464
<!-- do not wrap this line -->
441
<userinput>&COMMANDNAME; --debug --keydir keydir --connect 2001:db8:f983:bd0b:30de:ae4a:71f2:f672:4711 --interface eth2</userinput>
465
<userinput>&COMMANDNAME; --debug --pubkey keydir/pubkey.txt --seckey keydir/seckey.txt --connect fe80::aede:48ff:fe71:f6f2:4711 --interface eth2</userinput>
444
468
</informalexample>
447
471
<refsect1 id="security">
448
472
<title>SECURITY</title>
469
493
The only remaining weak point is that someone with physical
470
494
access to the client hard drive might turn off the client
471
495
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
496
and communicate with the server. To safeguard against this, the
497
server is supposed to notice the client disappearing and stop
498
giving out the encrypted data. Therefore, it is important to
499
set the timeout and checker interval values tightly on the
500
server. See <citerefentry><refentrytitle
477
501
>mandos</refentrytitle><manvolnum>8</manvolnum></citerefentry>.