phpbar.de logo

Mailinglisten-Archive

[php] [1/2 OT] SSH per PHP (vs. FTP)

[php] [1/2 OT] SSH per PHP (vs. FTP)

Johannes Schlueter johannes at schlueters.de
Mon Mar 22 21:27:29 CET 2004


Hi,

On Friday 20 February 2004 15:06, Oliver Richter wrote:
> Ich will Usern (welche beim Wort "Shell" an eine Tankstelle denken) die
[...]

;-)

> 1.) Einen entsprechenden FTP-Account auf dem Ziel-Server anlegen und mit
> den PHP FTP-Befehlen arbeiten.
> 2.) Eine SSH-Verbindung aufbauen und die Daten "remote"
> bearbeiten/erstellen.
>
> Der Grund, warum ich überhaupt auf SSH zu sprechen komme ist, dass der
> Kunde auf dem Game-Server nach Möglichkeit minimalste Programme installiert
> haben möchte. So ist zur Zeit wirklich nur der Game-Server an sich und der
> SSH zugange.

+sonstige System-Tools wohl (Shell, usw.) ;-)

> Wahrscheinlich werde ich mich an der ersten Methode versuchen, aber
> trotzdem würde mich einmal interessieren:
> - ob es mit PHP generell möglich ist, eine SSH Verbindung aufzubauen (OHNE
> dabei exec oder system zu verwenden. Nur PHP-eigene befehle)

Ohne exec&co nicht.

> - in welchen Fällen so eine Sache überhaupt brauchbar und effektiv wäre.
> - wie performat so etwas generell ist.
> - wie sicher so etwas wäre (ich zitiere mal meinen Kunden: "ich hab gelesen
> SSH ist sicher und FTP nicht" ... wie gesagt.. "Shell" ist für ihn ne
> Tankstelle.. aber er zahlt gut ;))

SSH ist nicht nur der einfach Shell-Zugang sondern ermöglicht u.a. auch 
Dateien hin-und-her zu schicken (ganz einfach mit scp oder auf FTP basierend 
mit sftp - siehe entsprechende man-pages und/oder Google) Der Vorteil davon 
ist, dass die komplette Kommunikation dabei verschlüsselt abläuft. Normales 
FTP ist unverschlüsselt, somit kann jeder (der in einem entsprechenden 
Netz-Segment hängt) alles (d.h. Passwörter&Daten)  mitlesen, da gibt es zwar 
inzwischen gewisse Schutzmechanismen (FTP via SSL et al.) die wirken aber 
alle nur auf die Kontrolverbindung und wirken somit - ohne jetzt  weit 
außholen zu wollen - nur auf Passwort und Dateinamen, die Daten an sich gehen 
aber unverschlüsselt auf die Reise. Bei sftp hingegen findet die komplette 
Kommunikation im ssh-Tunnel und somit verschlüsselt statt.
Ein weiterer Faktor sind die offenen Ports am (Game-)Server. Jeder offene Port 
ist zunächstmal ein mölgicher Angriffspunkt für böse Leute - gerade 
FTP-Server sind, dadurch bedingt, dass sie mit recht umfangreichen Rechten 
laufen (der daemon läuft i.d.R. als root um dann die Rechte des eingeloggten 
Users zuübernehmen) beliebte Angriffsziele (ok, sshd ist auch ein möglicher 
Angriffspunkt)
Dann noch ein paar Dinge: 
- sftp/scp braucht länger beim Verbindungsaufbau, muss die Daten vordem 
schicken erst verschlüsseln komprimiert dafür aber wärend der Übertragung
- sftp/scp ist etwas umständlicher zu programmieren, da man exec/popen-Aufrufe 
machen muss und deren Rückgabe auswerten muss wohingegen man bei FTP nette 
Funktionen hat, die Fehlerhandling etc. stark vereinfachen (wobei es da in 
einschlägigen Quellen evtl. brauchbare Wrapper-Klassen geben könnte)
- Ein sftp/scp-User hat in der Regel auch normalen Shell-Zugang, ohne weitere 
Sicherheitsmaßnahmen d.h. wenn jemand die Zugriffsdaten (vom 
"Konfigurations"-Server) bekommt kann er einfach an den Game-Server, bei FTP 
ist es bei den meisten daemons ohne besonderen Aufwand möglich User ohne 
Shell-Rechte einzurichten
- Sicher noch ein paar Dinge vergessen ;-)

> Wäre nett, wenn Ihr mir mal Eure Erfahrungen mit solchen oder ähnlichen
> Projekten weitergeben könntet, oder, wann ich mal wieder den einfachsten
> Weg übersehen habe, mir kurz einen Wink gebt.

Andere Möglichkeit zum in-Betracht-ziehen: Wenn beide durchgehend laufen und 
die Änderungen nicht sofort verfügbar seien müssen kann der 
Konfigurationsserver die Datei "irgendwo" ablegen und der Game-Server kann 
die sich regelmäßig (per cron und z.B. rsync, wget oder sonstwas) vom anderen 
holen.

johannes

php::bar PHP Wiki   -   Listenarchive