/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

First version of a somewhat complete D-Bus server interface.  Also
change user/group name to "_mandos".

* debian/mandos.postinst: Rename old "mandos" user and group to
                          "_mandos"; create "_mandos" user and group
                          if none exist.
* debian/mandos-client.postinst: - '' -

* initramfs-tools-hook: Try "_mandos" before "mandos" as user and
                        group name.

* mandos (_datetime_to_dbus_struct): New; was previously local.
  (Client.started): Renamed to "last_started".  All users changed.
  (Client.started): New; boolean.
  (Client.dbus_object_path): New.
  (Client.check_command): Renamed to "checker_command".  All users
                          changed.
  (Client.__init__): Set and use "self.dbus_object_path".  Set
                     "self.started".
  (Client.start): Update "self.started".  Emit "self.PropertyChanged"
                  signals for both "started" and "last_started".
  (Client.stop): Update "self.started".  Emit "self.PropertyChanged"
                 signal for "started".
  (Client.checker_callback): Take additional "command" argument.  All
                             callers changed. Emit
                             "self.PropertyChanged" signal.
  (Client.bump_timeout): Emit "self.PropertyChanged" signal for
                         "last_checked_ok".
  (Client.start_checker): Emit "self.PropertyChanged" signal for
                          "checker_running".
  (Client.stop_checker): Emit "self.PropertyChanged" signal for
                         "checker_running".
  (Client.still_valid): Bug fix: use "getattr(self, started, False)"
                        instead of "self.started" in case this client
                        object is so new that the "started" attribute
                        has not been created yet.
  (Client.IntervalChanged, Client.CheckerIsRunning, Client.GetChecker,
  Client.GetCreated, Client.GetFingerprint, Client.GetHost,
  Client.GetInterval, Client.GetName, Client.GetStarted,
  Client.GetTimeout, Client.StateChanged, Client.TimeoutChanged):
  Removed; all callers changed.
  (Client.CheckerCompleted): Add "condition" and "command" arguments.
                             All callers changed.
  (Client.GetAllProperties, Client.PropertyChanged): New.
  (Client.StillValid): Renamed to "IsStillValid".
  (Client.StartChecker): Changed to its own function to avoid the
                         return value from "Client.start_checker()".
  (Client.Stop): Changed to its own function to avoid the return value
                 from "Client.stop()".
  (main): Try "_mandos" before "mandos" as user and group name.
          Removed inner function "remove_from_clients".  New inner
          class "MandosServer".

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-31">
 
5
<!ENTITY TIMESTAMP "2008-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
 
  <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>
34
35
      <holder>Teddy Hogeborn</holder>
35
36
      <holder>Björn Påhlsson</holder>
36
37
    </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>
 
38
    <xi:include href="legalnotice.xml"/>
60
39
  </refentryinfo>
61
 
 
 
40
  
62
41
  <refmeta>
63
42
    <refentrytitle>&COMMANDNAME;</refentrytitle>
64
43
    <manvolnum>8</manvolnum>
70
49
      Gives encrypted passwords to authenticated Mandos clients
71
50
    </refpurpose>
72
51
  </refnamediv>
73
 
 
 
52
  
74
53
  <refsynopsisdiv>
75
54
    <cmdsynopsis>
76
55
      <command>&COMMANDNAME;</command>
122
101
      <arg choice="plain"><option>--check</option></arg>
123
102
    </cmdsynopsis>
124
103
  </refsynopsisdiv>
125
 
 
 
104
  
126
105
  <refsect1 id="description">
127
106
    <title>DESCRIPTION</title>
128
107
    <para>
137
116
      Any authenticated client is then given the stored pre-encrypted
138
117
      password for that specific client.
139
118
    </para>
140
 
 
141
119
  </refsect1>
142
120
  
143
121
  <refsect1 id="purpose">
144
122
    <title>PURPOSE</title>
145
 
 
146
123
    <para>
147
124
      The purpose of this is to enable <emphasis>remote and unattended
148
125
      rebooting</emphasis> of client host computer with an
149
126
      <emphasis>encrypted root file system</emphasis>.  See <xref
150
127
      linkend="overview"/> for details.
151
128
    </para>
152
 
    
153
129
  </refsect1>
154
130
  
155
131
  <refsect1 id="options">
156
132
    <title>OPTIONS</title>
157
 
    
158
133
    <variablelist>
159
134
      <varlistentry>
160
135
        <term><option>--help</option></term>
212
187
          <xi:include href="mandos-options.xml" xpointer="debug"/>
213
188
        </listitem>
214
189
      </varlistentry>
215
 
 
 
190
      
216
191
      <varlistentry>
217
192
        <term><option>--priority <replaceable>
218
193
        PRIORITY</replaceable></option></term>
220
195
          <xi:include href="mandos-options.xml" xpointer="priority"/>
221
196
        </listitem>
222
197
      </varlistentry>
223
 
 
 
198
      
224
199
      <varlistentry>
225
200
        <term><option>--servicename
226
201
        <replaceable>NAME</replaceable></option></term>
229
204
                      xpointer="servicename"/>
230
205
        </listitem>
231
206
      </varlistentry>
232
 
 
 
207
      
233
208
      <varlistentry>
234
209
        <term><option>--configdir
235
210
        <replaceable>DIRECTORY</replaceable></option></term>
244
219
          </para>
245
220
        </listitem>
246
221
      </varlistentry>
247
 
 
 
222
      
248
223
      <varlistentry>
249
224
        <term><option>--version</option></term>
250
225
        <listitem>
255
230
      </varlistentry>
256
231
    </variablelist>
257
232
  </refsect1>
258
 
 
 
233
  
259
234
  <refsect1 id="overview">
260
235
    <title>OVERVIEW</title>
261
236
    <xi:include href="overview.xml"/>
262
237
    <para>
263
238
      This program is the server part.  It is a normal server program
264
239
      and will run in a normal system environment, not in an initial
265
 
      RAM disk environment.
 
240
      <acronym>RAM</acronym> disk environment.
266
241
    </para>
267
242
  </refsect1>
268
 
 
 
243
  
269
244
  <refsect1 id="protocol">
270
245
    <title>NETWORK PROTOCOL</title>
271
246
    <para>
323
298
      </row>
324
299
    </tbody></tgroup></table>
325
300
  </refsect1>
326
 
 
 
301
  
327
302
  <refsect1 id="checking">
328
303
    <title>CHECKING</title>
329
304
    <para>
337
312
      <manvolnum>5</manvolnum></citerefentry>.
338
313
    </para>
339
314
  </refsect1>
340
 
 
 
315
  
341
316
  <refsect1 id="logging">
342
317
    <title>LOGGING</title>
343
318
    <para>
347
322
      and also show them on the console.
348
323
    </para>
349
324
  </refsect1>
350
 
 
 
325
  
351
326
  <refsect1 id="exit_status">
352
327
    <title>EXIT STATUS</title>
353
328
    <para>
355
330
      critical error is encountered.
356
331
    </para>
357
332
  </refsect1>
358
 
 
 
333
  
359
334
  <refsect1 id="environment">
360
335
    <title>ENVIRONMENT</title>
361
336
    <variablelist>
375
350
      </varlistentry>
376
351
    </variablelist>
377
352
  </refsect1>
378
 
 
379
 
  <refsect1 id="file">
 
353
  
 
354
  <refsect1 id="files">
380
355
    <title>FILES</title>
381
356
    <para>
382
357
      Use the <option>--configdir</option> option to change where
405
380
        </listitem>
406
381
      </varlistentry>
407
382
      <varlistentry>
408
 
        <term><filename>/var/run/mandos/mandos.pid</filename></term>
 
383
        <term><filename>/var/run/mandos.pid</filename></term>
409
384
        <listitem>
410
385
          <para>
411
386
            The file containing the process id of
446
421
      Currently, if a client is declared <quote>invalid</quote> due to
447
422
      having timed out, the server does not record this fact onto
448
423
      permanent storage.  This has some security implications, see
449
 
      <xref linkend="CLIENTS"/>.
 
424
      <xref linkend="clients"/>.
450
425
    </para>
451
426
    <para>
452
427
      There is currently no way of querying the server of the current
460
435
      Debug mode is conflated with running in the foreground.
461
436
    </para>
462
437
    <para>
463
 
      The console log messages does not show a timestamp.
 
438
      The console log messages does not show a time stamp.
 
439
    </para>
 
440
    <para>
 
441
      This server does not check the expire time of clients’ OpenPGP
 
442
      keys.
464
443
    </para>
465
444
  </refsect1>
466
445
  
501
480
      </para>
502
481
    </informalexample>
503
482
  </refsect1>
504
 
 
 
483
  
505
484
  <refsect1 id="security">
506
485
    <title>SECURITY</title>
507
 
    <refsect2 id="SERVER">
 
486
    <refsect2 id="server">
508
487
      <title>SERVER</title>
509
488
      <para>
510
489
        Running this <command>&COMMANDNAME;</command> server program
511
490
        should not in itself present any security risk to the host
512
 
        computer running it.  The program does not need any special
513
 
        privileges to run, and is designed to run as a non-root user.
 
491
        computer running it.  The program switches to a non-root user
 
492
        soon after startup.
514
493
      </para>
515
494
    </refsect2>
516
 
    <refsect2 id="CLIENTS">
 
495
    <refsect2 id="clients">
517
496
      <title>CLIENTS</title>
518
497
      <para>
519
498
        The server only gives out its stored data to clients which
526
505
        <citerefentry><refentrytitle>mandos-clients.conf</refentrytitle>
527
506
        <manvolnum>5</manvolnum></citerefentry>)
528
507
        <emphasis>must</emphasis> be made non-readable by anyone
529
 
        except the user running the server.
 
508
        except the user starting the server (usually root).
530
509
      </para>
531
510
      <para>
532
511
        As detailed in <xref linkend="checking"/>, the status of all
543
522
        restarting servers if it is suspected that a client has, in
544
523
        fact, been compromised by parties who may now be running a
545
524
        fake Mandos client with the keys from the non-encrypted
546
 
        initial RAM image of the client host.  What should be done in
547
 
        that case (if restarting the server program really is
548
 
        necessary) is to stop the server program, edit the
 
525
        initial <acronym>RAM</acronym> image of the client host.  What
 
526
        should be done in that case (if restarting the server program
 
527
        really is necessary) is to stop the server program, edit the
549
528
        configuration file to omit any suspect clients, and restart
550
529
        the server program.
551
530
      </para>
552
531
      <para>
553
532
        For more details on client-side security, see
554
 
        <citerefentry><refentrytitle>password-request</refentrytitle>
 
533
        <citerefentry><refentrytitle>mandos-client</refentrytitle>
555
534
        <manvolnum>8mandos</manvolnum></citerefentry>.
556
535
      </para>
557
536
    </refsect2>
558
537
  </refsect1>
559
 
 
 
538
  
560
539
  <refsect1 id="see_also">
561
540
    <title>SEE ALSO</title>
562
541
    <para>
565
544
        <manvolnum>5</manvolnum></citerefentry>, <citerefentry>
566
545
        <refentrytitle>mandos.conf</refentrytitle>
567
546
        <manvolnum>5</manvolnum></citerefentry>, <citerefentry>
568
 
        <refentrytitle>password-request</refentrytitle>
 
547
        <refentrytitle>mandos-client</refentrytitle>
569
548
        <manvolnum>8mandos</manvolnum></citerefentry>, <citerefentry>
570
549
        <refentrytitle>sh</refentrytitle><manvolnum>1</manvolnum>
571
550
      </citerefentry>