Dokumentation zum Projekt Fernsteuerung der Rechner der Staatlichen Berufsschule Roth SSL: 1. Erklärung: SSL ist die Abkürzung für "Secure Socket Layer." Dies sagt Ihnen zunächst wahrscheinlich noch nicht sehr viel. Das SSL-Protokoll sorgt dafür, daß beim Surfen im Web die Kommunikation zwischen dem Rechner zuhause und den Servern im Internet verschlüsselt erfolgt. Dies ist beim Einkaufen oder bei Bankgeschäften per Internet nicht nur zu begrüßen sondern sollte vom Kunden auch deutlich eingefordert werden! 2. SSL-Verbindung aufbauen: Der Browser fordert dann vom angesprochenen WWW-Server ein Zertifikat und den öffentlichen Schlüssel (Public Key) Ihrer Internet-Präsenz an. Schlüssel und Zertifikat werden vom Browser auf ihre Glaubwürdigkeit überprüft, dann wird, je nach Einstellungen, der Surfer gefragt, ob er diese sichere Verbindung aufbauen will - oder dies geschieht gleich automatisch. Der Browser prüft anhand der übermittelten Daten, ob er wirklich mit dem Server verbunden ist, der in der URL angegeben wurde. Ist das der Fall, zeigt der Browser dies durch das zugeklappte Bügelschloß an. Für jede Datenübermittlung handeln WWW-Server und Browser immer wieder neue Schlüssel zur sicheren Übertragung aus, so daß ein möglicher Angreifer immer nur einen viel zu kurzen Augenblick die Möglichkeit hat, einen Angriffspunkt zu finden. Selbst wenn er es einmal schaffen sollte, hätte er schon bei der nächsten Verbindung keinen Vorteil mehr. 3. Zertifikate: Zum SSL-Protokoll gehört das digitale Schüsselpaar aus dem öffentlichen und dem privaten Schlüssel des Servers. Ihren öffentlichen Schlüssel darf jeder kennen und verwenden, ihr privater Schlüssel bleibt auf ihrer Internetpräsenz und muß geheimgehalten werden. Der öffentliche enthält eine digitale Signatur, die bekräftigt, daß es sich um den Schlüssel des angegebenen Unternehmen und der darin enthaltenen Domain handelt 4. Quellen: http://www.pca.dfn.de http://www.openssl.org http://www.vhs-gm.de LDAP: 1. Was LDAP ist: LDAP - Definition LDAP ist die Abkürzung für das Lightweight Directory Access Protocol. Wie der Name sagt, unterstützt dieses Protokoll einen Verzeichnisdienst (Directory). LDAP wurde in den frühen 90ern an der University of Michigan implementiert. Es gibt verschiedene kommerzielle LDAP-Server. Mit OpenLDAP gibt es aber auch eine auf der Arbeit von Michigan basierende Open Source-Implementierung von LDAP. OpenLDAP wird standardmäßig bei Linux und BSD-Betriebssystemen verwendet und kann mit den meisten UNIX-Systemen genutzt werden. Wir werden OpenLDAP auch in unserem Workshop verwenden. 2. Active Directory Die Active Directory ist die Benutzerverwaltung unter Windows. In ihr stehen alle Benutzer die sich auf diesem, oder auch auf anderen Rechnern anmelden können. Im Klartext heißt das, es kann sich nur derjenige Anmelden, der auch in der Active Directory eingetragen ist. 3. LDAP ermöglicht einfach und schnell: Normalisierte Datenhaltung Zentrale Verwaltung der Informationen Konsistenz in der Schnittstelle zum User Konsistenz in den Richtlinien für das Netzwerkmanagement Konsistenz in den Security Policies 4. LDAP erreicht diese Ziele durch folgende Eigenschaften (Version 3): LDAP bietet ein Universaldesign für Verzeichnisdienste. LDAP basiert auf der Definition von sog. Schemas. Ein Schema ist ein objektorientiertes Konzept, das auch Vererbung unterstützt. Daher lassen sich aus Standardschemas, auf die man sich in der IETF geeinigt hat, nach eigenen Anforderungen spezialisierte Schemas ableiten. LDAP ist ein einfaches Protokoll. Ein wichtiger Aspekt bei LDAP als Nachfolger des komplizierten DAP war die Entwicklung eines simplen Protokolls, das einfach zu implementieren und leicht zu benutzen sein sollte. Das hat schon Früchte getragen: Die meisten Programmiersprachen unterstützen LDAP, genauso wie die meisten Betriebssysteme. LDAP erlaubt verteilte Architektur Durch Replikation ist es möglich, Teile oder auch den ganzen LDAP-Server auf physisch getrennten Rechnern mehrfach vorzuhalten. Über Referrals können LDAP-Server auf andere LDAP-Server zugreifen. Verzeichnisse kann man so in logischen Portionen auf verschiedenen LDAP-Servern verteilt halten, wobei jede Portion von einer anderen Institution gewartet wird. LDAP ermöglicht die Integration von Sicherheitskonzepten Hier bringt insbesondere die LDAP-Version 3 signifikante Verbesserungen. Für einen sicheren Zugang (Access) unterstützt LDAP Transport Layer Security (TLS), womit die gesamte Kommunikation zwischen Client und Server verschlüsselt ablaufen kann. Für eine sichere Authentifizierung kann unter LDAP auf den Simple Authentication and Security Layer (SASL) aufgesetzt werden. Für die Autorisierung wird sich höchstwahrscheinlich das ACL-Konzept durchsetzen. Unter ACL (Access Control List) versteht man eine Liste mit Zugangsrechten. Anhand dieser Liste entscheidet das Betriebssystem, welchen Zugriff eine Benutzer auf die einzelnen Ressourcen wie zum Beispiel ein Verzeichnis oder eine Datei hat. LDAP ist ein offener Standard Weil LDAP als offener Standard von der IETF (Internet Engineering Task Force) entwickelt wird, kann es von jedem Entwickler, jeder Firma und jedem Administrator genutzt werden. Man kettet sich nicht an ein proprietäres Protokoll oder einen Hersteller. Und auch hier zeigt sich ein typischer Vorteil offener Standards: Die LDAP-Benutzer bestimmen mit, in welche Richtung die Entwicklung vorangetrieben wird. LDAP Server müssen Auskunft über ihre Funktionalität und Schemas geben Die LDAP Spezifikation verlangt, dass LDAP-Clients von jedem LDAPServer verlangen können, die komplette Liste seiner Funktionen und Schemas einzusehen. Das ermöglicht die Abstimmung der Funktionalität im Client auf die Funktionen, die der Server bietet, und erlaubt bessere Interoperabilität über unterschiedliche Implementationen oder LDAP-Versionen hinweg. Extensions Zusätzlich zu dem Repertoire an vordefinierten Standardoperationen (wie "search" und "modify") erlaubt LDAP v3 außerdem so genannte "extended" Operations. Eine "extended" Operation nimmt einen Request als Argument an und gibt eine Response zurück. Der Request enthält einen Identifier, der den Request und die von ihm übergebenen Argumente eindeutig identifiziert. Die Response enthält die Ergebnisse aus der operation, die der Request gefordert hat. Ein solches Request-Response-Paar in einer "extended" Operation nennt man eine Extension. Beispiel: Es gibt eine Extension definieren um TLS zu starten ("Start TLS"). Vom Client kommt diese "Forderung" an den Server und veranlasst diesen, das TLS-Protokoll zu starten. Solche Extensions können standardisiert sein - also von der LDAP-Gemeinde abgesegnet - oder proprietär - also nur von einem speziellen Hersteller oder nur auf einem speziellen Server eingesetzt. Controls Eine andere Möglichkeit, neue Funktionalität hinzuzufügen, ist das Verwenden von Steuerbefehlen, so genanntenControls. LDAP v3 erlaubt es, das Verhalten einer beliebigen Operation zu modifizieren - eben durch ein solche Control. Mit einer Operation können beliebig viele Controls verschickt werden, und ebenso können beliebig viele Controls mit den Ergebnissen zurückgegeben werden. Man kann beispielsweise eine 'Sort Control' zusammen mit einer 'Search'-Operation versenden, die dem Server sagt, er soll die Suchergebnisse nach dem Attribut 'name' sortieren. Wie Extensions können Controls standardisiert oder proprietär sein. Internationalisierung LDAP benutzt für die interne Repräsentation von Strings UTF-8, so dass alle Sprachen benutzt werden können. 5. Quellen: http://www.openldap.org http://www.linux-magazin.de/Artikel/ausgabe/1998/09/LDAP/ldap.html http://www.rage.net/ldap FPING 1. Erklärung Mittels des Befehls FPING ist es unter Linux möglich, mehrere PC´s auf ihre Anwesenheit zu überprüfen. Dies geschieht, indem alle Rechner im angegebenen IPAdressbereich angepingt werden. Das ist in einem Bash-Script verwirklicht worden. Eventuell muss zuvor noch FPING installiert werden. Unter Debian mit dem Befehl: apt-get install FPING 2. Quelltext: #! /bin/sh ./fping -a -g 192.168.0.0/24 -c 1 2> ./temp$$ cat ./temp$$ | grep "min" > ./ausgabe$$ rm ./temp$$ pin=`cat -E ./ausgabe$$` rm ./ausgabe$$ echo $pin IFS="$" set $pin until [[ "$1" == "" ]] do temp=$1 IFS=" " set $temp ip=`echo -e "$1"` echo "<BR><a href='remote.php?IP=$ip'>$ip</a>" IFS="$" set $pin until [[ "$1" == "$temp" ]] do shift done shift done VNC: 1. Betriebssystem / Plattform Windows 9x/NT/2000 (i386) Linux (x86, Kernel 2.x) DEC ALPHA OSFI 3.2, MAC (PPC/68k - BETA Version !) Windows CE (Mips, SH3) Solaris (SPARC) 2. Installationsumfang Begriffsdefinitionen: VNC-Server Die Anwendung, die es ermöglicht auf den Rechner zuzugreifen. Diese Anwendung läuft in der Regel auf Netzwerk-CLIENTS VNC-Viewer Die Anwendung, die es einem Benutzer erlaubt, auf einen Rechner mit laufendem VNC-Server zuzugreifen. Es gibt jeweils eine Server- und eine Client-Version von VNC. Wobei es dabei unerheblich ist welches Betriebssystem auf dem Server oder Client läuft. Es müssen nicht beide Versionen (also Server und Viewer) auf einem Rechner installiert werden. Im Normalfall wird auf den Netzwerk-Clients nur der VNC-Server installiert. Der Supporter braucht im Normalfall nur den VNC-Viewer. Die Installation für den Server benötigt lediglich 0,5 MB auf der Festplatte, der Client kommt mit 172kB (!) aus. Da der VNC-Viewer auch als JavaApplet innerhalb eines InternetBrowsers laufen kann, muß ggf. das JDK installiert werden (mehrere MB !). Desweiteren wird ein funktionierendes Netzwerk über TCP/IP vorausgesetzt. Für die Namensauflösung muß entweder ein DNS-Server erreichbar sein, oder eine 'hosts'Datei auf dem VNC-Client-Rechner existieren. 3. VNC-Server Der VNC-Server kann entweder als Daemon (Dienst) im Hintergrund laufen oder explizit bei Bedarf (AppMode) gestartet werden. Die Einrichtung des Servers lässt verschiedene Betriebsmodi zu. So kann z.B. festgelegt werden, ob ein zugreifender Client (mit VNC-Viewer) auch Eingaben vornehmen kann, oder nur zuschaut (z.B. bei Seminaren hilfreich). Wie unter z.B. unter Linux/X11 üblich, kann ein Rechner mehrere Displays haben. Dieses wird auch unter VNC berücksichtigt. Der Zugriff auf den Rechner kann z.B. auf ein Display beschränkt werden, oder aber auch für alle Displays freigegeben werden (z.B. mehrere gleichzeitige Benutzer an einem Rechner unter X11). Beim Verbinden zu diesem Server muss deshalb auf dem Client auch eine Display-Nummer angegeben werden. Ein VNC-Server unter Windows hat dagegen immer die DisplayNummer '0'. Selbstverständlich kann der VNC-Server mit einem Paßwort gegen unbefugten Zugriff gesichert werden. Der VNC-Server teilt allerdings nicht mit, wenn auf den Rechner zugegriffen wird. Ebensowenig schert sich VNC um die Benutzerrechte des Betriebssystems. Der VNC-Client kann mit den Rechten des gerade angemeldeten Benutzers arbeiten, und sich z.B. unter Windows auch an- und abmelden. Deshalb sollte der Admin es tunlichst vermeiden den VNC-Server auf seinem Rechner/Account als Daemon laufen zu lassen (!). 4. VNC-Client Der VNC-Client kann auf drei Arten realisiert werden. Zunächst einmal wäre da der Client für das jeweilige Betriebssystem, der entweder aus dem Quellcode übersetzt wird, oder als lauffähige Binary vorliegt. Die zweite Variante ist der JAVA-Client, der aus einem Java-fähigen Browser heraus aufgerufen werden kann (nicht JavaScript !). Auf Systemen, die Java direkt ausführen können (JRE), kann der Java-Client auch ohne Browser gestartet werden. Grundsätzlich ist anzumerken, dass der native VNC-Client wesentlich schneller ist, als die Java-Lösung. Die Java-Lösung sollte also nur auf Rechnern eingesetzt werden, für die kein nativer Client verfügbar ist (oder noch nicht stabil läuft). Der Aufbau der Verbindung durch den nativen Client erfordert die Eingabe der IPNummer des VNC-Servers gefolgt von der Displaynummer (bei DNS-/HOSTSAuflösung funktioniert das natürlich auch über den Rechnernamen und die Displaynummer). Beispiel: 192.168.100.1:0 windose.mydomain.com:0 Die Display-Nummer wird durch einen Doppelpunkt von der IP-Adresse getrennt. Der Verbindungsaufbau über einen Web-Browser erfolgt über die Eingabe der Rechneradresse (http-Protokoll) und der Port- und Display-Nummer des Servers: Beispiel: http://192.168.100.1:5800/ http://windose.mydomain.com:5800/ (Port-Nummer (hier '5800') und Display-Nummer (hier '00') werden dabei zusammengefasst - für Display 03 wäre Port 5803 korrekt.) Für den Aufbau der Verbindung rein über Java muss z.B. auf einem Linux-System folgendes eingegeben werden: admin@support:~> java vncviewer HOST=192.168.100.1 PORT=5900 Daraufhin wird (unter X11) ein Fenster geöffnet. Bei der JAVA-Lösung wird also bei den Port-Nummern unterschieden! Browser: Port 5800 nur JAVA: Port 5900 Allen Versionen gleich ist die Paßwortabfrage, die direkt nach dem Aufbau der Verbindung angezeigt wird (sofern ein Paßwort vergeben wurde). Beim nativen VNC-Client (unter Windows 9x/NT/2000) ist ein Rechtsklick auf die Titelleiste des Fensters sehr hilfreich, da dort einige zusätzliche Funktionen angeboten werden. So sind dort z.B. folgende essentielle Befehle abrufbar: Windows-Tip: STRG-ALT-ENTF (um sich an NT / 2000 anzumelden) ConnectionOptions (dort kann z.B. eingestellt werden nur mit 8Bit-Farben zu arbeiten) Für Linux wurden mittlerweile auch Clients entwickelt (z.B. kvnc), die aber (noch) nicht zufriedenstellend laufen, so dass dort die Verwendung der Browser- oder der JAVA-Variante zu empfehlen ist. Durch den Einsatz von TCP/IP lassen sich natürlich auch Rechner über das Internet oder einen Router Fernwarten. 5. Leistung / Bewertung VNC erfordert viel Rechenleistung auf dem Client, besonders wenn mit der Browser oder Java-Version gearbeitet wird. Desweiteren ist eine möglichst schnelle Netzwerkanbindung (100Mbit) empfohlen, da VNC ohne Komprimierung arbeitet. Die Geschwindigkeit ist das einzige wirkliche Manko von VNC. Grundsätzlich ist bei 10Mbit, DSL oder einer ISDN-Verbindung der VNC-Client auf 8Bit-Farben umzustellen, damit die Geschwindigkeit im erträglichen Rahmen bleibt. Da es sich aber um kostenlose Software handelt kann man über das Geschwindigkeitsmanko aus zwei Gründen noch hinwegsehen: Eine (etwas) schnellere kommerzielle Software reißt ein ziemlich großes Loch in die Kasse, vor allem wenn es um größere Netzwerke geht. VNC ist für alle gängigen OS verfügbar. Im privaten Umfeld ist VNC erste Wahl! 6. Quelle http://www.uk.research.att.com/vnc/ http://www.tightvnc.com