DevTrain

Autor: Hannes Preishuber

IIS Logfile per Browser auswerten

Nach Angriffen auf den IIS(Code Red und Nimda) sollten Sie sich öfters mit den Logfiles des IIS befassen. Im Logfile werden die Aktivitäten der Benutzer aufgezeichnet. Leider muss man dazu immer in das Verzeichnis WINNT/SYSTEM32/LOGFILES sehen und das geht oft nicht. Aber auch hierfür gibt es in und mit ASP eine elegante Lösung. Über die Details in den Logfiles wird an anderer Stelle (Artikel) referiert.

Um auf das Logfile auf ASP lesend zugreifen zu können, muss ein Authentifizierter Benutzer die ASP Seite aufrufen. Mit anderen Worten, wenn über Anonymous (= IUSR_Maschine) gekommen wird, tut sich nichts.

<%Set oLog = Server.CreateObject("MSWC.IISLog")
Datum="010106" 'Jahr Monat Tag
aLogFile = "E:winntsystem32logfilesw3svc1ex"& datum & ".log"
oLog.OpenLogFile aLogFile, 1, "pre",1,""
Do While not oLog.AtEndOfLog
   counter = counter + 1
   oLog.ReadLogRecord  
   With Response
      .write "<tr>"
      .write "<td>" & trim(oLog.BytesSent)&  "</td>"
      .write "<td>" & trim(oLog.ClientIP)&  "</td>"
      coo = oLog.Cookie
      if not isNull(coo) then
         coo = replace(coo, "=", " =")
         if instr(coo,"ASPSESSIONID") > 0 then        
            .write "<td width='150' nowrap='1'>" & mid(coo, instr(coo,"ASPSESSIONID"))&  "</td>"
         else
            .write "<td width='150' nowrap='1'>" & coo & "</td>"
         end if
      else
         .write "<td>&nbsp;</td>"
      end if
      .write "<td>" & trim(oLog.DateTime) & "</td>"
      .write "<td>" & trim(oLog.Method) & "</td>"
      .write "<td>" & trim(oLog.ProtocolStatus)&  "</td>"
      .write "<td>" & trim(oLog.URIStem) & "</td>"
      .write "<td>" & trim(oLog.UserAgent) & "</td>"
      .write "<td>" & trim(oLog.UserName)&  "</td>"
      .write "<td>" & trim(oLog.Win32Status) & "</td>"
      .write "<tr>"
    End With
Loop
%>

Sie können aus dem Logfile grafische Auswertungen generieren, aber auch z.B. ein User Tracking realisieren.

Im folgenden werden die Funktionen kurz erläutert. Die Logfiles des IIS enthalten genau diese Infos. Je nach Einstellung wird aber nicht alles aufgezeichnet.
AtEndOfLog
Gibt an, ob sämtliche Einträge aus der Protokolldatei gelesen wurden.
CloseLogFiles
Schließt alle offenen Protokolldateien.
OpenLogFile
Öffnet eine Protokolldatei für einen Lese- oder Schreibvorgang.
ReadFilter
Filtert Einträge aus der Protokolldatei nach Datum und Uhrzeit.
ReadLogRecord
Liest den nächsten verfügbaren Protokolleintrag aus der aktuellen Protokolldatei.
WriteLogRecord
Schreibt einen Protokolleintrag in die aktuelle Protokolldatei.
AtEndOfLog
Gibt an, ob sämtliche Einträge aus der Protokolldatei gelesen wurden.
CloseLogFiles
Schließt alle offenen Protokolldateien.
OpenLogFile
Öffnet eine Protokolldatei für einen Lese- oder Schreibvorgang.
ReadFilter
Filtert Einträge aus der Protokolldatei nach Datum und Uhrzeit.
ReadLogRecord
Liest den nächsten verfügbaren Protokolleintrag aus der aktuellen Protokolldatei.
WriteLogRecord
Schreibt einen Protokolleintrag in die aktuelle Protokolldatei.
BytesReceived
Gibt die empfangenen Byte an.
BytesSent
Gibt die gesendeten Byte an.
ClientIP
Gibt den Hostnamen des Clients an.
Cookie
Gibt den Cookie des Clients an.
CustomFields
Gbt ein Array mit benutzerdefinierten Headern an.
DateTime
Gibt das Datum und die Zeit in GMT (Greenwich Mean Time )an. Je nach Jahreszeit stimmt so die Zeit um +1 oder +2 Stunden nicht.
Method
Gibt die Art des Vorgangs an.
ProtocolStatus
Gibt den Protokollstatus an.
ProtocolVersion
Gibt die Version an.
Referer
Gibt die URL an von der der Surfer gekommen ist.
ServerIP
Gibt die IP-Adresse des Servers an.
ServerName
Gibt den Servernamen an.
ServerPort
Gibt die Anschlussnummer an.
ServiceName
Gibt den Dienstnamen an.
TimeTaken
Gibt die für die Ausführung insgesamt benötigte Zeit an.
URIQuery
Gibt die mit der Anforderung übermittelten Parameter an.
URIStem
Gibt den Ziel-URL an.
UserAgent
Daraus können Sie erkennen mit welchen Browser der Surfer Ihre Seiten ließt.
UserName
Gibt den Namen des Benutzers an, wenn er angemeldet ist.
Win32Status
Gibt den Win32-Statuscode an.

 


Erfasst am: 21.09.2001 - Artikel-URL: http://www.devtrain.de/news.aspx?artnr=627
© Copyright 2003 ppedv AG - http://www.ppedv.de