Weiter Inhalt

15. UUCP über IP mit ssh sicherer machen

15.1 Sicherheitslücken

UUCP über IP baut im Normalfall eine Verbindung zu Port 540 des UUCP-Servers auf. Diese Verbindung ist unverschlüsselt und somit kann rein theoretisch jeder Rechner auf dem Weg der Daten diese abfangen und das Paßwort im Klartext lesen. Ein sogenannter Sniffer ist fast unsichtbar, da er nur passiv den Datenstrom mitliest und keine eigenen Pakete verschickt.

Das Paßwort ermöglicht dem Angreifer, E-Mails und News von UUCP-Server zu holen, als sei er der echte Client. Oft wird für einen eventuell vorhandenen FTP-Zugang, Shell-Account oder sogar für den PPP-Zugang das selbe Paßwort verwendet, so daß der Angreifer auf Kosten des Benutzers surfen kann.

15.2 Die Verbindung verschlüsseln

Es ist möglich, die komplette Verbindung so zu verschlüsseln, daß niemand den Inhalt erkennen kann. Als Nebeneffekt ist eine Kompression zuschaltbar, um bei DialUp-Leitungen Kosten zu sparen. Diese Kompression wirkt meist nur bei Mails, da News-Batches meist schon komprimiert sind.

Ihr Provider muß den SSH-Server sshd laufen haben und Sie benötigen den SSH-Client ssh.

So testen Sie, ob Ihr Provider den sshd laufen hat. uucp.netuse.de ersetzen Sie natürlich durch den Namen des UUCP-Servers Ihres Providers:

$ telnet uucp.netuse.de 22
Trying 193.98.110.140...
Connected to uucp.netuse.de.
Escape character is '^]'.
SSH-1.5-1.2.27
quit
Connection closed by foreign host.
$

Geben Sie quit ein, um die Verbindung zu beenden oder benutzen Sie die Escape-Sequenz ^]. Auf dem Server in diesem Beispiel läuft der im Moment aktuelle SSH-Daemon Version 1.2.27. Falls Sie eine einigermaßen aktuelle Distribution nutzen, haben sie wahrscheinlich auch diese Version.

Überprüfen Sie, ob Sie den SSH-Client installiert haben: Wenn Sie folgenden Befehl eingeben, sollten sie den Pfad zu dem Programm erhalten:

$ which ssh
/usr/local/bin/ssh
$

Ist dies nicht der Fall, sollten Sie das SSH-Paket Ihrer Distribution installieren. RedHat-Pakete bekommen Sie z.B. hier:

ftp.replay.com:/pub/crypto/

15.3 SSH-Tunnel starten

Der SSH-Tunnel kann z.B. so gestartet werden:

$ ssh -f -C uucp.netuse.de 5400:uucp.netuse.de:540 sleep 120

Die Optionen haben folgende Bedeutung:

-f

Diese Option sorgt dafür, daß ssh sich nach der Authentisierung in den Hintergrund »forkt«.

-C

Kompression aktivieren (optional)

uucp.netuse.de

Adresse des UUCP-Servers Ihres Providers (z.B. uucp.provider.de)

5400:uucp.netuse.de:540

5400 ist ein lokaler Port, der fast beliebig gewählt werden kann. uucp.netuse.de ist wieder der Hostname des UUCP-Servers und 540 der Port, auf dem der Server lauscht.

sleep 120

Dies ist ein Shell-Befehl, der dafür sorgt, daß der Tunnel 2 Minuten auf Daten wartet, bevor er wieder abgebaut wird.

Der lokale Port 5400 ist bewußt über 1024 gewählt, damit auch ein Benutzer ohne root-Rechte den Tunnel aufbauen kann.

15.4 UUCP konfigurieren

Damit der SSH-Tunnel genutzt wird, muß der eigene Client umkonfiguriert werden. Er darf jetzt keine Verbindung mehr zum UUCP-Server aufbauen, sondern zum lokalen Port 5400.

Die Dateien port und sys werden bearbeitet:

port

port tcpssh
type tcp
service 5400

Es wird ein neuer Port tcpssh konfiguriert, der statt Port 540 den Port 5400 nutzt.

sys

system uucp
port tcpssh
protocol t
address 127.0.0.1

Dieser Abschnitt sollte Ihnen schon bekannt vorkommen. Vielleicht haben Sie die UUCP-über-IP-Variante auch nur als Alternate konfiguriert. Die Verschlüsselung funktioniert trotzdem. Im Gegensatz zu Ihrer alten Konfiguration wird der Port und die address-Zeile angepasst. Den Port tcpssh haben wir bereits in der Datei port konfiguriert.

Die Adresse wird auf 127.0.0.1 (localhost) gesetzt, damit der SSH-Tunnel die Daten an den eigentlichen UUCP-Server weiterleiten kann.

Bei einem Aufruf des SSH-Befehls und anschliessendem Pollens sollten Sie keine Unterschiede in den Logs im Vergleich zu alten Calls feststellen.

15.5 Verschlüsselung automatisieren

Es ist nicht sehr benutzerfreundlich, vor jedem Pollen den SSH-Befehl eintippen zu müssen. Ein Skript, welches den uucico aufruft, kann also auch ohne Probleme noch einen zusätzlichen Befehl vertragen:

#!/bin/bash
# SSH-Tunnel starten
ssh -f -C uucp.provider.de 5400:uucp.provider.de:540 sleep 120

# Hier kann nochmal schnell ein News-Batchen im Hintergrund
# angeworfen werden.
# su -c "/usr/bin/sendbatch uucp" news &

# Hier wird der uucico gestartet.
/usr/sbin/uucico -Suucp

15.6 SSH-Tunnel beim Login per PPP aktivieren

Wenn ich per SyncPPP online bin, wird automatisch alle 5 Minuten nach Mails und News gesucht. Falls sie etwas ähnliches machen, können Sie die SSH-Zeile für den Tunnel in die Datei /etc/ppp/ip-up eintragen und somit einen permanenten Tunnel aufstellen. Achten Sie darauf, daß der sleep Befehl einen hohen Wert hat, damit der Tunnel lange bestehen bleibt.

Nachteil dieser Version ist, daß bei Dial on Demand oft Verbindungen aufgebaut werden können oder die Verbindung nicht abgebaut wird, obwohl keine Daten mehr transferiert werden und das Idle-Timeout überschritten ist.

Als Lösung dieses Problems bietet es sich an, vor jedem UUCP-Call den SSH-Tunnel für ein paar Sekunden aufzubauen. Wie viele Sekunden Sie benötigen, hängt von Ihrer Anbindung ab. 10 Sekunden sollten allerdings ausreichend sein.


Weiter Inhalt