Pages by Andreas Hofmeier
An-H
eMail Impressum/Note Datenschutzerklärung
http[s]://www.abmh.de/tunneloverssh.html

Like to be free? ... then: Fight for Freedom

    tnlssh

    Diese Programm koppelt die Ein- und Ausgaben eines Programms mit
    einem TTY-Device.

    Gedacht ist dieses Programm um PPP over SSH zu fahren.

    Copyright (c) Andreas Hofmeier

    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License as
    published by the Free Software Foundation; either version 2 of
    the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.


Dieses Klient Programm ist nur auf dem Klient erforderlich. Dort
startet es SSH und PPPD. Die Ein- und Ausgaben des SSH-Klienten werden
zu einem Pseudo-TTY-Device umgeleitet. Auf das entsprechende
TTY-Device greift dann der PPPD zu. Der PPPD meint ein Modem vor sich
zu haben.

Die Passwortabfrage von SSH wird allerdings nicht umgeleitet, dies muss
noch Manuell eingegeben werden.

Auf dem Server ist nur ein SSHD und PPPD bereitzuhalten. 

Nachdem mein Programm sich über SSH mit dem Server verbunden hat, muss
man nurnoch PPPD auf dem Server starten. Dies kann man entweder
machen, indem pppd als Standartshell für den Loginuser eingestellt
wird oder indem der Klient-PPPD über chat den PPPD auf dem Server
startet.

Um den PPPD verwenden zu können, benötigt man ROOT-Rechte, dies wird
hier mit sudo geregelt. sudo startet einen Befehl mit
ROOT-Rechten.

Sie können sich auch direckt unter root (oder einem User, welcher die
ID 0 hat) einloggen. Stellen sie dann aber sicher, dass in der
/etc/ssh/sshd_config

PermitRootLogin yes

eingestellt ist.


Am Einfachsten sind wohl einige Beispiele:

Server (PPPD, ROOT-Rechte)

server.de, user: user

Klient

sudo tnlssh "ssh server.de -l user"  "pppd 192.168.2.3:192.168.2.9 noipdefault %s connect 'chat -f /tmp/dail'"

/tmp/dail (beispiel)
***
user "sudo /usr/sbin/pppd noipdefault"
***

chat, vom pppd gestartet, wartet auf "user" und startet dann "sudo
/usr/sbin/pppd noipdefault". Stellen Sie statt user ein, bei bei
ihnen auf der Kommandoebene zu sehen ist:

für  das Prompt:

debian( at )aPC:~$

z.B:

/tmp/dail
***
debian "sudo /usr/sbin/pppd noipdefault"
***

Sie können sich auch durch einen Server "durchloggen", falls Sie sich
nicht direckt mit ihrem Server verbinden können

1. Server
firewall.company.org
user: azubi

2. Server, Eigentlicher Server
server.de
user: user
passwd: sagichnicht

sudo tnlssh "ssh firewall.company.org -l azubi"  "pppd 192.168.2.3:192.168.2.9 noipdefault %s connect 'chat -f /tmp/dail'"

/tmp/dail
***
azubi "ssh server.de -l user"
ass "sagichnicht"
user "sudo /usr/sbin/pppd noipdefault"
***

ACHTUNG: Diese Variante lässt an Sicherheit zu wünschen übrig! Auf dem
Server firewall.company.org wird der Stream entschlüsselt und dann neu
verschlüsselt. Jemand der auf dieser Kiste ROOT-Rechte inne hat,
könnte die Daten abhören. Sie selber brauchen allerdings keine
ROOT-Rechte.

Des weiteren muss das PWD für ihren Server in einer Datei abgelegt
werden!

zu pppd:

Klient:

pppd 192.168.2.3:192.168.2.9 noipdefault %s connect 'chat -f /tmp/dail'

Enden des Verschlüsselten Tunnels:

192.168.2.3: IP des Klienten
192.168.2.9: IP des Server

%s: An dieser Stelle setzt mein Programm das TTY-Device ein, WICHTIG!

/tmp/dail Diese Datei können und sollten Sie natürlich woanders
hinverlegen...

Weitere Informationen: Manualpages von pppd und chat, sowie PPP-und
Netzwerk-HowTo


Server, ROOT-Login mit Standartshell:
/etc/passwd:
tnllogin:x:0:65534::/tmp:/usr/sbin/pppd

Klient

sudo tnlssh "ssh server.de -l user"  "pppd 192.168.2.3:192.168.2.9 noipdefault %s"

chat kann komplett weggelassen werden, da der PPPD automatisch
gestartet wird.

Vorteil dieser Methode: Der User kann nicht mehr machen als den tunnel
starten.

Falls Sie einen Server aufbauen, welchen nicht nur Sie selber
verwenden wollen, können Sie mit Hilfe von der PPPD-Konfiguration IPs
sowie extra Passwörter via PAP/CHAP zuweisen.


Vorteile/Nachteile dieser Methode:

+ Sicher, da SSH/SSL Verschlüsselung
+ Vollwertiges Interface und Routing
+ Keine speziellen Kernelmodule (Standart PPPD erforderlich)
+ Nur ein Port nötig
- ROOT-Rechte nur auf ihrem Klient und ihrem Server nötig


Weitere Konfigurationsbeispiele und Anleitungen zu PPPD und Netzwerk
siehe meine Projekte tunnel und tty-socket!


RTFM ;-)


Download now (tunneloverssh.zip)

Siehe auch:

ACHTUNG: Dieses Programm, bzw. dieser Test unterliegt der GPL!


Pages by Andreas Hofmeier
An-H
eMail Impressum/Note Datenschutzerklärung
http[s]://www.abmh.de/tunneloverssh.html
Creative Commons License
(c) Andreas B. M. Hofmeier
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Germany License