Dateizugriff, User und Host auf eine Freigabe erhalten

  • Hallo

    Ich arbeite gerade an einem Programm, dass die Zugriffe auf eine Freigabe in unserem Netzwerk protokollieren soll.

    Dank der Nutzerdefinierten Funktionen: _Net_Share_ConnectionEnum & _Net_Share_FileEnum erhalte ich auch schon ganz gute Daten.

    Allerding kann ich diese nicht miteinander in verbindung bringen, da _Net_Share_ConnectionEnum eine Connection-ID des angemeldeten Users (Username und Host) zurück gibt und _Net_Share_FileEnum eine Ressource-ID der geöffneten Datei + einen Usernamen zurück gibt.

    Da man sich aber nicht sicher sein kann, ob nun ein User nur einmal angemeldet ist oder ein anderer ebenfalls diesen Usernamen unrechtmäßig benutzt, muss das Programm/Funktion wohl die Connection-ID und die Ressource-ID in Verbindung bringen.

    Leider weiß ich bis jetzt noch nicht, wie ich das anstellen kann.

    Kann mir jemand helfen????

    Gruss Hannes

  • Wie wäre es mit einem (allgemein laufenden) Beispiel ?

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Ok, Beispiele:

    a) Anzeige aller geöffneten Dateien am Server:

    Spoiler anzeigen


    b) Anzeige aller User und Hosts, die auf die Freigabe zugreifen

    Spoiler anzeigen


    Alles für sich funktioniert super, nur eben will ich die Ergebnisse beider Funktionen (_Net_Share_ConnectionEnum & _Net_Share_FileEnum ) in Verbindung bringen.

    Ziel soll sein: Wir wollen eine Protokoll-Datei um zu sehen, ob sich jemand unrechtmäßig unter falschen Usernamen und mit nicht-rechtmäßig-erworbenen Passwort an der Freigabe anmeldet und dort Dateien sieht, die nicht für ihn gedacht sind.

    Dafür brauchen wir zB. die IP der Hosts, die auf die Datei zugreifen, da diese der User nicht ändern kann....

    Einmal editiert, zuletzt von hannes214 (17. Oktober 2008 um 13:32)

  • ich würde das direkt am Server protokollieren lassen

    oder ist die Freigabe auf einem Client OS ?

    Zitat

    Laughing Man

    "I thought, what I'd do was, I'd pretend I was one of those deaf-mutes"

  • Die Freigabe liegt auf einem Windows 2000 Server, allerdings kann man die Einträge im Ereignis-Protokoll unter Sicherheit (Überwachungsrichtlinien: aktiviert) nicht gerade als sehr übersichtlich bezeichnen....

    Aktiviert man Objektzugriffsversuche, werden alle Dateizugriffe protokolliert, d.h. auch jeder Zugriff des Servers auf seine Daten und Dateien...

    Aktiviert man Anmeldeereignisse, werden nur die Anmeldungen der Cliets-Hosts protokolliert, was so in etwa den Rückgabewerten von _Net_Share_ConnectionEnum entspricht....

    Für all dies gibt es natürlich auch teuere Programme, die die Ereignis-Protokolle auswerten, allerdings suche ich halt nach einer etwas preis-günstigeren und übersichtlicheren Lösung!

  • :pinch: hmm... ich hab wohl noch nicht genug betont, wie sehr sehr sehr kompliziert diese Ereignisse der Überwachungsrichtlinien sind..... 8|

  • Na ich war dann mal kreativ und hab Kompromisse gemacht:

    => Zwar kann ich einer geöffneten Datei nicht den User zuordnen, allerdings kann ich ja alle User mit diesem Usernamen anzeigen lassen...

    Folgendes ist dabei heraus gekommen:

    Spoiler anzeigen
  • Ich habe mir das nun auch mal angesehen. Ein eindeutige Zuordnung konnte ich auch nicht finden. Aber ggf. werden nicht alle Rückgabeparameter der "NetAPI32.dll-NetFileEnum"-Funktion ausgenutzt.
    Meiner Meinung nach, müsste doch die "geöffnete Datei" zu einer "Connection" zwischen dem Server und dem Arbeitsplatz gehören !

    Aber leider kann ich da auch nicht weiterhelfen...

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Doch.. es werden alle Rückgabeparameter ausgenutzt bzw. die Windows-Funktion "NetFileEnum" aus der NetAPI32.dll liefert nicht mehr....

    Das ganze hab ich mir schon genaustens im msdn - Microsoft Developer Network (http://msdn.microsoft.com/en-us/library/bb525378(VS.85).aspx) angeschaut...

    Auf jeden fall ist die Benutzung von Windows-APIs in AutoIT so einfach wie noch nie... (wenn ich da an andere Programmiersprachen denke, wo man erst ewig Vaiablen für die Rückgabewerte definieren muss etc...)

  • Vielleicht ein anderer Weg:

    Falls Windows Domäne:

    Gffs. ist eine Lösung, das der User sich nur an einer def. Workstation anmelden darf ( Richtlinie Active Directory ).

    Mitplotten der Anmeldung über Login Skript: echo %date% %time% %username% %computername% >> logdatei und dann Auswertung, ob sich ein User an mehreren Workstations angemeldet hat.

    !! Achtung !! Das auswerten von Log Dateien, auch Deine über ein AutoIt Skript, ist aus Sicht des Betriebsrates / Personalrates mit Vorsicht zu geniessen.

  • Wäre eine Lösung, wenn wir ne Domäne hätten, haben aber noch Novell 4.x ...

    Na so wie es jetzt läuft, geht es ja erstmal...