IIS Authentication

Wenn Sie einen IIS betreiben, dann würde mich schon interessieren, welche Authentifizierungsmethode ein Client verwendet hat. Der IIS selbst bietet ja gleich mehrere Verfahren an und der Client kann sich dann eines aussuchen. Dabei unterscheiden sich die Verfahren durchaus bezüglich Sicherheit, Skalierung und Performance. Diese Seite beschreibt, wie Sie hier Licht ins Dunkel bringen.

Protokollierung aktivieren

Auf der Seite HTTP Authentication habe ich die technischen Hintergründe beschrieben. Dort lesen Sie aber auch, dass das Feld "Authorization" im HTTP-Request das verwendete Verfahren enthält. Dieses Feld wird per Default nicht in den IISLogs mit protokolliert aber dies können Sie sehr einfach ändern. Hier einmal an einem Beispiel eines Exchange 2016 Servers. Die Clients verbinden sich mit der "Default Web Site" der Frontend-Rolle und hier aktiviere ich unter Logging das Feld "Request Header".

Danach müssen die denn IIS entweder neu starten oder Sie warten, bis der IIS ein neues Logfile anfängt.

Hinweis: Wie Sie im folgenden Bild sehen, hat der IIS den Dateinamen verändert. Beachten Sie die bei einer eventuell vorhandenen automatischen Auswertung

Hier wurde die Änderung also am 23. 9 .2019 durchgeführt

Die LogFiles

Ich habe ihnen hier mal einen verkürzen Auszug aus einem Logfile geliefert. Maßgeblich ist hier die letzte Spalte:

#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) cs(Referer) sc-status sc-substatus sc-win32-status sc-bytes cs-bytes time-taken Request-Authorization
2019-09-23 14:28:48 192.168.100.33 POST /mapi/emsmdb/ MailboxId=xxx-xx-xx-xx-xxxxx@uclabor.de&CorrelationID=<empty>;&ClientRequestInfo=R:{x-x-x-x-x}:162;RT:Execute;CI:{xx-x-x-x-xx}:x;CID:{xxx.x-x-x-xxx}&cafeReqId=xxx.x-x-x-xxx; 443 UCLABOR\user1 192.168.100.5 Microsoft+Office/16.0+(Windows+NT+10.0;+Microsoft+Outlook+16.0.11901;+Pro) - 200 0 0 1530 1944 12828 Negotiate
2019-09-23 14:28:48 192.168.100.33 POST /mapi/emsmdb/ MailboxId=xxx-xx-xx-xx-xxxxx@uclabor.de&CorrelationID=<empty>;&ClientRequestInfo=R:{x-x-x-x-x}:848;RT:Execute;CI:{xx-x-x-x-xx}:x;CID:{xxx.x-x-x-xxx}&cafeReqId=xxx.x-x-x-xxx; 443 UCLABOR\user2 192.168.102.126 Microsoft+Office/16.0+(Windows+NT+10.0;+Microsoft+Outlook+16.0.11929;+Pro) - 200 0 0 1498 1095 10359 - Negotiate
2019-09-23 14:28:48 192.168.100.33 POST /mapi/emsmdb/ MailboxId=xxx-xx-xx-xx-xxxxx@uclabor.de&CorrelationID=<empty>;&ClientRequestInfo=R:{x-x-x-x-x}:852;RT:Execute;CI:{xx-x-x-x-xx}:x;CID:{xxx.x-x-x-xxx}&cafeReqId=xxx.x-x-x-xxx; 443 UCLABOR\user2 192.168.102.126 Microsoft+Office/16.0+(Windows+NT+10.0;+Microsoft+Outlook+16.0.11929;+Pro) - 200 0 0 1514 1107 15 - Basic
2019-09-23 23:58:25 192.168.100.33 POST /Powershell PSVersion=5.1.14409.1018&sessionID=Version_15.1_(Build_1712.0)=rJqNiZqNgbG+qLqnzsnRkZqLnouIkI2U0Zuagc7Gy83Pyc3IycaBzc/OxtLPxtLNy6vPz8XPx8XNyg==&CorrelationID=<empty>;&cafeReqId=45604da9-245c-4702-b2a0-fe751a5a0f35; 80 - 192.168.100.59 Microsoft+WinRM+Client - 0 0 64 0 2627 403 - -
2019-09-23 23:58:25 192.168.100.33 POST /Powershell PSVersion=5.1.14409.1018&sessionID=Version_15.1_(Build_1712.0)=rJqNiZqNgbG+qLqnzsnRkZqLnouIkI2U0Zuagc7Gy83Pyc3IycaBzc/OxtLPxtLNy6vPz8XPx8XNyg==&CorrelationID=<empty>;&cafeReqId=45604da9-245c-4702-b2a0-fe751a5a0f35; 80 UCLABOR\admin1 192.168.100.59 Microsoft+WinRM+Client - 0 0 64 0 2627 484 - Kerberos
2019-09-23 23:58:25 192.168.100.33 POST /Powershell PSVersion=5.1.14409.1018&sessionID=Version_15.1_(Build_1712.0)=rJqNiZqNgbG+qLqnzsnRkZqLnouIkI2U0Zuagc7Gy83Pyc3IycaBzc/OxtLPxtLNy6vPz8XPx8XNyg==&CorrelationID=<empty>;&cafeReqId=5057ed10-4790-487f-a0e8-63ed74cdb8bd; 80 UCLABOR\admin1 192.168.100.59 Microsoft+WinRM+Client - 200 0 0 1620 5503 31 - Kerberos

Dort sehen sie schon mal das Authentifizierungsverfahren und dass IIS z.B. zwischen Basic, Negotiate und Kerberos unterscheiden. Wobei Negotiate noch nichts darüber aussagt, was drinnen verwendet wurde. Das kann neben NTLM eben auch Kerberos sein. Aber es ist ein erster Ansatz. Alarmieren sollten Sie in einem internen Netzwerk natürlich Zugriffe per "Basic Auth", die nicht per HTTPS verschlüsselt wurden.

Auswertung

Ein solches IISLog lässt sich natürlich mit unterschiedlichsten Tools auswerten. Schon eine einfache PowerShell reicht, um die Datei zu lesen. Wobei Sie hier den Header mitgeben müssen, damit Import-CSV die Spalten zuordnen kann. Oder sie editieren die ersten Zeile, indem Sie das "#Fields: " entfernen. Über "Group-Object" könnten Sie dann nach dem Feld "Request-Authorization" die Zeilen zusammenfassen und so schnell einen Überblick bekommen, welche Authentifizierungsverfahren genutzt werden.

Natürlich sind weitere Filter und Gruppierungen nach Benutzernamen, Client-Subnetz etc. möglich. DAS hängt stark von ihren Anforderungen ab.

Weitere Links