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

Liste

.NET 2.0 (1)
.NET Allgemein (16)
.NET Fu (5)
ADO.NET (11)
Aprilscherz (3)
ASP Grundlagen (44)
ASP Tricks (83)
ASP.NET (44)
ASPIntranet.de (5)
C# (28)
Datenbank (44)
Dokumentation (4)
IIS 6.0 (1)
Komponenten (29)
Optimierung (10)
Server (21)
Sicherheit (34)
Tee Off (6)
VB.NET (6)
WAP (8)
Web Services (11)
XML (9)

RSS 2.0 - Die neuesten fünf Artikel auf AspHeute.com


 

Suchen





 

English Articles
Chinese Articles
Unsere Autoren
 
Link zu AspHeute
Impressum
Werben
Anfragen

Verzeichnissicherheit mit NTFS und IIS Authentifizierung

Geschrieben von: Christoph Wille
Kategorie: Sicherheit

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:

  • Im ISM die Authentication Method einstellen
  • Im Explorer das Verzeichnis auf die gewünschten User absperren

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.

Download des Codes

Klicken Sie hier, um den Download zu starten.

Verwandte Artikel

ASP-basierte Basic Authentication
Dateizugriff auf Netzlaufwerken
Der Microsoft Baseline Security Analyzer (MBSA) 1.0
Erstellung eines Intranets in ASP - Grundlagen
Formular-basierte Basic Authentication
Impersonation mit ASP.NET
Komponentenverwendung einschränken
On Demand Zugriffsrechte für Web Sites vergeben
Passwörter mit SHA1 absichern
Schritt-für-Schritt Debuggen von Sicherheitsproblemen
Show me the source - Includes aufgelöst
Web-basiertes Dateimanagement mit dem ASP FileMan

Wenn Sie jetzt Fragen haben...

Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten.

Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.

 

Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.

Bewerten Sie diesen Artikel
 Sehr gut   Nicht genügend  
   1  2  3  4  5  
 

  
   Für Ausdruck optimierte Seite

©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.