R e m o t e A c c e s s Präsentation im Seminar Internet-Technologie im Sommersemester 2008 von Cyrus Massoumi
I n h a l t Was versteht man unter Remote Access Unsichere Remotezugriffe TELNET Remote Shell Sichere Remotezugriffe Secure Shell Remote Procedure Call Java RMI
W a s v e r s t e h t m a n u n t e r R e m o t e A c c e s s Zugriff auf einen Server von einem entfernten Standort Der Server kann dabei im Nachbarzimmer, oder am anderen Ende der Welt stehen Die Kommunikation erfolgt über eine Netzwerkverbindung (Internet, LAN,...) Client kann ein beliebiges, netzwerkfähiges Gerät sein (Notebook, PDA,...)
U n s i c h e r e R e m o t e z u g r i f f e Die über das Netzwerk verschickten Daten werden unverschlüsselt übertragen Jeder, der Zugriff auf das Netzwerk hat, kann die übertragenen Pakete abfangen Mit sogenannten Paketsniffern wie Wireshark lassen sich die Pakete auswerten Sicherheitskritische Daten sollten daher immer über eine verschlüsselte Verbindung übertragen werden
T E L N E T Steht für Telecommunication Network Wurde 1969 entwickelt und war einer der ersten Internetstandards (RFC 15) TELNET ist älter als TCP/IP und benutzte zuerst das APRANET Network Control Program TELNET ist ein Client-Server Protokoll Alle Daten, inklusive des Passworts, werden unverschlüsselt übertragen
T E L N E T v s. t e l n e t TELNET beschreibt lediglich ein Protokoll telnet ist ein Softwarepaket, welches das TELNET-Protokoll implementiert Es besteht aus einem Client (telnet) sowie einem Server (telnetd) Bei bestehender Verbindung nimmt der Client Tastatureingaben vom Benutzer entgegen (jeweils genau ein Zeichen!) und leitet diese an den Server weiter
Weitere Verbindungen Da telnet nur einzelne Zeichen überträgt, kann man Verbindungen zu Web-, Mailoder FTP-Servern aufbauen Diese Methode eignet sich sehr gut, um einen Server auf offene Ports zu überprüfen Kann bei der Erstellung von Firewallregeln hilfreich sein
V e r b i n d u n g z u m Webserver
M i t g e l e s e n...
R e m o t e S h e l l ( R S H ) RSH erlaubt es, Programme auf einem anderen Computer zu starten RSH wurde zusammen mit RLOGIN (Remote Login) sowie RCP (Remote Copy) erstmals 1983 mit BSD UNIX 4.2 ausgeliefert Funktioniert wie TELNET nach dem Client- Server-Prinzip und überträgt die Daten unverschlüsselt RLOGIN ist mit TELNET vergleichbar
R S H - F u n k t i o n s w e i s e Auf dem Server muss der RSH-Daemon rshd laufen Die Syntax von RSH lautet: rsh -l benutzername server [befehl] z.b. rsh -l bob example.com ''mkdir test'' Wenn die Remote Shell den Befehl abgearbeitet hat, beendet sie sich stdin, stdout sowie stderr werden von dem Server an den Client weitergeleitet
R S H - F u n k t i o n s w e i s e Wenn der Befehl im RSH-Aufruf weggelassen wird, startet RLOGIN i.d.r. automatisch RLOGIN erlaubt Verbindungen ohne Passwort, der Zugang erfolgt über die Datei hosts.equiv auf dem Server Die Syntax von hosts.equiv lautet: host benutzername z.b. example.com joe Erlaubt dem Benutzer joe vom Computer example.com den Zugang zum Server
R S H - F u n k t i o n s w e i s e Wenn der Benutzer nicht in hosts.equiv auftaucht, wird die Datei.rhosts ausgewertet Sie liegt auf dem Server, im Heimatverzeichnis des jeweiligen Benutzers Die Syntaxen von hosts.equiv und.rhost sind identisch Somit kann sich jeder mit einem Benutzeraccount Remotezugriff auf dem Server verschaffen!
Z u s a m m e n f a s s u n g T E L N E T u n d R S H Aufgrund der unsicheren Datenübertragung werden TELNET und RSH heutzutage nur noch selten verwendet RSH ist fast vollständig durch das im Folgenden vorgestellte SSH-Protokoll ersetzt worden TELNET eignet sich gut zum Testen von offenen Ports und hat daher noch eine gewisse Daseinsberechtigung
S i c h e r e R e m o t e z u g r i f f e Bezeichnet einen Weg der Datenübertragung, bei dem die Daten weder mitgelesen noch analysiert werden können Die Herkunft der Daten kann eindeutig identifiziert werden Veränderungen der Daten nach dem Absenden können festgestellt werden Es gibt keine hundertprozentige Sicherheit!
S e c u r e S h e l l ( S S H ) Die Secure Shell erlaubt den sicheren Datenaustausch zwischen zwei Computern über eine unsichere Leitung SSH wurde 1995 von Tatu Ylönen an der Universität Helsinki entwickelt (SSH-1) Sein Ziel war es, die unsicheren TELNETund RSH-Protokolle zu ersetzen Als Motivation für SSH gab Ylönen einen Angriff auf das Universitätsnetzwerk an
S e c u r e S h e l l ( S S H ) Da SSH-1 einige Schwachstellen hatte, erschien 1996 SSH-2, das zu SSH-1 inkompatibel ist Linux-Distributionen sowie Mac OS X liefern die freie SSH-Implementierung OpenSSH bereits in der Standardinstallation aus Für die Windows-Betriebssystemfamilie existieren diverse freie sowie etliche kommerzielle Versionen von SSH
F u n k t i o n s w e i s e v o n S S H - 2 Quelle: www.uni-koblenz.de/~vnuml/docs/ssh/ssh.pdf
S c h i c h t e n m o d e l l v o n S S H Transport Layer Stellt eine sichere Verbindung her Der Server identifiziert sich gegenüber dem Client mit einem verschlüsselten Zertifikat User Authentication Layer Benutzt die sichere Verbindung und wartet auf die Anmeldung des Clients Anmeldung erfolgt über ein Passwort, oder über ein auf dem Client und Server übereinstimmendes Schlüsselpaar
S S H - A n w e n d u n g s b e i s p i e l
B e s t a n d t e i l e v o n O p e n S S H SSH (SSH Client) & SSHD (SSH Daemon) SCP (Secure Copy) scp brief joe@example.com:/home/joe Kopiert brief vom lokalen Rechner ins Verzeichnis /home/joe auf example.com SFTP (Secure FTP) Ein sicherer FTP-Client und Server
V e r b r e i t u n g s g r a d d e r e i n z e l n e n S S H - V e r s i o n e n Quelle: http://www.openssh.org/usage/graphs/internet-versions.jpg
V e r b r e i t u n g s g r a d d e r S S H - I m p l e m e n t i e r u n g e n Quelle: http://www.openssh.org/usage/graphs/internet-type.jpg
M i s s i o n A c c o m p l i s h e d Quelle: http://www.openbsd.org/images/poster2.jpg
L o k a l e S u b r o u t i n e n Lokale Subroutinen (Funktionen, Methoden) sind Teile eines Computerprogramms Sie erfüllen spezielle Teilaufgaben des Programms (mehr oder weniger unabhängig) Subroutinen werden auf dem Call Stack des laufenden Programms gespeichert und befinden sich somit im selben Adressraum Pro Prozess gibt es nur einen Call Stack Im Hinblick auf Remote Procedure Calls kann man von Local Procedure Calls sprechen
C a l l S t a c k Quelle: http://en.wikipedia.org/wiki/image:call_stack_layout.svg
R e m o t e P r o c e d u r e C a l l ( R P C ) RPC ist eine Technik zur Erstellung von verteilten Client-Server-Anwendungen RPC ermöglicht die gemeinsame Nutzung von Subroutinen über Rechnergrenzen hinweg Die Idee hinter RPC reicht bis ins Jahr 1976 zurück RPC wird beispielsweise im Network File System von Sun Microsystems eingesetzt
F u n k t i o n s w e i s e v o n R P C Quelle: http://data.uta.edu/~ramesh/cse5306/zk-0475u.gif
J a v a R M I Als Java Remote Method Invocation bezeichnet man ein RPC-Framework für Java Im Gegensatz zum Standard-RPC arbeitet Java RMI mit Objekten Mit RMI kann man ein Objekt, das in einer entfernten Virtuellen Maschine läuft, aufrufen Durch die Plattformunabhängigkeit von Java lassen sich somit mächtige, verteilte Anwendungen erstellen
V o r t e i l e v o n J a v a R M I RPC ist sprachunabhängig, d.h der Funktionsumfang reduziert sich auf den kleinsten gemeinsamen Nenner Da RMI auf Java aufsetzt, bietet es automatische Speicherbereinigung, Plattformunabhängigkeit, usw...) RMI ist multithreaded, eignet sich also gut für parallele Rechenaufgaben
Q u e l l e n a n g a b e n # 1 The Telnet Protocol http://mars.netanya.ac.il/~unesco/cdrom/booklet/html/networking/node300.html Multifunktional: Telnet von Andreas Kneib www.linux-user.de/ausgabe/2004/06/070-telnet/index.html FreeBSD Manpages von rsh(d), rlogin(d) und host.equiv http://www.freebsd.org/cgi/man.cgi RLOGIN bei Wikipedia http://en.wikipedia.org/wiki/rlogin SSH, the Secure Shell The Definitive Guide Daniel J. Barrett and Richard E. Silverman
Q u e l l e n a n g a b e n # 2 Secure Shell (ssh) von Thorsten Bormer www.uni-koblenz.de/~vnuml/docs/ssh/ssh.pdf Remote Procedure Calls (RPC) http://www.cs.cf.ac.uk/dave/c/node33.html Remote Procedure Call bei Wikipedia http://en.wikipedia.org/wiki/remote_procedure_call Remote Method Invocation bei Wikipedia http://de.wikipedia.org/wiki/remote_method_invocation Java Remote Methode Invocation http://java.sun.com/javase/technologies/core/basic/rmi/whitepaper/index.jsp