PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Identifizieren des Clients



xeno
18-07-2003, 17:07
Hi Leute,
ich suche eine Möglichkeit zu identifzieren des Clients übers Internet. Ich weiß das sich darüber bestimmt schon viele Leute den Kopf zerbrochen haben, ich auch.
Aber eine richtige und praktikable Idee ist mir bisher noch nicht einfallen.

Hier einmal die Situation:
Webserver und verschiedene Clienst, ich will das nur bestimmte Clients, die ich festlegen kann auf diese Seite zugreifen können. Das heißt ich brauche irgendeine Identifizierung die diesen Rechner genau erkennt. Per IP-Adresse ist das mist, die Mac-Adresse scheine ich ja nicht wirklich auslesen zu können.

Jetzt wollte ich mal um eure Hilfe bitten. Einfach um auch mal eure Ideen zu hören.

Ich bin für jeden Vorschlag offen, außer für irgendwelche dummen Kommentare.

Gruß
Xeno

pitu
18-07-2003, 17:30
Das beste was mir dazu einfaellt ist, dass du ein VPN aufbaust, und dann nur Rechner aus dem internen netz zulaesst.

gruss,
pitu

xeno
18-07-2003, 17:42
Hi,
danke für die Idee.
Problem ist bloß das es sich um eine Webanwendung handelt, in PHP geschrieben. Ich brauche also irgendeine Möglichkeit den Client zu identifizieren.

Ohne dabei ein Script oder so etwas verwenden zu müssen.
Eine Idee die ich noch habe ist ein Programm das auf dem Client läuft und das über Username und Passwort beim Einloggen die IP des Rechners sendet und damit die Webanwendung überhaupt sichtbar macht. Das Programm könnte ja in Java geschrieben werden um es Plattform unabhängig zu machen.

Das Programm sendet die IP zusammen mit dem Username und dem Passwort. Das wird nun in eine Datenbank eingetragen und läßt damit diesen Rechner bzw. Router überhaupt auf diese Seite, wo sich der User erneut identifizieren muss. Beim benden des Programmes sendet das Programm noch ein Terminierungssignal, welches den Eintrag aus der Datenbank wieder löscht.
Problem könnte es da nur geben wenn ein Proxy als Internetverbindung existiert.

Das Programm müsste z.b. auf einen Port auf dem Server zugreifen. An diesem Port lauscht ein Daemon und nimmt die Daten entgegen. So kann eben nur jemand mit diesem Programm die Webanwendung nutzen.

Was hälst du von dieser Idee. Denke ich zu kompliziert?

pitu
18-07-2003, 18:02
Deswegen sagte ich ja VPN.

Der client Rechner baut eine Verbindung zum Server auf. Anhand der uebertragenen schluessel identifiziert sich der Rechner, unabhaengig von einer IP.

Wenn du nun deinen Webbrowser oeffnest, dann kannst du ueber den tunnel auf den Webserver zugreifen, der Ansonsten von aussen nicht zu sehen ist, damit ahebn nur Personen zugriff auf den Server, die in besitz eines gueltigen schluessels sind.

Die Alternative ist eine ssl verbindung und eine ganz normale authentifizierung. Wenn sich der Client am Webserver authentifiziert bekommt er vom Server eine SessionID zugewiesen. Diese traegst du in eine DB ein. Der User mit dieser SessionID kann nun immer auf den Rechner zugreiffen.

Zum schluss logt er sich aus, wenn nicht, gibts ein Timeout, damit die Session nicht aus sicherheitsgruenden zu lange offen ist.

gruss,
pitu

xeno
18-07-2003, 18:09
Hm,
also VPN kommt nicht in Frage, weil der Server bei 1und1 steht und die das glaube ich mal nicht wirklich zulassen.

Die 2. Idee habe ich schon längst. Das ganze "Programme" ist ja schon fertig.
Login nur über Username und Passwort usw. Per SessionID etc.
Aber mir reicht das nicht. Ich will das nur bestimmte Leute überhaupt die Möglichkeit haben diese Loginseite zu sehen.

Da sich ja aber die IP-Adresse des Routers oder des PC immer ändert. Dachte ich eben an ein Programm, was nicht jeder Arsch hat, sorry für die Ausdrucksweise. Und diese Programm übermittelt die IP des Rechners auf dem es ausgeführt wird.
Ein Java Applet ist da auch Mist, weil es wieder für jeden erreichbar wird. Also muss es etwas sein, was nur ein paar Leute haben. OK Softwar kannst du auch weitergeben, aber wenn du gar nicht weißt das du die Software brauchst hast du eben ein Problem überhaupt an die Seite zu kommen.

Verstehst du was ich meine.

Ich bin dir aber echt dankbar für deine Ideen.

anda_skoa
18-07-2003, 18:29
Wenn die Identifizierungsdaten übertragen werden müssen, muss das ohnehin verschlüsselt geschehen, weil sonst jemand die Daten abfangen kann und sich selbst als einer der Berechtigten ausgeben kann.

Daher brauchst du mindestens SSL.
Ich gehe davon aus, dass sich SSL serverseitig so konfigurieren lässt, das es nur connects von bestimmten Zertifikaten annimmt, also bräuchten dann die berechtigten Clients nur mehr so ein Zertifikat, theoretisch alle das selbe.

Oder man macht etwas VPN ähnliches über einenen SSH Tunnel. Geht wahrscheinlich am schnellsten.

Ciao,
_

tomes
19-07-2003, 13:15
Also,
1. damit andere von der "Webseite" nichts sehen, wuerde ich iptables vorschlagen. Webserver-Port fuer alle gesperrt.
2. Kleines (Perl)-Proggy meldet sich per ssh, mit key (kein Username, kein Password) am Server an.
3. Diese stoest ein set-uid (Perl)-Script an, welches die uebermittelte IP auf Port 80 freigibt.
4. Rechner mit der IP kann sich einloggen.
5. Nach beenden der Verbindung wird die IP vom Proggy (Punkt 2.) geloescht oder wenn keine Verbindung mehr besteht (lsof) automatisch geloescht.

Oder Proggy traegt IP in die .htaccess ein, waehre ja auch ne Moeglichkeit.

So ungefaehr koennte ich es mir vorstellen.
Das ssh-proggy muss nicht unbedingt Perl sein ;-) ( Ist nur mein Liebling), koennte man auch in c/c++ schreiben und ein exe erstellen, oder oder oder.

T;o)Mes

P.S.: Zwecks Sicherheit, muesse auf dem Server natuerlich noch einiges passieren (User, Groups, SBash usw.)