/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 TODO

added some comments about security

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
-*- org -*-
2
2
 
3
 
* Use _attribute_((nonnull)) wherever possible.
4
 
 
5
 
* [[http://www.undeadly.org/cgi?action=article&sid=20110530221728][OpenBSD]]
6
 
 
7
 
* mandos-applet
8
 
 
9
 
* mandos-client
10
 
** TODO [#B] Use capabilities instead of seteuid().
11
 
** TODO [#B] Use struct sockaddr_storage instead of a union
12
 
** TODO [#B] Use getaddrinfo(hints=AI_NUMERICHOST) instead of inet_pton()
13
 
** TODO [#B] Use getnameinfo(serv=NULL, NI_NUMERICHOST) instead of inet_ntop()
14
 
** TODO [#B] Prefer /run/tmp over /tmp, if it exists
15
 
 
16
 
* splashy
17
 
** TODO [#B] use scandir(3) instead of readdir(3)
18
 
 
19
 
* usplash (Deprecated)
20
 
** TODO [#A] Make it work again
21
 
** TODO [#B] use scandir(3) instead of readdir(3)
22
 
** TODO Use [[info:libc:Argz%20Functions][argz_extract]]
23
 
 
24
 
* askpass-fifo
25
 
** TODO [#B] Drop privileges after opening FIFO.
 
3
* README file
 
4
  Note that if someone takes all machines, then all systems will be encrypted and all they have is some 
 
5
  unusable key material.
 
6
 
 
7
* plugin-runner
 
8
 
 
9
* password-request
 
10
** [#B] Temporarily lower kernel log level
 
11
   for less printouts during sucessfull boot.
 
12
** IPv4 support
 
13
** use strsep instead of strtok?
 
14
** Do not depend on GnuPG key rings on disk
 
15
   This would mean creating new GnuPG key rings with GPGME by
 
16
   importing the key files from scratch on every program start.
 
17
** Keydir move: /etc/mandos -> /etc/keys/mandos
 
18
   Must create in preinst if not pre-depending on cryptsetup
26
19
 
27
20
* password-prompt
28
 
** TODO [#B] lock stdin (with flock()?)
29
 
 
30
 
* plymouth
31
 
 
32
 
* TODO [#B] passdev
33
 
 
34
 
* plugin-runner
35
 
** TODO handle printing for errors for plugins
36
 
*** Hook up stderr of plugins, buffer them, and prepend mandos pluig [plugin name]
37
 
** TODO [#B] use scandir(3) instead of readdir(3)
38
 
** TODO [#C] use same file name rules as run-parts(8)
39
 
** kernel command line option for debug info
40
 
** TODO [#B] Use openat()
41
21
 
42
22
* mandos (server)
43
 
** TODO [#B] Log level                                                    :BUGS:
44
 
** TODO [#A] Move approval to Client from ClientDBus
45
 
  
46
 
*** TODO /etc/mandos/clients.d/*.conf
47
 
    Watch this directory and add/remove/update clients?
48
 
** TODO [#C] config for TXT record
49
 
** TODO Log level option
50
 
   syslogger.setLevel(logging.WARNING)
51
 
   + SetLogLevel D-Bus call
52
 
** TODO Implement --foreground                                            :BUGS:
53
 
   [[info:standards:Option%20Table][Table of Long Options]]
54
 
** TODO Implement --socket
55
 
   [[info:standards:Option%20Table][Table of Long Options]]
56
 
** TODO [#C] DBusServiceObjectUsingSuper
57
 
** TODO [#B] Global enable/disable flag
58
 
** TODO [#B] By-client countdown on secrets given
59
 
** TODO [#B] Support RFC 3339 time duration syntax
60
 
** More D-Bus methods
61
 
*** NeedsPassword(50) - Timeout, default disapprove
62
 
    + SetPass(u"gazonk", True) -> Approval, persistent
63
 
    + Approve(False) -> Close client connection immediately
64
 
** TODO [#C] python-parsedatetime
65
 
** TODO [#C] systemd/launchd
66
 
   http://0pointer.de/blog/projects/systemd.html
67
 
   http://wiki.debian.org/systemd
68
 
** TODO Separate logging logic to own object
69
 
** TODO [#A] Limit approval_delay to max gnutls/tls timeout value
70
 
** TODO [#B] break the wait on approval_delay if connection dies
71
 
** TODO Generate Client.runtime_expansions from client options + extra
72
 
** TODO Allow %%(checker)s as a runtime expansion
73
 
** TODO Use python-tlslite?
74
 
 
75
 
* mandos.xml
76
 
** Add mandos contact info in manual pages
77
 
 
78
 
* mandos-ctl
79
 
*** Handle "no D-Bus server" and/or "no Mandos server found" better
80
 
*** [#B] --dump option
81
 
** TODO Support RFC 3339 time duration syntax
82
 
** TODO Send milliseconds if bare integer is passed as time duration
83
 
 
84
 
* TODO mandos-dispatch
85
 
  Listens for specified D-Bus signals and spawns shell commands with
86
 
  arguments.
87
 
 
88
 
* mandos-monitor
89
 
** TODO help should be toggleable
90
 
** Urwid client data displayer
91
 
   Better view of client data in the listing
92
 
*** Properties popup
93
 
** Nicer crashes. Stack traces Messes up shell.
94
 
*** Print a nice "We are sorry" message, save stack trace to log.
95
 
** Show timeout countdown for approval
96
 
 
97
 
* mandos-keygen
98
 
** TODO "--secfile" option
99
 
   Using the "secfile" option instead of "secret"
100
 
** TODO [#B] "--test" option
101
 
   For testing decryption before rebooting.
102
 
 
103
 
* Makefile
104
 
** TODO [#C] Implement DEB_BUILD_OPTIONS
105
 
   http://www.debian.org/doc/debian-policy/ch-source.html#s-debianrules-options
106
 
 
107
 
* Package
 
23
** [#A] /etc/init.d/mandos-server               :teddy:
 
24
** [#B] Log level                               :bugs:
 
25
** /etc/mandos/clients.d/*.conf
 
26
   Watch this directory and add/remove/update clients?
 
27
** config for TXT record
 
28
** [#B] Run-time communication with server      :bugs:
 
29
   Probably using D-Bus
 
30
   See also [[*Mandos-tools]]
 
31
** Implement --foreground                       :bugs:
 
32
   [[info:standards:Option%20Table][Table of Long Options]]
 
33
** Implement --socket
 
34
   [[info:standards:Option%20Table][Table of Long Options]]
 
35
** Date+time on console log messages            :bugs:
 
36
   Is this the default?
 
37
** delete hook when clients fall out by timeout
 
38
 
 
39
* Mandos-tools/utilities
 
40
  All of this probably using D-Bus
 
41
** List clients
 
42
** Disable client
 
43
** Enable client
 
44
** Reboot timer
 
45
 
 
46
* Man pages
 
47
** Use xinclude for common sections
 
48
   Like authors, etc.
 
49
 
 
50
 
 
51
* Installer
 
52
** Client-side
 
53
*** Update initrd.img after installation
 
54
    This seems to use some kind of "trigger" system
 
55
    [[file:/usr/share/doc/dpkg/triggers.txt.gz]]
 
56
    dpkg-trigger(1), deb-triggers(5)
 
57
*** Keydir move: /etc/mandos -> /etc/keys/mandos
 
58
    Must create in preinst if not pre-depending on cryptsetup
 
59
*** mandos-keygen
 
60
**** "--passfile" option
 
61
     Using the "secfile" option instead of "secret"
 
62
**** [#A] "--test" option
 
63
     For testing decryption before rebooting.
 
64
** Server-side
 
65
*** [#A] Create mandos user and group for server
 
66
*** [#A] Create /var/run/mandos directory with perm and ownership
 
67
 
 
68
* [#A] Package
108
69
** /usr/share/initramfs-tools/hooks/mandos
109
 
*** TODO [#C] use same file name rules as run-parts(8)
110
 
*** TODO [#C] Do not install in initrd.img if configured not to.
111
 
    Use "/etc/initramfs-tools/hooksconf.d/mandos"?
112
 
** TODO [#C] /etc/bash_completion.d/mandos
 
70
*** Do not install in initrd.img if configured not to.
 
71
    Use "/etc/initramfs-tools/conf.d/mandos"?  Definitely a debconf
 
72
    question.
 
73
** /etc/bash_completion.d/mandos
113
74
   From XML sources directly?
114
 
 
115
 
* Side Stuff
116
 
** TODO Locate which package moves the other bin/sh when busybox is deactivated
117
 
** TODO contact owner of package, and ask them to have that shell static in position regardless of busybox
 
75
** unperish
 
76
** bzr-builddeb
 
77
 
 
78
* INSTALL file
 
79
 
 
80
* Web site
 
81
 
 
82
* Mailing list
 
83
 
 
84
* Announce project on news
 
85
  [[news:comp.os.linux.announce]]
118
86
 
119
87
 
120
88
#+STARTUP: showall