Dieses Kapitel ist zum Teil noch in Arbeit (Wenn Sie einen guten Beitrag haben, dann her damit).
Wenn Sie die ISDN Verbindung aufgesetzt haben, steht einer Verbindung Ihres PCs mit einem anderen PC im Internet nichts mehr im Weg. Wenn Sie Maschinen über das Internet verbinden, dann müssen Sie diese Maschinen gegen fremden Zugriff schützen. Hierzu wird ein VPN (virutell private network) aufgebaut. Wir bauen hier also ein privates Netzwerk über das Internet auf, wobei dieses so geschützt sein soll, daß niemand unsere Netzwerkdaten einsehen oder mitlesen kann. Dieses Kapitel soll die Schritte erklären die für ein einfaches aber effektives VPN notwendig sind.
Bevor Sie eine Verbindung über das Internet mit einem anderen Rechner aufbauen können, tauchen zwei Schwierigkeiten auf:
Zum ersteren Punkt gibt es eine Randbedingung. Mindestens eine Maschine
im VPN muß eine fixe IP-Adresse haben. Nur dann kann zwischen den VPN
Teilnehmern über /etc/ppp/ip-up
eine Verbindung wiederhergestellt
werden, wenn der 8 Stunden timeout zugeschlagen hat. Der Aufbau der Verbindung
wird mit ssh vorgenommen (s.u.)
Natürlich können zwei Partner mit wechselnder IP-Adresse auch ein VPN über einen dritten Rechner mit konstanter IP-Adresse aufbauen. Wichtig dabei ist immer nur, daß wenigstens ein Rechner immer die gleiche IP-Adresse hat.
Anm.: Es sollte auch zwischen zwei Usern mit wechselnder IP klappen, allerdings wird dann das Scripting etwas komplizierter. Man müßte sich z. B. die IP-Adresse beim Verbindungsaufbau gegenseitig mailen. Auch das wäre denkbar. Hier betrachten wir im Moment nur die Variante, daß ein VPN-Teilnehmer eine fixe IP (Chello User) hat.
Zuerst lösen wir den zweiten Punkt, die Aufweichung der Firewalls. Bei allen VPN Teilnehmern müssen am Beginn des Files ipchain.defaults, folgende Zeilen eingefügt werden:
-A input -s x.x.x.x/255.255.255.0 -d 0.0.0.0/0.0.0.0 -i ppp0 -p 6 -j ACCEPT
wobei für x.x.x.x die IP-Adresse des VPN-Teilnehmers mit der fixen IP-Adresse einzusetzen ist.
Zur Aktivierung einer ssh Verbindung sind folgende Schritte notwendig:
Wir verwenden die RSAAuthentication bei der nur keys verwendet werden. Wir generier einen private-key mit:
(user@home):[~] > ssh-keygen
Generating p: ......++ (distance 92)
Generating q: ............++ (distance 178)
[...]
Your public key has been saved in /home/user/.ssh/identity.pub
Es wird keine Passphrase für den key eingegeben. (Es wird zweimal mit ENTER quittiert). Allerdings ist der private Schlüssel ungeschützt, und es muß daher darauf geachtet werden, daß niemand außer Ihnen einen privilegierten Zugang auf diesen Rechner hat. Der private-key liegt nun im File /.ssh/identity und der zugehörige public-key liegt unter /.ssh/identity.pub. der private key ist unverschlüsselt.
Nun gehen Sie auf die Maschine, auf der Sie ohne Passwort einloggen wollen (z. b. als root@office), und erstellen dort die Datei /.ssh/authorized_keys. In diese Datei kommt nun der _public_ key ders user@home eingetragen. Beim pasten muß darauaf geachtet werden, daß der public key aus einer einzigen langen zeile besteht.
(root@office):[~] # vi .ssh/authorized_keys
[ ... paste den inhalt von user@home:~/.ssh/identity.pub ...]
1024 33 168976988564775763....064089023 user@home
! Damit wird festgelegt, daß jeder User der den private key des user@home vorweisen kann, über ssh als root@office einloggen darf, weil der private key beim Erstellen nicht mit einer passphrase geschützt wurde, deshalb muß man später bem Verbindungsaufbau keine mehr eingeben.
Der private key ist zu schützen. Wird er gestohlen, kann jeder als root@office einloggen, ohne nach einem weiteren Paßwort gefragt zu werden.
Nun wird die ssh Verbindung aufgebaut:
(user@homee):[~] > ssh -v -l root office
[...]
home: Trying RSA authentication with key 'user@home'
home: Received RSA challenge from server.
home: Sending response to host key RSA challenge.
home: Remote: RSA authentication accepted.
home: RSA authentication accepted by server.
[...]
(root@office):[~] #
In diesem Beispiel wurde gezeigt wie man root User z.B. bei einer Verbindung auf die Maschien office wird. Üblicherweise werden Sie ssh Verbindungnen nicht für den User root einrichten sondern mit Ihrem privaten Account von einer local-machine auf den selben privaten Account auf eine remote-machine gehen.
Sollten Sie auf der remote-machine den root account benützen
wollen, dann muß die option "PermitRootLogin yes" in /etc/sshd_config
aktiviert sein.
Um RSA-Authentication zum Laufen zu bringen muß in /etc/sshd_config
die Option "RSAAuthentication yes" gesetzt sein. Diese Einstellung
ist ein default .
Um die ssh Verbindung bei jeder Aktivierung der ppp Verbindung zu aktivieren, wird die Zeile
case "$INTERFACE" in
ppp0)
su - user -c "/usr/bin/ssh -v -l root office /bin/startppp"
;;
esac
in der Datei /etc/ppp/ip-up
eingefügt. Der beste Platz wird in
am Ende folgender symbolisch angedeuteter Struktur sein:
:
case "$INTERFACE" in
ippp*)
:
ppp*)
:
case "$BASENAME" in
ip-up)
:
Das auf der Maschine office gestartete Script /bin/startppp startet eine ppp Verbindung über die ssh Verbindung. Dadurch könnnen dann alle gewohnten Dienste (rlogin, telnet, rcp, etc.) im VPN genutzt werden, ohne eine nennenswerte Verschlechterung der Sicherheit im VPN.
Alle Teilnehmer des VPN müssen sich aber dessen bewußt sein, daß wenn Sie selbst geknackt werden, alle anderen auch gegenüber dem Internet offen stehen. Es sollte daher mit Vorsicht und Sorgfalt gearbeitet werden.
Daher möchte ich an dieser Stelle nocheinmal auf Sicherheit im Kabelnetzwerk und Firewall HOWTO verweisen.
Die Ideen zu disem Kapitel stammen von Szomraky Stefan<stsz@gmx.net> . Danke Stefan!
Für ICQ Setup sind folgende Arbeiten notwendig. (untested!!! Bitte schicken Sie mir Ihre Erfahrungen, wenn Sie nach diesem Kapitel ICQ aktiviert haben!)
Die empfohlenen Kernerleinstellungen sind :
Sektion Networking Options
TCP/IP Networking: yes
IP: Firewalling: yes
IP: Always defragment: yes
IP: transparent proxy support: yes
IP: masquerading: yes
IP: ICMP masquerading: yes
IP: masquerading special modules support: yes
IP: ipautofw masquerade support (Experimental): module
IP: ipportfw masquerade support: module
IP: ipmarkfw masquerade support: module
ICQ-Client Einstellung "I'm behind a firewall or proxy" => "other Proxy" => use TCP Range: 20000-20020 am ersten Client, 20021-20040 am zweiten Client, usw.
Der Abstand kann auch auf 10 reduziert werden. (Auch wenn ICQ sich dann beklagt.)
Das Modul ip_masq_icq bekommt man von http://members.xoom.com/djsf/masq-icq/ Nach dem download muß man es noch compilieren, und zwar NACHDEM man den kernel neukompiliert hat. Auchtung das ICQ Module hat einen groben Fehler im Makefile! Man muß aus den beiden "§(shell egrep [...]" (Zeile 15 und 17) ein "S = §(shell egrep [...]" machen. (Der Tip stammt von Oliver Bogen <Oliver.Bogen@gmx.at>)
Jetzt laden wir mal testweise das Modul ip_masq_icq
insmod ip_masq_icq range=20000,20020
Das schaltet die Ports 20000-20020 für die Clients frei. Wenn man die Konfigration wie in Kapitel pppd gemacht hat reicht das für einen Clienten. Für 2 Clienten macht man:
insmod ip_masq_icq range=20000,20040
Also immer LOWRANGE,HIGHRANGE
Jetzt müßte ICQ auch funktionieren...
Man kann jetzt auch noch zusätzliche Module downloaden, in /lib/modules/`uname -r`/net/ kopieren und einfügen.
Wir wollen natürlich jetzt nicht jedesmal das ganze hier eintippen, deswegen schreiben wir mal das ganze in eine Datei, mit z.b den Namen enabicq die etwa so aussieht:
#!/bin/sh
insmod ip_masq_icq range=20000,20020
Dann machen wir das Script ausführbar und setzen die Permissions richtig:
chmod 700 enabicq
Wir verschieben das Script nach
/etc/rc.d
(was eigentlich ein Link auf /sbin/init.d
ist)
und machen folgendes:
cd rc2.d
ln -s ../enabicq S31enabicq
cd ..
cd rc3.d
ln -s ../enabmasq S31enabicq
So, jetzt wird nach dem Neustart das Script automatisch gestartet.
ip_masq_ftp wird im Kapitel Linux als Internetgateway beschrieben.
Weiterführende Anregungen zu Masquerading und auch zu ICQ finden Sie im Linux IP Masquerade HOWTO
Das Hostsfile muß zumindest auf den in diesem Dokument
beschriebenen Gateway zeigen. Der Einfachheit halber
nennt man den Gateway localhost. Bei mir hat der localhost
die IP-Adresse 192.169.1.60 erhalten und wird daher wie
folgt in /etc/hosts
eingetragen:
192.168.1.60 localhost
Meine /etc/route.conf
auf den clients hat nur zwei Zeilen und sieht wie folgt aus:
192.168.1.0 0.0.0.0 255.255.255.0 eth0
default localhost
Die erste Zeile dient dazu, daß z. B. der Localhost 192.168.1.60 am Ethernetkabel gesucht wird. Die zweite Zeile führt alle anderen Adressen zum Gateway localhost, daß mit der ersten Zeile über eth0 gefunden werden kann. Das wars, mehr ist nicht notwendig.
Proxyeinstellung wenn Sie wwwoffle verwenden, sollte nach localhost:8080 zeigen und bei squid auf localhost:3128