|
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.
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/
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:
Diese Option sorgt dafür, daß ssh
sich nach der Authentisierung in
den Hintergrund »forkt«.
Kompression aktivieren (optional)
Adresse des UUCP-Servers Ihres Providers (z.B.
uucp.provider.de
)
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.
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.
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.
Es ist nicht sehr benutzerfreundlich, vor jedem Pollen den SSH-Befehl eintippen
und ein Paßwort angeben zu müssen. Ein Skript, welches
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 uucico gestartet.
/usr/sbin/uucico -Suucp
Durch Eintragen des Public Keys des Clients auf dem Server wird eine SSH-Verbindung ermöglicht, die kein Paßwort benötigt. Generieren Sie sich dazu einen Public Key für SSH, falls Sie nicht bereits einen besitzen:
$ ssh-keygen
Initializing random number generator...
Generating p: ........++ (distance 184)
Generating q: ............++ (distance 210)
Computing the keys...
Testing the keys...
Key generation complete.
Enter file in which to save the key (/home/user/.ssh/identity):
Enter passphrase:
Enter the same passphrase again:
Your identification has been saved in /home/user/.ssh/identity.
Your public key is:
1024 35 127642664008810473190379335529362297128585226778196\
81550133787496336590741138179031632372787523983722146993732\
04821130289447237973952899107810754205502922180340071603017\
45428600832943838422850984029284270667469908839608991926944\
06721675129466163897527649041652188452013063146729141405576\
7033019358488561450739 user@perikles.toppoint.de
Your public key has been saved in /home/user/.ssh/identity.pub
Der Dateiname ist egal, bestätigen Sie also einfach mit Enter. Die Paßwortabfrage bestätigen Sie zweimal mit Enter, um kein Paßwort zu setzen.
Im Verzeichis ~/.ssh/
sollten Sie nun diese Dateien finden:
$ ls -l
total 3
-rw------- 1 netadmin netadmin 544 May 31 19:56 identity
-rw-rw-r-- 1 netadmin netadmin 348 May 31 19:56 identity.pub
-rw------- 1 netadmin netadmin 512 May 31 19:56 random_seed
Zusätzliche Dateien wie z.B. authorized_keys
oder known_hosts
sind nicht störend, sondern enthalten Informationen zu vergangenen
SSH-Verbindungen.
Ihr Public Key muß nun auf den UUCP-Server kopiert werden. Nutzen Sie
dazu am besten gleich SSH, damit niemand Ihre Verbindung mitlesen kann.
Sie benötigen dazu einen Shell-Zugang zu dem UUCP-Server Ihres Providers. Oft
ist dies der gleiche Rechner, der auch den Shell-Zugang selbst bereitstellt.
Wenn Sie keinen Shell-Zugang haben, sollten Sie Ihren Provider bitten, die
Datei identitiy.pub
in das entsprechende Verzeichnis zu kopieren.
Wenn der Provider nichts mit Ihrer Anfrage nichts anfangen kann, dann hat er
wahrscheinlich nicht viel Ahnung von Sicherheit :-).
Der UUCP-Server ist in diesem Beispiel
uucp.provider.de
und der Benutzername ist blafasel
.
Wechseln Sie ins richtige Verzeichnis wechseln:
$ cd /.ssh
Zum Kopieren des Public Keys nutzen wir den Befehl scp
(Secure Copy) des SSH-Pakets:
$ scp identity.pub blafasel@uucp.provider.de:.ssh/
blafasel@uucp.provider.de's password:
identity.pub | 1 KB | 7.4 kB/s | ETA: 00:00:00 | 100%
Diese Verbindung benötigt natürlich noch ein Paßwort. Geben Sie das Paßwort für Ihren Shell-Account ein.
Testen Sie nun, ob ein Login ohne Paßwort möglich ist:
$ ssh blafasel@uucp.provider.de
Last login: Tue May 30 17:44:47 2000
No mail
$ uname -n
uucp.provider.de
Falls Sie den gleichen Benutzernamen auf Ihrem Client und dem Server
nutzen, können Sie den SSH-Befehl zu ssh uucp.provider.de
reduzieren. Die Meldungen nach dem Login können stark varieren,
je nachdem welches Betriebssystem Ihr Provider einsetzt. Kontrollieren
Sie mit dem Befehl
$ uname -n
ob Sie auf dem richtigen Rechner eingeloggt sind.
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.
Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 17:56:56