[test suite] added tests/rijndael_hmac_fuzzing.pl file
[fwknop.git] / perl / legacy / fwknop / README.GPG
1
2 This HOWTO is available online at the following link:
3
4 http://www.cipherdyne.org/fwknop/docs/gpghowto.html
5
6
7 If you want to use GnuPG to encrypt communications from the fwknop client to
8 the fwknopd server, you will need to first create the necessary GnuPG keys on
9 both the client and server.  If you already have a GnuPG key that you use for
10 email (or other) encryption, you can safely use this key on the client side
11 since it will only be used for message signing by fwknop. On the fwknopd
12 server you will need to create a special GnuPG key that is exclusively used
13 for fwknop communications. The reason stems from the fact that the password
14 used to unlock this key must be stored within the /etc/fwknop/access.conf
15 file; fwknopd must be able to decrypt messages that have been encrypted by an
16 fwknop client with the server's public key. Hence, it is not a good idea to
17 use a highly valuable personal GnuPG key on the server. Once you have created
18 the requisite keys, you will need to import and sign each key into its
19 "opposite" system; e.g. import and sign the server key into the client's GnuPG
20 key ring, and vice-versa.
21
22 * Note *
23 Because SPA messages must fit within a single IP packet, it is recommended to
24 choose a key size of 2048 bits or less for an fwknopd server GnuPG key.  The
25 process of generating the necessary GnuPG keys from the perspectives of both
26 the client and server is outlined below. First we generate GnuPG keys and then
27 export them to ascii files:
28
29     [server]#  gpg --gen-key
30     [server]#  gpg --list-keys
31     pub   1024D/ABCD1234 2006-05-01
32     uid                  fwknop server key
33     sub   2048g/EFGH1234 2006-05-01
34     [server]#  gpg -a --export ABCD1234 > server.asc
35
36     [client]$  gpg --gen-key
37     [client]$  gpg --list-keys
38     pub   1024D/1234ABCD 2006-05-01
39     uid                  fwknop client key
40     sub   2048g/1234EFGH 2006-05-01
41     [client]$  gpg -a --export 1234ABCD > client.asc
42
43 Next, we transfer the ascii files between the two systems. In this example we
44 use scp (which will presumably be firewalled off after fwknop is deployed!),
45 but any other transfer mechanism (ftp, http, etc.) will work:
46
47     [client]$ scp client.asc root@serverhost:
48
49     [server]# scp server.asc user@clienthost:
50
51 Now we import and sign each key:
52     [server]#  gpg --import client.asc
53
54     [server]#  gpg --edit-key 1234ABCD
55     Command> sign
56
57     [client]$  gpg --import server.asc
58     [client]$  gpg --edit-key ABCD1234
59     Command> sign
60
61 On the server side, we need to add several configuration directives to the
62 /etc/fwknop/access.conf file so that fwknopd uses GnuPG to verify and decrypt
63 SPA packets and are signed and encrypted with GnuPG. Note that the server key
64 ID is ABCD1234 and the client key ID is 1234ABCD:
65
66     SOURCE: ANY;
67     OPEN_PORTS: tcp/22;
68     DATA_COLLECT_MODE: PCAP;
69     GPG_REMOTE_ID: 1234ABCD;
70     GPG_DECRYPT_ID: ABCD1234;
71     GPG_DECRYPT_PW: <your decryption password>;
72     GPG_HOME_DIR: /root/.gnupg;
73     FW_ACCESS_TIMEOUT: 60;
74
75 More information on the access.conf directives above can be found in the
76 fwknop man pages.  See fwknop(8) and fwknopd(8).  Finally, to see fwknop in
77 action in GnuPG mode, on the client side we execute the following fwknop
78 command to gain access to sshd after fwknopd reconfigures the local Netfilter
79 policy:
80
81     $ fwknop -A tcp/22 --gpg-recip ABCD1234 --gpg-sign 1234ABCD -w -k <host>
82
83 On the server side, fwknopd messages such as the following will be written to
84 syslog:
85
86 Jan 14 20:12:37 host fwknopd: adding FWKNOP_INPUT ACCEPT rule for
87 72.x.x.x -> tcp/22 (10 seconds)
88 Jan 15 10:13:09 host fwknopd: received valid GnuPG encrypted packet
89 (signed with required key ID: 1234ABCD) from: 72.x.x.x, remote user: mbr