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

  • Committer: Teddy Hogeborn
  • Date: 2015-03-10 18:03:38 UTC
  • Revision ID: teddy@recompile.se-20150310180338-pcxw6r2qmw9k6br9
Add ":!RSA" to GnuTLS priority string, to disallow non-DHE kx.

If Mandos was somehow made to use a non-ephemeral Diffie-Hellman key
exchange algorithm in the TLS handshake, any saved network traffic
could then be decrypted later if the Mandos client key was obtained.
By default, Mandos uses ephemeral DH key exchanges which does not have
this problem, but a non-ephemeral key exchange algorithm was still
enabled by default.  The simplest solution is to simply turn that off,
which ensures that Mandos will always use ephemeral DH key exchanges.

There is a "PFS" priority string specifier, but we can't use it because:

1. Security-wise, it is a mix between "NORMAL" and "SECURE128" - it
   enables a lot more algorithms than "SECURE256".

2. It is only available since GnuTLS 3.2.4.

Thanks to Andreas Fischer <af@bantuX.org> for reporting this issue.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/bin/sh
 
2
# This script can be called in the following ways:
 
3
#
 
4
# After the package was installed:
 
5
#       <postinst> configure <old-version>
 
6
#
 
7
#
 
8
# If prerm fails during upgrade or fails on failed upgrade:
 
9
#       <old-postinst> abort-upgrade <new-version>
 
10
#
 
11
# If prerm fails during deconfiguration of a package:
 
12
#       <postinst> abort-deconfigure in-favour <new-package> <version>
 
13
#                  removing <old-package> <version>
 
14
#
 
15
# If prerm fails during replacement due to conflict:
 
16
#       <postinst> abort-remove in-favour <new-package> <version>
 
17
 
 
18
set -e
 
19
 
 
20
# Update the initial RAM file system image
 
21
update_initramfs()
 
22
{
 
23
    if [ -x /usr/sbin/update-initramfs ]; then
 
24
        update-initramfs -u -k all
 
25
    fi
 
26
    
 
27
    if dpkg --compare-versions "$2" lt-nl "1.0.10-1"; then
 
28
        # Make old initrd.img files unreadable too, in case they were
 
29
        # created with mandos-client 1.0.8 or older.
 
30
        find /boot -maxdepth 1 -type f -name "initrd.img-*.bak" \
 
31
            -print0 | xargs --null --no-run-if-empty chmod o-r
 
32
    fi
 
33
}
 
34
 
 
35
# Add user and group
 
36
add_mandos_user(){
 
37
    # Rename old "mandos" user and group
 
38
    if dpkg --compare-versions "$2" lt "1.0.3-1"; then
 
39
        case "`getent passwd mandos`" in
 
40
            *:Mandos\ password\ system,,,:/nonexistent:/bin/false)
 
41
                usermod --login _mandos mandos
 
42
                groupmod --new-name _mandos mandos
 
43
                return
 
44
                ;;
 
45
        esac
 
46
    fi
 
47
    # Create new user and group
 
48
    if ! getent passwd _mandos >/dev/null; then
 
49
        adduser --system --force-badname --quiet --home /nonexistent \
 
50
            --no-create-home --group --disabled-password \
 
51
            --gecos "Mandos password system" _mandos
 
52
    fi
 
53
}
 
54
 
 
55
# Create client key pair
 
56
create_key(){
 
57
    if [ -r /etc/keys/mandos/pubkey.txt \
 
58
        -a -r /etc/keys/mandos/seckey.txt ]; then
 
59
        return 0
 
60
    fi
 
61
    if [ -x /usr/sbin/mandos-keygen ]; then
 
62
        mandos-keygen
 
63
    fi
 
64
}
 
65
 
 
66
case "$1" in
 
67
    configure)
 
68
        add_mandos_user "$@"
 
69
        create_key "$@"
 
70
        update_initramfs "$@"
 
71
        ;;
 
72
    abort-upgrade|abort-deconfigure|abort-remove)
 
73
        ;;
 
74
 
 
75
    *)
 
76
        echo "$0 called with unknown argument '$1'" 1>&2
 
77
        exit 1
 
78
        ;;
 
79
esac
 
80
 
 
81
#DEBHELPER#
 
82
 
 
83
exit 0