(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen.
Übersetzung
Original
Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

Absichern der ASP.NET-Konfiguration

Mit der von ASP.NET bereitgestellten Funktionalität lassen sich ein kompletter Server, eine ASP.NET-Anwendung und einzelne Seiten in den Unterverzeichnissen einer Anwendung konfigurieren. Zu den konfigurierbaren Features gehören Authentifizierungsmodi, Seitenzwischenspeicherung, Compileroptionen, benutzerdefinierte Fehler, Debug- und Ablaufverfolgungsoptionen usw. In diesem Thema wird beschrieben, wie beim Konfigurieren lokaler oder Remote-ASP.NET-Anwendungen die Sicherheit der Konfigurationsfeatures durch bewährte Vorgehensweisen optimiert werden kann. Weitere Informationen über das Absichern anderer Features von ASP.NET finden Sie in den im Abschnitt Siehe auch aufgeführten Themen.

Die Sicherheit der Anwendung kann zum einen durch die empfohlenen Vorgehensweisen für Konfiguration und Codeerstellung erhöht werden. Zum anderen ist wichtig, dass Sie den Anwendungsserver auf dem aktuellen Stand halten und immer die neuesten Sicherheitsupdates für Microsoft Windows und Microsoft Internetinformationsdienste (IIS) installieren. Dies gilt ebenso für Updates von Microsoft SQL Server und andere Mitgliedschaftsdatenquellen.

Ausführliche Informationen über empfohlene Vorgehensweisen zum Schreiben von sicherem Code und zum Absichern von Anwendungen finden Sie in dem Buch "Writing Secure Code" von Michael Howard und David LeBlanc sowie in den Anweisungen unter Microsoft Patterns and Practices.

Wichtiger HinweisWichtig

Das ASP.NET-Konfigurationssystem konfiguriert nur ASP.NET-Ressourcen und -Features. Verwenden Sie die Konfigurationsfeatures von IIS, um ASP.NET-fremde Ressourcen zu konfigurieren. Weitere Informationen über das Konfigurieren von IIS finden Sie unter Working with the Metabase (IIS 6.0) und IIS Metabase Property Reference.

In der folgenden Tabelle sind die Zugriffssteuerungslisten (Access Control Lists, ACLs) aufgeführt, die standardmäßig in der Datei Machine.config und der Stammdatei Web.config festgelegt werden. Beide Dateien befinden sich im Verzeichnis %SystemRoot%\Microsoft.NET\Framework\Version\CONFIG. Diese ACLs werden auch im Verzeichnis selbst festgelegt, enthalten jedoch für die Gruppe Hauptbenutzer Berechtigungen zum Ändern. Das Verzeichnis ist schreibgeschützt.

Windows-Konto

Berechtigungen

Administratoren

Vollzugriff

ASP.NET-Computerkonto (<server>\ASPNET)

Lesen und Ausführen

IIS_WPG (<server>\IIS_WPG)

Lesen und Ausführen

LOKALER DIENST

Lesen und Ausführen

NETZWERKDIENST

Lesen und Ausführen

Hauptbenutzer (<server>\Power Users)

Ändern

SYSTEM

Vollzugriff

Benutzer (<server>\Users)

Lesen und Ausführen

In der folgenden Tabelle sind die ACLs aufgelistet, die Sie für die Dateien Web.config sowie für die in configSource-Attributen aufgeführten Dateien festlegen sollten.

Windows-Konto

Berechtigungen

Administratoren

Vollzugriff

IIS_WPG (<server>\IIS_WPG)

Lesen und Ausführen

INTERAKTIV

Lesezugriff

Internetgastkonto (<server>\IUSR_<server>)

Lesen

NETWORK

Lesen

NETZWERKDIENST

Lesen

SYSTEM

Vollzugriff

Benutzer (<server>\Users)

Lesen und Ausführen

ASP.NET-Websiteverwaltungs-Tool -Konto

Speziell

Das ASP.NET-Konfigurationssystem berücksichtigt die für Konfigurationsdateien festgelegten ACLs unabhängig davon, auf welche Weise die Konfigurationseinstellungen bearbeitet werden. Weitere Informationen finden Sie unter Bearbeiten von ASP.NET-Konfigurationsdateien.

Wenn vertrauliche Informationen in der Konfigurationsdatei einer Anwendung gespeichert werden, müssen Sie die vertraulichen Werte mithilfe der geschützten Konfiguration verschlüsseln. Zu den besonders vertraulichen Informationen gehören die Verschlüsselungsschlüssel, die im machineKey-Konfigurationselement gespeichert sind, und die Verbindungszeichenfolgen für eine Datenquelle, die im connectionStrings-Konfigurationselement gespeichert sind. Weitere Informationen finden Sie unter Verschlüsseln von Konfigurationsinformationen mithilfe der geschützten Konfiguration.

Schützen von Schlüsselcontainern für die Konfigurationsverschlüsselung

Ein wesentlicher Aspekt bei der Verwendung eines Verschlüsselungsschlüssels ist der Schutz der Datei, in der der Schlüssel gespeichert wird. (Diese Datei wird auch als Container bezeichnet.) Sie müssen immer die Schutzebene beachten, die dem Container zugeordnet ist. Beachten Sie, dass der Container als reguläre Datei des Betriebssystems gespeichert wird und der Zugriff auf den Verschlüsselungsschlüssel durch die ACLs für die Datei gesteuert wird. Die ACLs können von dem Ordner geerbt werden, in dem die Datei erstellt wurde. Schlüsselcontainer mit dem lokalen Computer als Gültigkeitsbereich (useMachineContainer"true") werden unter %ALLUSERSPROFILE%\Application Data\Microsoft\Crypto\RSA\MachineKeys in einem verborgenen Ordner gespeichert.

Standardmäßig verfügt der Benutzer, der den Schlüsselcontainer erstellt hat, über uneingeschränkten Zugriff auf den Schlüssel. Der Zugriff anderer Benutzer (einschließlich der Gruppe Administratoren) auf den Container hängt von den ACLs ab, die für den Container festgelegt sind. Anderen Benutzern kann mithilfe des –pa-Schalters des ASP.NET IIS-Registrierungstools (ASP.NET IIS-Registrierungstool (Aspnet_regiis.exe)) Zugriff auf den Container gewährt werden. Für die Verschlüsselung oder Entschlüsselung mit dem angegebenen Schlüssel müssen Benutzer über die erforderlichen Zugriffsberechtigungen für den Schlüsselcontainer verfügen.

In einigen Fällen kann ein Benutzer ohne Administratorrechte dennoch einen Verschlüsselungsschlüssel erstellen. Dies ist möglich, wenn eine Anwendung eine Konfigurationsverschlüsselung anfordert und kein Schlüssel vorhanden ist. Wenn kein Container vorhanden ist, wird ein Container erstellt und eine Verschlüsselung ausgeführt.

In diesem Fall erstellt .NET Framework den erforderlichen Schlüssel und den zugehörigen Container mit den ACLs des aktuellen Benutzers. Ein mögliches Problem besteht darin, dass einem Benutzer mit Administratorrechten der Zugriff auf den Container des Verschlüsselungsschlüssels verweigert werden kann. Administratoren können wieder auf den Schlüssel zugreifen, indem sie den Besitz der physischen Datei für den oben erwähnten Ordner übernehmen. Die vorgeschlagenen Richtlinien erfordern einen Benutzer mit Administratorrechten, um die erforderlichen Schlüssel zu erstellen, bevor sie verwendet werden, sodass sie nicht zum Zeitpunkt der Verschlüsselung erstellt werden müssen.

In Umgebungen mit gemeinsamen Hostservern können böswillige Benutzer Konfigurationseinstellungen potenziell ändern, indem sie die Konfigurationsdateien direkt, über die Konfigurations-APIs oder über sonstige Verwaltungs- und Konfigurationstools bearbeiten. Sie können Änderungen an Ihrer Anwendungskonfiguration verhindern, indem Sie Konfigurationsabschnitte sperren. Fügen Sie dazu der Datei Machine.config oder einer beliebigen Konfigurationsdatei, die in der Hierarchie höher steht als die zu beschränkende Konfigurationsdatei, location-Elemente hinzu. Das location-Element wird verwendet, um für untergeordnete Konfigurationsdateien Änderungen an den Einstellungen zu verhindern. Weitere Informationen finden Sie unter Gewusst wie: Sperren von ASP.NET-Konfigurationseinstellungen und unter Gewusst wie: Konfigurieren von bestimmten Verzeichnissen mit Standorteinstellungen.

Die Remotekonfiguration ist standardmäßig deaktiviert. Bei aktivierter Remotekonfiguration wird der Benutzer auf DCOM-Ebene authentifiziert, und nur lokale Administratoren erhalten Lese- und Schreibzugriff auf Konfigurationsdaten. Weitere Informationen hierzu finden Sie unter Bearbeiten von ASP.NET-Remotekonfigurationsdateien.

Unabhängig vom Sicherheitstoken des aktuellen Benutzers wird der benutzerdefinierte Abschnittshandlercode unter Verwendung der Anmeldeinformationen des Hostprozesskontos ausgeführt. Bei Webszenarios ist dies unter Windows 2000 und Windows XP das <Server>\ASPNET-Konto, unter Windows Server 2003 das NETZWERKDIENST-Konto oder ein explizit konfiguriertes Benutzerkonto. Bei Clientszenarios ist dies die Identität des Prozesses, der gerade ausgeführt wird.

Bevor ein benutzerdefinierter Konfigurationsabschnittshandler aufgerufen wird und der Aufruf für .NET Framework keinerlei Vertrauenswürdigkeit besitzt, legt das Konfigurationssystem Berechtigungen fest. Der Aufruf wird mit dem Berechtigungssatz der Anwendung ausgeführt. Das ASP.NET-Konfigurationssystem behandelt das Verzeichnis %SystemRoot%\Microsoft.NET\Framework\Version\CONFIG als vertrauenswürdig, nicht jedoch Verzeichnisse, die sich weiter unten in der Hierarchie befinden.

Ein benutzerdefinierter Konfigurationsabschnittshandler muss Forderungsattribute für die Codezugriffssicherheit (CAS, Code Access Security) festlegen, um Berechtigungen zu erhalten. Weitere Informationen finden Sie unter ASP.NET-Codezugriffssicherheit oder Grundlagen der Codezugriffssicherheit.

Aktivieren einer Dateisperre für eine Konfigurationsdatei

Konfigurationsdateien können nur gesperrt werden, wenn mehrere Versuche unternommen wurden, sie zu speichern oder ein Dateihandle zu öffnen. Bösartige Benutzer können versuchen, die Datei Machine.config oder die Stammdatei Web.config zu sperren. Hierzu ist jedoch die volle Vertrauenswürdigkeit erforderlich, die in ASP.NET standardmäßig deaktiviert ist.

Lesen beliebiger Dateien mithilfe der Konfigurations-API

Die Klassen der Konfigurations-API können nur Verzeichnisse lesen, die Teil der Anwendungsdomäne sind, und nur Dateien, die über die Dateinamenerweiterung .config verfügen.

Wenn IIS eine Anforderung für eine ASP.NET-Anwendung erhält, gelten die IIS-Metabasiseinstellungen für die ASP.NET-Anwendung, unabhängig von den ASP.NET-Konfigurationseinstellungen für die Anwendung. Diese Einschränkung kann dazu führen, dass ASP.NET-Anwendungen keinen Zugriff durch die Benutzer zulassen oder über weniger restriktive Sicherheitseinstellungen verfügen.

Wenn z. B. die Sicherheitseinstellungen in der IIS-Metabasis so festgelegt sind, dass Seitenzugriff nur authentifizierten Benutzern gewährt wird, die Sicherheitseinstellungen der Datei Web.config jedoch anonymen Zugriff zulassen, wird anonymen Benutzern der Zugriff auf die Site verweigert. Um dieses Problem zu beheben, konfigurieren Sie die Webanwendung im IIS-Manager so, dass anonyme Benutzer zugelassen werden.

Informationen über das Absichern von IIS-Features finden Sie unter Security in IIS 6.0.

In den folgenden Abschnitten wird erläutert, wie Sie potenzielle Sicherheitsrisiken minimieren, die durch unerwartete Fehlermeldungen und Ereignisse entstehen können.

Ausnahmen

So verhindern Sie, dass vertrauliche Informationen unerwünschten Quellen verfügbar gemacht werden: Konfigurieren Sie die Anwendung so, dass entweder keine ausführlichen Fehlermeldungen angezeigt werden oder nur dann ausführliche Fehlermeldungen angezeigt werden, wenn der Webserver der Client ist. Weitere Informationen finden Sie unter customErrors-Element (ASP.NET-Einstellungsschema).

Ereignisprotokoll

Wenn der Server Windows Server 2003 ausführt, können Sie die Sicherheit der Anwendung verbessern, indem Sie das Ereignisprotokoll absichern. Außerdem verhindert die Festlegung von Parametern im Ereignisprotokoll bzgl. Größe, Beibehaltung und weiterer Features, dass ein indirekter Denial-of-Service-Angriff ausgeführt werden kann. Weitere Informationen zur Konfiguration von Ereignisprotokollen erhalten Sie, indem Sie in Windows-Hilfe und Support nach "Ereignisanzeige" suchen.

Systemüberwachung

Erfolgreiche und fehlgeschlagene Anmeldeversuche werden mit dem ASP.NET-Systemüberwachungsfeature protokolliert. In der Standardkonfigurationseinstellung werden demnach bei fehlgeschlagenen Anmeldeversuchen der Benutzername und andere Diagnoseinformationen im Anwendung-Ereignisprotokoll aufgezeichnet. Stellen Sie sicher, dass der Zugriff auf das Ereignisprotokoll eingeschränkt ist, damit diese Informationen vertraulich bleiben.

Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Vielen Dank für Ihr Feedback.

Community-Beiträge

HINZUFÜGEN
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
Anzeigen:
© 2014 Microsoft. Alle Rechte vorbehalten.