/usr/share/doc/HOWTO/de-html/DE-UUCP-HOWTO-16.html is in doc-linux-de 2003.10-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.65">
<TITLE>Linux UUCP HOWTO: UUCP über IP mit ssh sicherer machen</TITLE>
<LINK HREF="DE-UUCP-HOWTO-15.html" REL=previous>
<LINK HREF="DE-UUCP-HOWTO.html#toc16" REL=contents>
</HEAD>
<BODY>
<IMG SRC="next.png" ALT="Weiter">
<A HREF="DE-UUCP-HOWTO-15.html"><IMG SRC="prev.png" ALT="Zurück"></A>
<A HREF="DE-UUCP-HOWTO.html#toc16"><IMG SRC="toc.png" ALT="Inhalt"></A>
<HR>
<H2><A NAME="s16">16.</A> <A HREF="DE-UUCP-HOWTO.html#toc16">UUCP über IP mit ssh sicherer machen</A></H2>
<H2><A NAME="ss16.1">16.1</A> <A HREF="DE-UUCP-HOWTO.html#toc16.1">Sicherheitslücken</A>
</H2>
<P>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.</P>
<P>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.</P>
<H2><A NAME="ss16.2">16.2</A> <A HREF="DE-UUCP-HOWTO.html#toc16.2">Die Verbindung verschlüsseln</A>
</H2>
<P>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.</P>
<P>Ihr Provider muß den SSH-Server <CODE>sshd</CODE> laufen haben und Sie
benötigen den SSH-Client <CODE>ssh</CODE>.</P>
<P>So testen Sie, ob Ihr Provider den <CODE>sshd</CODE> laufen hat.
<CODE>uucp.netuse.de</CODE> ersetzen Sie natürlich durch den Namen des
UUCP-Servers Ihres Providers:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
$ 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.
$
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Geben Sie <CODE>quit</CODE> ein, um die Verbindung zu beenden oder benutzen
Sie die Escape-Sequenz <CODE>^]</CODE>. 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.</P>
<P>Überprüfen Sie, ob Sie den SSH-Client installiert haben:
Wenn Sie folgenden Befehl eingeben, sollten sie den Pfad zu dem
Programm erhalten:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
$ which ssh
/usr/local/bin/ssh
$
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Ist dies nicht der Fall, sollten Sie das SSH-Paket Ihrer Distribution
installieren. RedHat-Pakete bekommen Sie z.B. hier:</P>
<P>
<BLOCKQUOTE><CODE>
<A HREF="ftp://ftp.replay.com/pub/crypto/">ftp.replay.com:/pub/crypto/</A></CODE></BLOCKQUOTE>
</P>
<H2><A NAME="ss16.3">16.3</A> <A HREF="DE-UUCP-HOWTO.html#toc16.3">SSH-Tunnel starten</A>
</H2>
<P>Der SSH-Tunnel kann z.B. so gestartet werden:</P>
<P>
<BLOCKQUOTE><CODE>
$ ssh -f -C uucp.netuse.de 5400:uucp.netuse.de:540 sleep 120
</CODE></BLOCKQUOTE>
</P>
<P>Die Optionen haben folgende Bedeutung:</P>
<P>
<DL>
<DT><B>-f</B><DD>
<P>Diese Option sorgt dafür, daß <CODE>ssh</CODE> sich nach der Authentisierung in
den Hintergrund »forkt«.</P>
<DT><B>-C</B><DD>
<P>Kompression aktivieren (optional)</P>
<DT><B>uucp.netuse.de</B><DD>
<P>Adresse des UUCP-Servers Ihres Providers (z.B.
<CODE>uucp.provider.de</CODE>)</P>
<DT><B>5400:uucp.netuse.de:540</B><DD>
<P><CODE>5400</CODE> ist ein lokaler Port, der fast beliebig gewählt werden kann.
<CODE>uucp.netuse.de</CODE> ist wieder der Hostname des UUCP-Servers und
<CODE>540</CODE> der Port, auf dem der Server lauscht.</P>
<DT><B>sleep 120</B><DD>
<P>Dies ist ein Shell-Befehl, der dafür sorgt, daß der
Tunnel 2 Minuten auf Daten wartet, bevor er wieder abgebaut wird.</P>
</DL>
</P>
<P>Der lokale Port 5400 ist bewußt über 1024 gewählt, damit auch ein
Benutzer ohne root-Rechte den Tunnel aufbauen kann.</P>
<H2><A NAME="ss16.4">16.4</A> <A HREF="DE-UUCP-HOWTO.html#toc16.4">UUCP konfigurieren</A>
</H2>
<P>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.</P>
<P>Die Dateien <CODE>port</CODE> und <CODE>sys</CODE> werden bearbeitet:</P>
<P><B>port</B></P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
port tcpssh
type tcp
service 5400
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Es wird ein neuer Port <CODE>tcpssh</CODE> konfiguriert, der statt Port 540 den
Port 5400 nutzt.</P>
<P><B>sys</B></P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
system uucp
port tcpssh
protocol t
address 127.0.0.1
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Dieser Abschnitt sollte Ihnen schon bekannt vorkommen. Vielleicht haben Sie
die UUCP-über-IP-Variante auch nur als <CODE>Alternate</CODE> konfiguriert. Die
Verschlüsselung funktioniert trotzdem.
Im Gegensatz zu Ihrer alten Konfiguration wird der Port und die
<CODE>address</CODE>-Zeile angepasst. Den Port <CODE>tcpssh</CODE> haben wir bereits
in der Datei <CODE>port</CODE> konfiguriert.</P>
<P>Die Adresse wird auf 127.0.0.1 (localhost) gesetzt, damit der SSH-Tunnel die
Daten an den eigentlichen UUCP-Server weiterleiten kann.</P>
<P>Bei einem Aufruf des SSH-Befehls und anschliessendem Pollens sollten Sie
keine Unterschiede in den Logs im Vergleich zu alten Calls feststellen.</P>
<H2><A NAME="ss16.5">16.5</A> <A HREF="DE-UUCP-HOWTO.html#toc16.5">Verschlüsselung automatisieren</A>
</H2>
<P>Es ist nicht sehr benutzerfreundlich, vor jedem Pollen den SSH-Befehl eintippen
und ein Paßwort angeben zu müssen. Ein Skript, welches
<CODE>uucico</CODE> aufruft, kann also auch ohne
Probleme noch einen zusätzlichen Befehl vertragen:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
#!/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
</PRE>
</CODE></BLOCKQUOTE>
</P>
<H2><A NAME="ss16.6">16.6</A> <A HREF="DE-UUCP-HOWTO.html#toc16.6">SSH ohne Paßwort</A>
</H2>
<P>Durch Eintragen des <EM>Public Keys</EM> 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:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
$ 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
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>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.</P>
<P>Im Verzeichis <CODE>~/.ssh/</CODE> sollten Sie nun diese Dateien finden:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
$ 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
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Zusätzliche Dateien wie z.B. <CODE>authorized_keys</CODE> oder <CODE>known_hosts</CODE>
sind nicht störend, sondern enthalten Informationen zu vergangenen
SSH-Verbindungen.</P>
<P>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 <CODE>identitiy.pub</CODE> 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 :-).</P>
<P>Der UUCP-Server ist in diesem Beispiel
<CODE>uucp.provider.de</CODE> und der Benutzername ist <CODE>blafasel</CODE>.</P>
<P>Wechseln Sie ins richtige Verzeichnis wechseln:</P>
<P>
<BLOCKQUOTE><CODE>
$ cd /.ssh
</CODE></BLOCKQUOTE>
</P>
<P>Zum Kopieren des Public Keys nutzen wir den Befehl <CODE>scp</CODE>
(Secure Copy) des SSH-Pakets:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
$ 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%
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Diese Verbindung benötigt natürlich noch ein Paßwort. Geben Sie
das Paßwort für Ihren Shell-Account ein.</P>
<P>Testen Sie nun, ob ein Login ohne Paßwort möglich ist:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
$ ssh blafasel@uucp.provider.de
Last login: Tue May 30 17:44:47 2000
No mail
$ uname -n
uucp.provider.de
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Falls Sie den gleichen Benutzernamen auf Ihrem Client und dem Server
nutzen, können Sie den SSH-Befehl zu <CODE>ssh uucp.provider.de</CODE>
reduzieren. Die Meldungen nach dem Login können stark varieren,
je nachdem welches Betriebssystem Ihr Provider einsetzt. Kontrollieren
Sie mit dem Befehl </P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
$ uname -n
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>ob Sie auf dem richtigen Rechner eingeloggt sind.</P>
<H2><A NAME="ss16.7">16.7</A> <A HREF="DE-UUCP-HOWTO.html#toc16.7">SSH-Tunnel beim Login per PPP aktivieren</A>
</H2>
<P>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 <CODE>/etc/ppp/ip-up</CODE>
eintragen und somit einen permanenten Tunnel aufstellen. Achten Sie
darauf, daß der <CODE>sleep</CODE> Befehl einen hohen Wert hat, damit der
Tunnel lange bestehen bleibt.</P>
<P>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.</P>
<P>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.</P>
<HR>
<IMG SRC="next.png" ALT="Weiter">
<A HREF="DE-UUCP-HOWTO-15.html"><IMG SRC="prev.png" ALT="Zurück"></A>
<A HREF="DE-UUCP-HOWTO.html#toc16"><IMG SRC="toc.png" ALT="Inhalt"></A>
</BODY>
</HTML>
|