Statt eines Plaintext-Schlüssels kann Fwknop auch GPG-Schlüssel benutzen. Allerdings dürfen Sie nicht Ihren privaten GPG-Key dafür verwenden, denn das Passwort zum Entschlüsseln muss in
»/etc/fwknop/access.conf
«
stehen. Jedoch können Sie auf dem Client einen existierenden Key verwenden, wenn Sie einen haben. Falls nicht, erfahren Sie jetzt, wie man einen neuen anlegt. Geben Sie am Server dazu die folgenden Befehle ein:
gpg --gen-key gpg --list-keys
Die Default-Optionen von GPG sind in Ordning (DSA- und Elgamal-Schlüssel, 2048-Bit Länge und kein Ablaufdatum). Man sollte keinen Schlüssel länger als 2048 Bits verwenden, denn er muss noch in ein Datenpaket passen. Geben Sie die passenden Server-Namen und E-Mail-Adresse an, und notieren Sie die Passphrase. Die Ausgabe sieht in etwa so aus:
pub 1024D/AAAAAAAA 2008-03-07 uid server.example.com fwknop <username@↩ example.com> sub 2048g/BBBBBBBB 2008-03-07
Dann importieren Sie den Schlüssel im Ascii-Format:
$ gpg -a --export AAAAAAAA > server.asc
Erzeugen Sie auch auf dem Client einen Key und exportieren Sie ihn:
$ gpg --gen-key $ gpg --list-keys pub 1024D/CCCCCCCC 2008-03-07 uid test fwknop <username-test@example.↩ com> sub 2048g/DDDDDDDD 2008-03-07 $ gpg -a --export CCCCCCCC > client.asc
Nun übertragen Sie die Schlüssel über einen sicheren Kanal jeweils auf den anderen Rechner. Wenn Fwknop schon läuft, müssen Sie wie oben beschrieben anklopfen. Nun importieren und signieren Sie beide Schlüssel. Zunächst auf dem Client:
$ gpg --import server.asc $ gpg --edit-key fwknop Command> sign Command> save
Ersetzen Sie dabei
»fwknop
«
durch den Namen, der zut hexadezimaler Key-ID gehört, im Beispiel AAAAAAAA. Auf dem Server verfahren Sie mit dem Client-Key analog. Die Fwknop-Konfiguration für die im Beispiel verwendeten Schlüssel sieht dann so aus wie in
Listing 2
.
Listing 2
access.conf für GPG-Schlüssel
SOURCE: ANY; OPEN_PORTS: tcp/22; DATA_COLLECT_MODE: PCAP; FW_ACCESS_TIMEOUT: 30; GPG_HOME_DIR: /root/.gnupg; GPG_DECRYPT_ID: AAAAAAAA; GPG_DECRYPT_PW: myGpgPassword; GPG_REMOTE_ID: CCCCCCCC;
»__GPG_DECRYPT_ID__
«
ist der Server-Schlüssel,
»__GPG_DECRYPT_PW__
«
das Passwort dafür.
»__GPG_REMOTE_ID__
«
ist die GPG-Key-ID des Client. Starten Sie dann Fwknop zum Testen neu. Der dafür passende Aufruf auf dem Client sieht so aus:
fwknop -A tcp/22 --gpg-recip AAAAAAAA --gpg-↩ sign CCCCCCCC -w -D server.example.com
Der Server-Schlüssel folgt hinter
»--gpg-recip
«
, die Client-Key-ID nach
»--gpg-sign
«
. Wenn Sie, wie verlangt, die GPG-Passphrase eingegeben haben, schickt Fwknop das Paket an den Server. Nun sollten Sie sich wieder per SSH einloggen können.
Beim derzeitigen Stand der Konfiguration kann sich nur ein einziger Benutzer auf dem Server einloggen. Damit das auch andere tun können, fügen Sie weitere Zeilen mit
»GPG_REMOTE_ID
«
der
»access.conf
«
hinzu. Allerdings muss jeder Schlüssel wieder auf dem Server importiert und signiert werden, genauso wie der jeweilige Benutzer den Server-Key importieren und signieren muss. Für eine normale Login-Umgebung ist das natürlich etwas viel Aufwand, aber er ist für besondere Maschinen mit einer kleinen Gruppe von Admins vielleicht noch vertretbar.
Um den Zugang noch auf einzelne Benutzernamen zu beschränken, verwenden Sie in
»/etc/fwknop/access.conf
«
den Paramter
»REQUIRE_USERNAME
«
. Analog dazu können Sie auch ein bestimmtest Betriebssystem oder eine Quelladresse verlangen. Mehr dazu finden Sie in der Manpage zu
»fwknop
«
.
Infos
Das für Single Packet Authentication bei Firewalls eingesetzte Paket Fwknop steht als produktionsreifes Release 2.0 bereit.