Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs

Verzeichnissicherheit mit NTFS und IIS Authentifizierung

Geschrieben von: Christoph Wille
Kategorie: Sicherheit

This printed page brought to you by AlphaSierraPapa

Gerüchteweise habe ich gehört, daß Firmen hin und wieder den Zugang zu bestimmten Bereichen Ihrer Website absichern möchten. Um dies umzusetzen, bietet der Internet Information Server zusammen mit Windows NT/2000 einiges an Verzeichnissicherheit. Und diese Unterstützung ist dergestalt, daß man als ASP Programmierer mitbekommt, wer gerade berechtigtermaßen auf der Seite "surft".

In diesem Artikel stelle ich zwei Varianten der IIS Authentifizierung vor, nämlich Basic Authentication und NTLM (NT Lan Manager) Authentication. Der Vorteil von Basic ist daß jeder Browser sie versteht, wohingegen NTLM nur von Internet Explorer unterstützt wird. Der Nachteil von Basic ist die sehr mangelhafte Verschlüsselung (daher eigentlich nur auf SSL Sites empfehlenswert), wohingegen die Sicherheit von NTLM als mehr als ausreichend bezeichnet werden kann.

Ein Verzeichnis sichern

Grundsätzlich muß man zwei Tasks ausführen, um ein Webverzeichnis abzusichern:

Beginnen wir in der ISM. Auf die gewünschte Site, Verzeichnis oder Datei mit der rechten Maustaste klicken, und Eigenschaften auswählen. Der folgende Screenshot ist für ein Verzeichnis, allerdings haben alle Eigenschaftendialogboxen den Security Tab - entweder Site Security, Directory Security oder File Security.

Standardmäßig wäre Anonymous access und Integrated Windows authentication selektiert. Da wir aber Basic Authentication zuerst testen wollen, schalten Sie den anonymen Zugriff ab, und wählen Sie Basic. Sie werden bezüglich der mangelnden Sicherheit gewarnt, aber akzeptieren Sie diese Meldung. Schließen Sie alle Dialogboxen mit OK.

Das war das Setup auf der Seite des IIS. Nun kommen wir zur NT Sicherheit. Wählen Sie das zu sicherende Verzeichnis, gehen in die Eigenschaftsdialogbox und wählen Security. Hier wählen Sie Benutzeraccounts und Berechtigungen aus.

In diesem Beispiel habe ich nur Administratoren Zugriff gewährt. Für alle Ihre Versuche möchte ich Sie daran erinnern, sich nicht selbst auszusperren!

Ein weiterer Tip: geben Sie dem SYSTEM Account immer Vollzugriff. Es erspart vor allem unerfahrenen NT Administratoren einiges an Problemen, öffnet aber keine Sicherheitslücken.

Authentication Daten in ASP abfragen

Das Verzeichnis ist nun abgesichert. Wenn Sie eine Datei aufrufen, bekommen Sie folgende Dialogbox mit der Aufforderung zur Authentifizierung:

Ich habe hier bereits die URL einer Datei eingetippt, die ich für Sie vorbereitet habe. Diese liest alle relevanten Benutzerdaten aus:

<pre>
<%
strAuthType = Request.ServerVariables("AUTH_TYPE")
strUser = Request.ServerVariables("AUTH_USER")
strPassword = Request.ServerVariables("AUTH_PASSWORD")

Response.Write "Authentifizierungsmethode: " & strAuthType
Response.Write vbCrlf
Response.Write "Benutzername: " & strUser
Response.Write vbCrlf
Response.Write "Passwort (nur bei Basic): " & strPassword
%>
</pre>

Sie erhalten über die Request.ServerVariables Collection Zugriff auf die Art der Authentifizierung, sowie den Benutzernamen und das Passwort. Zu letzterem möchte ich ausdrücklich hinzufügen daß dieses nur bei Basic Authentication verfügbar ist - und bei keiner anderen!

Bei Ausführung sieht der Output wie folgt aus:

Die Sternchen sind übrigens von mir eingesetzt - mein Passwort ist mein Passwort!

Der Unterschied: NTLM

Im Prinzip kann man das exakt gleiche Script mit NTLM Authentication laufen lassen. Der Unterschied ist nur, daß das Passwort nicht geliefert werden kann - ein Feature von NTLM.

Allerdings habe ich das Script geringfügig umgebaut, um die LOGON_USER Variable zu demonstrieren. Diese liefert das gleiche Resultat wie AUTH_USER.

<pre>
<%
strAuthType = Request.ServerVariables("AUTH_TYPE")
strUser = Request.ServerVariables("AUTH_USER")
strLogonUser = Request.ServerVariables("LOGON_USER")

Response.Write "Authentifizierungsmethode: " & strAuthType
Response.Write vbCrlf
Response.Write "Benutzername: " & strUser
Response.Write vbCrlf
Response.Write "Logged-on User: " & strLogonUser
%>
</pre>

Der Output im Browser ist unterschiedlich - wir bekommen die Domain (oder Maschinennamen) zusätzlich zum Benutzernamen geliefert. Und außerdem ist die Method Negotiate, was allerdings nur IE richtig behandeln kann.

Authentifizierungsmethode: Negotiate
Benutzername: XITRA-STAGE\Administrator
Logged-on User: XITRA-STAGE\Administrator

Schlußbemerkung

Basic Authentication ist eine gangbare Methode für Sites, die zusätzlich mit SSL gesichert sind. NTLM ist die erste Wahl bei Intranets, die auf Windows + IE aufbauen, weil man damit auch einen Single Sign-on realisieren kann.

This printed page brought to you by AlphaSierraPapa

Download des Codes

Klicken Sie hier, um den Download zu starten.
http://www.aspheute.com/code/20001109.zip

Verwandte Artikel

ASP-basierte Basic Authentication
http:/www.aspheute.com/artikel/20010521.htm
Dateizugriff auf Netzlaufwerken
http:/www.aspheute.com/artikel/20010508.htm
Der Microsoft Baseline Security Analyzer (MBSA) 1.0
http:/www.aspheute.com/artikel/20020412.htm
Erstellung eines Intranets in ASP - Grundlagen
http:/www.aspheute.com/artikel/20010917.htm
Formular-basierte Basic Authentication
http:/www.aspheute.com/artikel/20010608.htm
Impersonation mit ASP.NET
http:/www.aspheute.com/artikel/20020123.htm
Komponentenverwendung einschränken
http:/www.aspheute.com/artikel/20020129.htm
On Demand Zugriffsrechte für Web Sites vergeben
http:/www.aspheute.com/artikel/20011207.htm
Passwörter mit SHA1 absichern
http:/www.aspheute.com/artikel/20010330.htm
Schritt-für-Schritt Debuggen von Sicherheitsproblemen
http:/www.aspheute.com/artikel/20011119.htm
Show me the source - Includes aufgelöst
http:/www.aspheute.com/artikel/20020503.htm
Web-basiertes Dateimanagement mit dem ASP FileMan
http:/www.aspheute.com/artikel/20010507.htm

 

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.