/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 debian/mandos-client.README.Debian

  • Committer: teddy at recompile
  • Date: 2020-04-05 21:30:59 UTC
  • mto: This revision was merged to the branch mainline in revision 398.
  • Revision ID: teddy@recompile.se-20200405213059-fb2a61ckqynrmatk
Fix file descriptor leak in mandos-client

When the local network has Mandos servers announcing themselves using
real, globally reachable, IPv6 addresses (i.e. not link-local
addresses), but there is no router on the local network providing IPv6
RA (Router Advertisement) packets, the client cannot reach the server
by normal means, since the client only has a link-local IPv6 address,
and has no usable route to reach the server's global IPv6 address.
(This is not a common situation, and usually only happens when the
router itself reboots and runs a Mandos client, since it cannot then
give RA packets to itself.)  The client code has a solution for
this, which consists of adding a temporary local route to reach the
address of the server during communication, and removing this
temporary route afterwards.

This solution with a temporary route works, but has a file descriptor
leak; it leaks one file descriptor for each addition and for each
removal of a route.  If one server requiring an added route is present
on the network, but no servers gives a password, making the client
retry after the default ten seconds, and we furthermore assume a
default 1024 open files limit, the client runs out of file descriptors
after about 90 minutes, after which time the client process will be
useless and fail to retrieve any passwords, necessitating manual
password entry via the keyboard.

Fix this by eliminating the file descriptor leak in the client.

* plugins.d/mandos-client.c (add_delete_local_route): Do
  close(devnull) also in parent process, also if fork() fails, and on
  any failure in child process.

Show diffs side-by-side

added added

removed removed

Lines of Context:
75
75
  
76
76
  Any plugins found in "/etc/mandos/plugins.d" will override and add
77
77
  to the normal Mandos plugins.  When adding or changing plugins, do
78
 
  not forget to update the initial RAM disk image:
 
78
  not forget to update the initital RAM disk image:
79
79
  
80
80
        (For initramfs-tools:)
81
81
        update-initramfs -k all -u
100
100
  "mandos=connect:<IP_ADDRESS>:<PORT_NUMBER>" on the kernel command
101
101
  line.
102
102
  
103
 
  For very advanced users, it is possible to specify "mandos=connect"
104
 
  on the kernel command line to make the system only set up the
105
 
  network (using the data in the "ip=" option) and not pass any extra
106
 
  "--connect" options to mandos-client at boot.  For this to work,
107
 
  "--options-for=mandos-client:--connect=<ADDRESS>:<PORT>" needs to be
108
 
  manually added to the file "/etc/mandos/plugin-runner.conf" or, if
109
 
  dracut is used with systemd, the "--connect=<ADDRESS>:<PORT>"
110
 
  options needs to be added to an environment variable in an override
111
 
  file for the "ask-password-mandos" service, as detailed in the file
112
 
  "/usr/lib/dracut/modules.d/90mandos/ask-password-mandos.service".
 
103
  For very advanced users, it is possible to specify simply
 
104
  "mandos=connect" on the kernel command line to make the system only
 
105
  set up the network (using the data in the "ip=" option) and not pass
 
106
  any extra "--connect" options to mandos-client at boot.  For this to
 
107
  work, "--options-for=mandos-client:--connect=<ADDRESS>:<PORT>" needs
 
108
  to be manually added to the file "/etc/mandos/plugin-runner.conf".
113
109
 
114
110
* Diffie-Hellman Parameters
115
111
 
116
112
  On installation, a file with Diffie-Hellman parameters,
117
113
  /etc/keys/mandos/dhparams.pem, will be generated and automatically
118
 
  installed into the initial RAM disk image and also used by the
 
114
  installed into the initital RAM disk image and also used by the
119
115
  Mandos Client on boot.  If different parameters are needed for
120
116
  policy or other reasons, simply replace the existing dhparams.pem
121
 
  file and update the initial RAM disk image.
 
117
  file and update the initital RAM disk image.
122
118
 
123
 
 -- Teddy Hogeborn <teddy@recompile.se>, Sun,  8 Sep 2024 02:09:20 +0200
 
119
 -- Teddy Hogeborn <teddy@recompile.se>, Mon, 15 Jul 2019 16:47:02 +0200