Modul 7 – Internetsicherheit

* * *

Auf dieser Seite

Modulübersicht Modulübersicht
Zielsetzung Zielsetzung
Betrifft Betrifft
Verwendung dieses Moduls Verwendung dieses Moduls
Vorbereitung Vorbereitung
ASP.NET zum SQL Server ASP.NET zum SQL Server
ASP.NET über Remote Enterprise Services zum SQL Server ASP.NET über Remote Enterprise Services zum SQL Server
 Zusammenfassung  Zusammenfassung

Modulübersicht

Internetanwendungen zeichnen sich durch eine große Zielgruppe, viele potenzielle Einsatzbereiche und unterschiedliche Sicherheitsanforderungen aus. Das Spektrum reicht von Portalanwendungen, die keine Benutzerauthentifizierung erfordern, über Webanwendungen, die Inhalte für registrierte Benutzer bereitstellen, bis hin zu großen E-Commerce-Anwendungen, die eine umfassende Authentifizierung, Autorisierung, Kreditkartenüberprüfung und sichere Übertragung vertraulicher Daten über öffentliche und interne Netzwerke erfordern.

In diesem Modul werden die Ansätze zur Behebung von Problemen hinsichtlich Authentifizierung, Autorisierung und sicherer Kommunikation für internetbasierte Webanwendungen erläutert. Der Schwerpunkt liegt dabei auf den Anforderungen von zwei häufig verwendeten Architekturen von verteilten Anwendungen.

 

Zielsetzung

Themenbereiche:

  • Sichern Ihrer .NET-Internetanwendung

  • Erläutern der Sicherheitsrisiken und empfohlenen Lösungen in Verbindung mit einer ASP.NET-Webanwendung zur Kommunikation mit SQL Server 2000 in den folgenden Szenarios:

    • Direkte Kommunikation

    • Verwenden von Enterprise Services als Zwischensystem

  • Bestimmen der optimalen Vorgehensweise zur Implementierung von Authentifizierung, Autorisierung und sicherer Kommunikation in einer internetbasierten verteilten Webanwendung.

 

Betrifft

Die Informationen in diesem Modul gelten für folgende Produkte und Technologien:

  • Windows XP oder Windows 2000 Server (mit Service Pack 3) und höhere Betriebssysteme

  • Microsoft Internetinformationsdienste (IIS) 5.0 und höher

  • Microsoft Active Directory

  • .NET Framework Version 1.0 (mit Service Pack 2) und höhere Versionen

  • SQL Server 2000 (mit Service Pack 2) und höhere Versionen

 

Verwendung dieses Moduls

Empfehlungen für eine erfolgreiche Arbeit mit diesem Modul:

 

Vorbereitung

Als Entwickler von Internetanwendungen müssen Sie sicherstellen, dass die Anwendung geeignete Verteidigungsmechanismen verwendet sowie skalierbar, hochleistungsfähig und sicher ist. Hierzu zählen die folgenden Aufgaben:

  • Auswählen eines geeigneten Speichers für die Anmeldeinformationen der Benutzer, z. B. einer benutzerdefinierten Datenbank oder des Verzeichnisdienstes Active Directory®

  • Sicherstellen der Funktionsfähigkeit der Anwendung mithilfe von Firewalls

  • Übermitteln von Sicherheitsanmeldeinformationen über mehrere Ebenen der Anwendung hinweg

  • Durchführen von Autorisierungen

  • Sicherstellen der Datenintegrität und des Datenschutzes bei der Übertragung über öffentliche und interne Netzwerke

  • Sichern des Anwendungsstatus mit einer Datenbank

  • Sicherstellen der Integrität der Anwendungsdaten

  • Implementieren einer Lösung, die sich bei Bedarf für eine hohe Anzahl von Benutzern skalieren lässt

In diesem Modul werden die empfohlenen Techniken für Authentifizierung, Autorisierung und sichere Kommunikation anhand von zwei üblichen Internetanwendungsszenarios veranschaulicht:

  • ASP.NET zum SQL Server

  • ASP.NET über Remote Enterprise Services zum SQL Server

Hinweis: In einigen in diesem Modul beschriebenen Szenarios wird das Kennwort des Standardkontos ASPNET geändert, damit auf den Remotecomputern duplizierte Konten zu Netzwerk-Authentifizierungszwecken erstellt werden können. Hierfür ist eine Aktualisierung des <processModel>-Elements von Machine.config erforderlich. <processModel>-Anmeldeinformationen sollten in machine.config nicht als unverschlüsselter Text gespeichert werden. Verwenden Sie stattdessen das Dienstprogramm aspnet_setreg.exe, um verschlüsselte Anmeldeinformationen in der Registrierung zu speichern. Weitere Informationen finden Sie in Modul 8, "ASP.NET-Sicherheit", sowie im Artikel Q329290, "HOWTO: Use the ASP.NET Utility to Encrypt Credentials and Session State Connection Strings" (englischsprachig), in der Microsoft Knowledge Base.

 

ASP.NET zum SQL Server

In diesem Szenario mit zwei physischen Ebenen melden sich registrierte Benutzer mit einem Webbrowser sicher bei der webbasierten Anwendung an. Die ASP.NET-basierte Webanwendung stellt für den Datenabruf sichere Verbindungen zu einer Microsoft® SQL Server™-Datenbank her. Ein Beispiel dafür ist eine Portalanwendung, die registrierten Abonnenten Newsinhalte bereitstellt. Dieses Szenario ist in Abbildung 7.1 dargestellt.

Internetszenario ASP.NET-Webanwendung zu SQL Server

Abbildung 7.1
Internetszenario "ASP.NET-Webanwendung zu SQL Server"

Merkmale

Dieses Szenario weist folgende Merkmale auf:

  • Die Benutzer verwenden unterschiedliche Browsertypen.

  • Anonyme Benutzer können die nicht eingeschränkten Seiten der Anwendung aufrufen.

  • Die Benutzer müssen sich registrieren oder anmelden (über ein HTML-Formular), bevor sie eingeschränkte Seiten anzeigen können.

  • Die Anmeldeinformationen der Benutzer werden anhand einer SQL Server-Datenbank überprüft.

  • Alle in Datenbankabfragen verwendeten Benutzereingaben (z. B. die Anmeldeinformationen der Benutzer) werden überprüft, um die Gefahr von SQL Injection-Angriffen zu reduzieren.

  • Die Front-End-Webanwendung befindet sich in einem Perimeternetzwerk (auch als Demilitarized Zone (DMZ), also "demilitarisierte Zone" oder überwachtes Subnetz bezeichnet), das durch Firewalls vom Internet und dem internen Firmennetzwerk (sowie der SQL Server-Datenbank) getrennt ist.

  • Die Anwendung erfordert strenge Sicherheit, eine hohe Skalierbarkeit und eine detaillierte Überwachung.

  • Die Datenbank vertraut der Anwendung, dass die Benutzer ordnungsgemäß authentifiziert werden (d. h. die Anwendung führt die Datenbankaufrufe im Namen der Benutzer durch).

  • Die Webanwendung stellt die Verbindungen zur Datenbank unter Verwendung des ASP.NET-Prozesskontos her.

  • In SQL Server wird für die Datenbankautorisierung eine einzige benutzerdefinierte Datenbankrolle verwendet.

Sichern des Szenarios

In diesem Szenario zeigt die Webanwendung eine Anmeldeseite an, auf der die Anmeldeinformationen eingegeben werden können. Erfolgreich überprüfte Benutzer dürfen fortfahren, allen anderen wird der Zugriff verweigert. Die Datenbank führt die Authentifizierung anhand der ASP.NET-Standardprozessidentität durch. Dabei handelt es sich um ein Konto mit minimalen Rechten (d. h. die Datenbank vertraut der ASP.NET-Anwendung).

Tabelle 7.1: Übersicht über die Sicherheit

Kategorie

Detail

Authentifizierung

  • IIS ist so konfiguriert, dass der anonyme Zugriff möglich ist. Die ASP.NET-Webanwendung authentifiziert die Benutzer mit der Formularauthentifizierung, um die Anmeldeinformationen zu erfassen. Die Überprüfung erfolgt anhand einer SQL Server-Datenbank.
  • Die Kennwörter der Benutzer werden nicht in der Datenbank gespeichert. Stattdessen werden Kennworthashes mit Salt-Werten gespeichert. Der Salt-Wert mindert die Gefahr von Wörterbuchangriffen.
  • Für Verbindungen zur Datenbank wird die Windows®-Authentifizierung über ein Windows-Konto mit minimalen Rechten verwendet, mit dem die ASP.NET-Webanwendung ausgeführt wird.

Autorisierung

  • Das ASP.NET-Prozesskonto ist autorisiert, auf die Systemressourcen des Webservers zuzugreifen. Die Ressourcen werden durch Windows-ACLs geschützt.
  • Der Zugriff auf die Datenbank wird anhand der Identität der ASP.NET-Anwendung autorisiert.

Sichere Kommunikation

  • Sichern Sie die vertraulichen Daten, die zwischen den Benutzern und der Webanwendung gesendet werden, mit SSL.
  • Sichern Sie die vertraulichen Daten, die zwischen dem Webserver und dem Datenbankserver übertragen werden, mit IPSec.

Das Ergebnis

Aus Abbildung 7.2 geht die empfohlene Sicherheitskonfiguration für dieses Szenario hervor.

Empfohlene Sicherheitskonfiguration für das Internetszenario ASP.NET zu SQL Server

Abbildung 7.2
Empfohlene Sicherheitskonfiguration für das Internetszenario "ASP.NET zu SQL Server"

Schritte zum Konfigurieren der Sicherheit

Bevor Sie beginnen, sollten Sie sich über folgende Themen informieren:

Konfigurieren des Webservers
Konfigurieren von IIS

Schritt

Weitere Informationen

Aktivieren des anonymen Zugriffs für das virtuelle Stammverzeichnis der Webanwendung

Bearbeiten Sie die IIS-Authentifizierungseinstellungen mithilfe des IIS-MMC-Snap-Ins. Klicken Sie mit der rechten Maustaste auf das virtuelle Verzeichnis der Anwendung und wählen Sie dann Eigenschaften.

Klicken Sie auf die Registerkarte Verzeichnissicherheit und dann in der Gruppe Steuerung des anonymen Zugriffs und der Authentifizierung auf Bearbeiten.

Konfigurieren von ASP.NET

Schritt

Weitere Informationen

Zurücksetzen des Kennworts des ASPNET-Kontos (unter dem ASP.NET ausgeführt wird) auf ein bekanntes sicheres Kennwort

Hierdurch können Sie ein doppeltes lokales Konto (mit demselben Benutzernamen und Kennwort) auf dem Datenbankserver erstellen. Dieser Schritt ist erforderlich, damit das ASPNET-Konto auf Netzwerk-Authentifizierungsanforderungen vom Datenbankserver antworten kann, wenn die Verbindung mit der Windows-Authentifizierung hergestellt wird.

Wahlweise kann ein Domänenkonto mit minimalen Rechten verwendet werden (sofern die Windows-Authentifizierung durch die Firewall zulässig ist).
Weitere Informationen finden Sie unter "Prozessidentität für ASP.NET" in Modul 8, "ASP.NET-Sicherheit".

Bearbeiten Sie die Datei Machine.config im Verzeichnis %windir%\Microsoft.NET\Framework\v1.0.3705\CONFIG.

Legen Sie die Attribute für den Benutzernamen und das Kennwort des benutzerdefinierten Kontos im <processModel>-Element fest.

Standard

<!-- userName="Computer" password="AutoGenerate"
 -->

Wird zu

<!--
userName="registry:HKLM\SOFTWARE\YourSecureApp\
processModel\ASPNET_SETREG,userName"
password="registry:HKLM\SOFTWARE\YourSecureApp\
processModel\ASPNET_SETREG,password" -->

Beachten Sie, dass mit dem Dienstprogramm aspnet_setreg.exe ein verschlüsseltes Kennwort in der Registrierung gespeichert wurde.

Konfigurieren der webbasierten Anwendung für die Verwendung der Formularauthentifizierung (mit SSL)

Bearbeiten Sie die Datei Web.config im virtuellen Stammverzeichnis der Anwendung. Legen Sie das <authentication>-Element wie folgt fest:

<authentication mode="Formulare" >  
	<forms name="MyAppFormsAuth"
          loginUrl="login.aspx"
          protection="Alle"  
          timeout="20"         
          path="/" &gt;  
      </forms>
</authentication>

Weitere Informationen zum Verwenden der Formularauthentifizierung anhand einer SQL Server-Datenbank finden Sie unter "Vorgehensweise: Verwenden der Formularauthentifizierung mit SQL Server 2000" in diesem Handbuch.

Konfigurieren des SQL Server

Schritt

Weitere Informationen

Erstellen eines Windows-Kontos auf dem SQL Server-Computer, das mit dem ASP.NET-Prozesskonto übereinstimmt

Benutzername und Kennwort müssen mit dem benutzerdefinierten ASP.NET-Anwendungskonto bzw. mit ASPNET übereinstimmen, falls das Standardkonto verwendet wird.

Konfigurieren des SQL Server für die Windows-Authentifizierung

Erstellen eines SQL Server-Benutzernamens für das benutzerdefinierte ASP.NET-Anwendungskonto

Dadurch wird der Zugriff auf den SQL Server ermöglicht.

Erstellen eines neuen Datenbankbenutzers und Zuordnen des Benutzernamens zu diesem Datenbankbenutzer

Dadurch wird der Zugriff auf die angegebene Datenbank ermöglicht.

Erstellen einer neuen Datenbankbenutzerrolle in der Datenbank und Hinzufügen des Datenbankbenutzers zu dieser Rolle

Einrichten der Datenbankberechtigungen für die Datenbankrolle

Gewähren Sie minimale Rechte.
Weitere Informationen hierzu finden Sie in Modul 12, "Datenzugriffssicherheit".

Konfigurieren sicherer Kommunikationsvorgänge

Schritt

Weitere Informationen

Konfigurieren der Website für SSL

Siehe "Vorgehensweise: Einrichten von SSL auf einem Webserver" in diesem Handbuch.

Konfigurieren von IPSec zwischen Anwendungsserver und Datenbankserver

Siehe "Vorgehensweise: Verwenden von IPSec zum Sichern der Kommunikation zwischen zwei Servern" in diesem Handbuch.

Analyse

  • Die Formularauthentifizierung ist in diesem Szenario optimal, da die Benutzer über keine Windows-Konten verfügen. Die Anmeldeinformationen der Benutzer werden auf der Formularanmeldeseite erfasst. Der Anwendungscode muss die Anmeldeinformationen überprüfen. Es kann jeder beliebige Datenspeicher verwendet werden. Meist wird für die Speicherung der Anmeldeinformationen eine SQL Server-Datenbank verwendet, obwohl auch Active Directory eine Alternative sein kann.

  • Bei der Formularauthentifizierung müssen Sie die ersten Anmeldeinformationen mit SSL schützen. Das Formularauthentifizierungsticket (das bei nachfolgenden Webanforderungen vom authentifizierten Client als Cookie übertragen wird) muss ebenfalls geschützt werden. Sie können für alle Seiten SSL verwenden, um das Ticket zu schützen. Alternativ können Sie das Formularauthentifizierungsticket verschlüsseln, indem Sie das protection-Attribut des <Formulare>-Elements (Alle oder Verschlüsseln) konfigurieren und das Ticket mit der Verschlüsseln-Methode der FormsAuthentication-Klasse verschlüsseln.
    Über das protection="Alle"-Attribut wird festgelegt, dass beim Aufruf von FormsAuthentication.Encrypt durch die Anwendung das Ticket überprüft (Integritätsprüfung) und verschlüsselt werden soll. Rufen Sie diese Methode auf, wenn Sie das Authentifizierungsticket erstellen (normalerweise unter Verwendung des Ereignishandlers der Anmeldeschaltfläche der Anwendung).

      string encryptedTicket = FormsAuthentication.Encrypt(authTicket);
    

    Weitere Informationen zur Formularauthentifizierung und zur Ticketverschlüsselung finden Sie in Modul 8, "ASP.NET-Sicherheit".

  • ASP.NET wird unter dem lokalen Konto ASPNET mit minimalen Rechten ausgeführt.

  • Die URL-Autorisierung im Webserver ermöglicht nicht authentifizierten Benutzern, nicht eingeschränkte Webseiten aufzurufen, erzwingt jedoch bei eingeschränkten Seiten eine Authentifizierung.

  • Da keine Identitätswechsel aktiviert sind, erfolgt jeder Zugriff auf lokale oder Remoteressourcen durch die webbasierte Anwendung im Sicherheitskontext des Kontos ASPNET. Die Windows-ACLs für sichere Ressourcen sind entsprechend festzulegen.

  • Die Anmeldeinformationen der Benutzer werden anhand einer benutzerdefinierten SQL Server-Datenbank überprüft. In der Datenbank werden Kennworthashs mit Salt-Werten gespeichert. Weitere Informationen finden Sie unter "Datenzugriffssicherheit" in Modul 12, "Datenzugriffssicherheit".

  • Die Windows-Authentifizierung für SQL bedeutet, dass keine Anmeldeinformationen in Dateien auf dem Webserver gespeichert und über das Netzwerk übertragen werden müssen.

  • Wenn die Anwendung zurzeit die SQL-Authentifizierung verwendet, müssen Sie die Datenbankverbindungszeichenfolge sicher speichern, da sie Benutzernamen und Kennwörter enthält. Ziehen Sie DPAPI in Erwägung. Weitere Informationen finden Sie unter "Sicheres Speichern von Datenbank-Verbindungszeichenfolgen" in Modul 12, "Datenzugriffssicherheit".

  • Ein dupliziertes Windows-Konto auf dem Datenbankserver (das mit dem ASP.NET-Prozesskonto übereinstimmt) führt zu einem höheren Verwaltungsaufwand. Wenn ein Kennwort auf einem Computer geändert wird, muss es auf dem anderen Computer synchronisiert und aktualisiert werden. In einigen Szenarien können Sie den Verwaltungsaufwand mithilfe eines Domänenkontos mit minimalen Rechten reduzieren.

  • IPSec zwischen Webserver und Datenbankserver stellt den Schutz der Daten sicher, die von und zu der Datenbank gesendet werden.

  • SSL zwischen Browser und Webserver schützt die Anmeldeinformationen und andere sicherheitsrelevanter Daten wie Kreditkartennummern.

  • Wenn Sie eine Webfarm verwenden, müssen Sie sicherstellen, dass die Verschlüsselungsschlüssel, z. B. diejenigen, mit denen das Formularauthentifizierungsticket verschlüsselt wird (und die durch das <machineKey>-Element in Machine.config angegeben werden), auf allen Servern in der Farm übereinstimmen. Weitere Details zur Verwendung von ASP.NET in einem Webfarmszenario finden Sie in Modul 8, "ASP.NET-Sicherheit".

Nachteile

Die Anwendung muss zur Unterstützung von Überwachungsanforderungen die Identität des ursprünglichen Benutzers an die Datenbank übertragen. Die Identität des Benutzers kann mithilfe von Parametern gespeicherter Prozeduren übergeben werden.

Verwandte Szenarios

Formularauthentifizierung anhand der Active Directory

Die auf der Formularanmeldeseite erfassten Anmeldeinformationen der Benutzer können anhand einer Vielzahl von Speichern authentifiziert werden. Active Directory stellt eine Alternative zur Verwendung einer SQL Server-Datenbank dar.

Weitere Informationen

Weitere Informationen finden Sie unter "Vorgehensweise: Verwenden der Formularauthentifizierung mit der Active Directory" in diesem Handbuch.

.NET-Rollen für die Autorisierung

In dem oben beschriebenen Szenario werden nicht die verschiedenen Benutzertypen berücksichtigt, die auf die Anwendung zugreifen. So können z. B. auf einem Portalserver verschiedene Abonnementebenen eingerichtet sein, wie Standard, Premier oder Enterprise.

Wenn die Rolleninformationen im Benutzerspeicher (SQL Server-Datenbank) verwaltet werden, kann die Anwendung ein GenericPrincipal-Objekt erstellen, in dem Rollen- und Identitätsinformationen gespeichert werden können. Nachdem das GenericPrincipal-Objekt erstellt und (mit HttpContext.User) in den Kontext der Webanforderung eingefügt wurde, können Sie programmgesteuerte Rollenüberprüfungen zum Methodencode hinzufügen oder Methoden und Seiten mit PrincipalPermission-Attributen erweitern, um eine Rollenmitgliedschaft zu fordern.

Weitere Informationen

Verwenden eines anonymen Domänenkontos auf dem Webserver

In dieser Szenariovariante wird das standardmäßige anonyme Internetbenutzerkonto (ein lokales Konto namens IUSR_MACHINE) durch ein Domänenkonto ersetzt. Das Domänenkonto wird mit den zum Ausführen der Anwendung minimal erforderlichen Rechten konfiguriert (Sie können ohne Rechte beginnen und schrittweise Rechte hinzufügen). Sind mehrere webbasierte Anwendungen vorhanden, können Sie unterschiedliche Domänenkonten verwenden (für jede webbasierte Anwendung oder jedes virtuelle Verzeichnis ein separates Konto).

Aktivieren Sie mithilfe der folgenden Einstellung in der Datei web.config Identitätswechsel für die webbasierte Anwendung, damit der Sicherheitskontext des anonymen Domänenkontos von IIS an ASP.NET übermittelt wird:

<identity impersonate="true" />

Wenn die webbasierte Anwendung mit einer Remoteressource kommuniziert, z. B. einer Datenbank, müssen Sie dem Domänenkonto die erforderlichen Berechtigungen für die Ressource erteilen. Wenn die Anwendung beispielsweise auf ein Remotedateisystem zugreift, müssen die ACLs so konfiguriert werden, dass das Domänenkonto mindestens Lesezugriff erhält. Wenn die Anwendung auf eine SQL Server-Datenbank zugreift, muss das Domänenkonto mit einem SQL-Benutzernamen einem Datenbankanmeldenamen zugeordnet werden.

Da der Sicherheitskontext, der die Anwendung durchläuft, vom anonymen Konto stammt, muss die Identität des ursprünglichen Benutzers (die durch die Formularauthentifizierung erfasst wurde) auf Anwendungsebene von Ebene zu Ebene übertragen werden, beispielsweise über Parameter von Methoden und gespeicherten Prozeduren.

Weitere Informationen

 

ASP.NET über Remote Enterprise Services zum SQL Server

In diesem Szenario stellt ein Webserver, auf dem ASP.NET-Seiten ausgeführt werden, sichere Verbindungen zu Serviced Components her, die sich auf einem Remoteanwendungsserver befinden, der wiederum eine Verbindung zu einer SQL Server-Datenbank herstellt. Wie bei vielen Infrastrukturen von Internetanwendungen üblich, sind Webserver und Anwendungsserver durch eine Firewall getrennt, der Webserver befindet sich in einem Perimeternetzwerk. Die Serviced Components stellen sichere Verbindungen zu SQL Server her.

Betrachten Sie als Beispiel eine Internetbanking-Anwendung, die Benutzern vertrauliche Daten (z. B. ihren Kontostand) bereitstellt. Alle Banktransaktionen vom Client zur Datenbank müssen gesichert werden, die Datenintegrität ist von entscheidender Bedeutung. Es muss nicht nur der Datenverkehr vom und zum Benutzer gesichert werden, sondern auch der Datenverkehr von und zu der Datenbank. Dieses Szenario ist in Abbildung 7.3 dargestellt.

Internetszenario ASP.NET über Remote Enterprise Services zu SQL Server

Abbildung 7.3
Internetszenario "ASP.NET über Remote Enterprise Services zu SQL Server"

Merkmale

  • Die Benutzer verwenden unterschiedliche Browsertypen.

  • Anonyme Benutzer können die nicht eingeschränkten Seiten der Anwendung aufrufen.

  • Die Benutzer müssen sich registrieren oder anmelden (über ein HTML-Formular), bevor sie eingeschränkte Seiten anzeigen können.

  • Die Front-End-Webanwendung befindet sich in einem Perimeternetzwerk, das durch Firewalls vom Internet und dem internen Firmennetzwerk (sowie dem Anwendungsserver) getrennt ist.

  • Die Anwendung erfordert strenge Sicherheit, eine hohe Skalierbarkeit und eine detaillierte Überwachung.

  • Die webbasierte Anwendung verwendet SOAP für die Verbindung zu einer Webdienstschicht, die eine Schnittstelle zu den Serviced Components bereitstellt, die in einer Enterprise Services-Anwendung auf dem Anwendungsserver ausgeführt werden. SOAP wird aufgrund von Firewalleinschränkungen gegenüber DCOM bevorzugt.

  • SQL Server verwendet für die Autorisierung eine einzige benutzerdefinierte Datenbankbenutzerrolle.

  • Die Daten sind sicherheitsrelevant. Datenintegrität und Datenschutz müssen über das Netzwerk und in allen persistenten Datenspeichern gewährleistet sein.

  • Die Datenintegrität wird mithilfe von Enterprise Services-(COM+-)Transaktionen erzwungen.

Sichern des Szenarios

In diesem Szenario übernimmt der Webdienst die Anmeldeinformationen von einer Formularanmeldeseite und authentifiziert dann den Benutzer anhand einer SQL Server-Datenbank. Die Anmeldeseite verwendet SSL, um die über das Internet übertragenen Anmeldeinformationen der Benutzer zu schützen.

Die webbasierte Anwendung kommuniziert mit einem Webdienst, der eine Schnittstelle zu den in den Serviced Components implementierten Unternehmensdiensten bereitstellt. Der Webdienst vertraut der webbasierten Anwendung (im Perimeternetzwerk) und authentifiziert die ASP.NET-Prozessidentität. Die Identität des Benutzers wird mithilfe von Parametern von Methoden und gespeicherten Prozeduren durch alle Ebenen auf der Anwendungsebene weitergegeben. Diese Informationen werden zur Überwachung der Aktionen des Benutzers in allen Ebenen verwendet.

Tabelle 7.2: Sicherheitsmaßnahmen

Kategorie

Detail

Authentifizierung

  • Stellen Sie auf dem Webserver eine starke Authentifizierung bereit.
  • Authentifizieren Sie die Identität der Enterprise Services-Anwendung an der Datenbank.
  • IIS ist für den anonymen Zugriff konfiguriert, die webbasierte Anwendung authentifiziert die Benutzer mit der Formularauthentifizierung (anhand einer SQL Server-Datenbank).
  • Das virtuelle Verzeichnis des Webdienstes ist für die integrierte Windows-Authentifizierung konfiguriert. Die Webdienste authentifizieren die Prozessidentität der webbasierten Anwendung.
  • Für die Verbindung zur Datenbank wird die Windows-Authentifizierung verwendet. Die Datenbank authentifiziert das Windows-Konto mit minimalen Rechten, mit dem die Enterprise Services-Anwendung ausgeführt wird.

Autorisierung

  • Es wird das Modell der vertrauenswürdigen Subsysteme verwendet. Die Autorisierung der einzelnen Benutzer erfolgt nur in der Webanwendung.
  • Der Benutzerzugriff auf die Seiten im Webserver wird durch die URL-Autorisierung gesteuert.
  • Das ASP.NET-Prozesskonto ist autorisiert, auf die Systemressourcen des Webservers zuzugreifen. Die Ressourcen sind durch ACLs geschützt.
  • Die Berechtigungen in der Datenbank werden durch eine benutzerdefinierte Rolle gesteuert. Die Identität der Enterprise Services-Anwendung ist Mitglied dieser Rolle.
  • Das Enterprise Services-Prozesskonto ist autorisiert, auf die Systemressourcen des Anwendungsservers zuzugreifen. Die Ressourcen sind durch ACLs geschützt.

Sichere Kommunikation

  • Die vertraulichen Daten, die zwischen den Benutzern und der webbasierten Anwendung gesendet werden, werden mit SSL gesichert.
  • Die vertraulichen Daten, die zwischen dem Webserver und dem Webdienst gesendet werden, werden mit SSL gesichert.
  • Die vertraulichen Daten, die zwischen den Serviced Components und der Datenbank gesendet werden, werden mit IPSec gesichert.

Das Ergebnis

Aus Abbildung 7.4 geht die empfohlene Sicherheitskonfiguration für dieses Szenario hervor.

Empfohlene Sicherheitskonfiguration für das Internetszenario ASP.NET über Remote Enterprise Services zu SQL Server

Abbildung 7.4
Empfohlene Sicherheitskonfiguration für das Internetszenario "ASP.NET über Remote Enterprise Services zu SQL Server"

Schritte zum Konfigurieren der Sicherheit

Bevor Sie beginnen, sollten Sie sich über folgende Themen informieren:

Konfigurieren des Webservers
Konfigurieren von IIS

Schritt

Weitere Informationen

Aktivieren des anonymen Zugriffs für das virtuelle Stammverzeichnis der webbasierten Anwendung

Konfigurieren von ASP.NET

Schritt

Weitere Informationen

Zurücksetzen des Kennworts des ASPNET-Kontos (unter dem ASP.NET ausgeführt wird) auf ein bekanntes sicheres Kennwort

Hierdurch können sie ein doppeltes lokales Konto (mit demselben Benutzernamen und Kennwort) auf dem Datenbankserver erstellen. Dieser Schritt ist erforderlich, damit das ASPNET-Konto Authentifizierungsanforderungen vom Datenbankserver über das Netzwerk beantworten kann, wenn die Verbindung mit der Windows-Authentifizierung hergestellt wird.

Als Alternative kann in diesem Fall ein Domänenkonto mit minimalen Rechten verwendet werden (falls die Windows-Authentifizierung durch die Firewall zulässig ist).

Weitere Informationen finden Sie unter "Prozessidentität für ASP.NET" in Modul 8, "ASP.NET-Sicherheit".

Bearbeiten Sie die Datei Machine.config im Verzeichnis %windir%\Microsoft.NET\Framework\v1.0.3705\CONFIG.

Legen Sie die Attribute für den Benutzernamen und das Kennwort des benutzerdefinierten Kontos im <processModel>-Element fest.

Standard

<!-- userName="Computer" password="AutoGenerate" 
-->

Wird zu

<!--
userName="registry:HKLM\SOFTWARE\YourSecureApp\
processModel\ASPNET_SETREG,userName" 
password="registry:HKLM\SOFTWARE\YourSecureApp\
processModel\ASPNET_SETREG,password" -->

Beachten Sie, dass mit dem Dienstprogramm aspnet_setreg.exe ein verschlüsseltes Kennwort in der Registrierung gespeichert wurde.

Konfigurieren der ASP.NET-Webanwendung für die Formularauthentifizierung (mit SSL)

Bearbeiten Sie die Datei Web.config im virtuellen Stammverzeichnis der Anwendung. Legen Sie das <authentication>-Element wie folgt fest:

 
<authentication mode="Formulare" >  
	<forms name="MyAppFormsAuth"         
                loginUrl="login.aspx"          
	       protection="Alle"        
	       timeout="20"         
	       path="/" >  
         </forms>
 </authentication>

Weitere Informationen zum Verwenden der Formularauthentifizierung gegenüber einer SQL Server-Datenbank finden Sie unter "Vorgehensweise: Verwenden der Formularauthentifizierung mit SQL Server 2000" in diesem Handbuch.

Konfigurieren des Anwendungsservers
Konfigurieren von IIS

Schritt

Weitere Informationen

Deaktivieren des anonymen Zugriffs

Konfigurieren der integrierten Windows-Authentifizierung

IIS authentifiziert die ASP.NET-Prozessidentität der webbasierten Anwendung auf dem Webserver.

Konfigurieren von ASP.NET

Schritt

Weitere Informationen

Verwenden der Windows-Authentifizierung

Bearbeiten Sie die Datei Web.config im virtuellen Stammverzeichnis des Webdienstes. Legen Sie das <authentication>-Element wie folgt fest:

<authentication mode="Windows" />
Konfigurieren von Enterprise Services

Schritt

Weitere Informationen

Erstellen eines benutzerdefinierten Kontos mit minimalen Rechten für die Ausführung der Enterprise Services-Serveranwendung

Hinweis: Wenn Sie ein lokales Konto verwenden, müssen Sie auf dem Datenbankservercomputer auch ein dupliziertes Konto erstellen.

Konfigurieren der Enterprise Services-Anwendung für die Verwendung des benutzerdefinierten Kontos

Lesen Sie "Sicherheitskonfiguration" in Modul 9, "Enterprise Services-Sicherheit".

Aktivieren der rollenbasierten Zugriffsüberprüfung

Lesen Sie "Sicherheitskonfiguration" in Modul 9, "Enterprise Services-Sicherheit".

Hinzufügen einer einzelnen Enterprise Services-(COM+-)Rolle zur aufgerufenen Anwendung (z. B. Vertrauenswürdiger Webdienst)

Die vollständige Autorisierung der Endbenutzer wird von der webbasierten Anwendung durchgeführt. Der Webdienst (und die Serviced Components) lassen den Zugriff nur für Mitglieder der Rolle Vertrauenswürdiger Webdienst zu.

Hinzufügen des lokalen Kontos ASPNET zur Rolle Vertrauenswürdiger Webdienst

Lesen Sie "Sicherheitskonfiguration" in Modul 9, "Enterprise Services-Sicherheit".

Konfigurieren von SQL Server

Schritt

Weitere Informationen

Erstellen eines Windows-Kontos auf dem SQL Server-Computer, das mit dem Enterprise Services-Anwendungskonto übereinstimmt

Der Benutzername und das Kennwort müssen mit dem benutzerdefinierten Enterprise Services-Konto übereinstimmen.

Konfigurieren von SQL Server für die Windows-Authentifizierung

Erstellen eines SQL Server-Benutzernamens für das benutzerdefinierte Enterprise Services-Konto

Dadurch wird der Zugriff auf SQL Server ermöglicht.

Erstellen eines neuen Datenbankbenutzers und Zuordnen des Benutzernamens zu diesem Datenbankbenutzer

Dadurch wird der Zugriff auf die angegebene Datenbank ermöglicht.

Erstellen einer neuen Datenbankbenutzerrolle und Hinzufügen des Datenbankbenutzers zu dieser Rolle

Einrichten der Datenbankberechtigungen für die Datenbankrolle

Gewähren Sie minimale Rechte. Nähere Informationen finden Sie in Modul 12, "Datenzugriffssicherheit".

Konfigurieren sicherer Kommunikationsvorgänge

Schritt

Weitere Informationen

Konfigurieren der Website für SSL

Siehe "Vorgehensweise: Einrichten von SSL auf einem Webserver" in diesem Handbuch.

Konfigurieren von SSL zwischen Webserver und Anwendungsserver

Siehe "Vorgehensweise: Aufrufen eines Webdienstes über SSL" in diesem Handbuch.

Konfigurieren von IPSec zwischen Anwendungsserver und Datenbankserver

Siehe "Vorgehensweise: Verwenden von IPSec zum Sichern der Kommunikation zwischen zwei Servern" in diesem Handbuch.

Analyse

  • Die Formularauthentifizierung ist in diesem Szenario optimal, da die Benutzer über keine Windows-Konten verfügen. Die Anmeldeinformationen der Benutzer werden auf der Formularanmeldeseite erfasst. Der Anwendungscode muss die Anmeldeinformationen überprüfen. Es kann jeder beliebige Datenspeicher verwendet werden. Meist wird für die Speicherung der Anmeldeinformationen eine SQL Server-Datenbank verwendet, obwohl auch Active Directory eine Alternative sein kann.

  • Die webbasierte Anwendung wird unter dem lokalen Konto ASPNET mit minimalen Rechten ausgeführt.

  • Die URL-Autorisierung im Webserver ermöglicht nicht authentifizierten Benutzern, nicht eingeschränkte Webseiten aufzurufen, erzwingt jedoch bei eingeschränkten Seiten eine Authentifizierung.

  • Da keine Identitätswechsel aktiviert sind, erfolgt jeder Zugriff auf lokale oder Remoteressourcen durch die webbasierte Anwendung im Sicherheitskontext des Kontos ASPNET. Die ACLs müssen entsprechend konfiguriert werden.

  • Die Anmeldeinformationen der Benutzer werden anhand einer benutzerdefinierten SQL Server-Datenbank überprüft. In der Datenbank werden Kennworthashs mit Salt-Werten gespeichert. Weitere Informationen finden Sie unter "Authentifizieren von Benutzern anhand einer Datenbank" in Modul 12, "Datenzugriffssicherheit".

  • Die Windows-Authentifizierung für den SQL Server bedeutet, dass keine Anmeldeinformationen in Dateien auf dem Anwendungsserver gespeichert und über das Netzwerk übertragen werden müssen.

  • Ein dupliziertes Windows-Konto auf dem Datenbankserver (das mit dem Enterprise Services-Prozesskonto übereinstimmt) führt zu einem höheren Verwaltungsaufwand. Wenn ein Kennwort auf dem einen Computer geändert wird, muss es auf dem anderen Computer synchronisiert und aktualisiert werden. In einigen Szenarios besteht u. U. die Möglichkeit, den Verwaltungsaufwand mithilfe eines Domänenkontos mit minimalen Rechten zu reduzieren.

  • Wenn die Webanwendung den Webdienst aufruft, muss der Webdienstproxy mithilfe von DefaultCredentials (d. h. dem ASP.NET-Prozesskonto ASPNET) konfiguriert werden.

      proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
    

    Weitere Informationen finden Sie unter "Übergeben von Anmeldeinformationen an Webdienste zur Authentifizierung" in Modul 10, "Webdienstesicherheit".

  • SSL zwischen dem Webserver und der Webdienstschicht (die vor den Serviced Components auf dem Anwendungsserver liegt) stellt den Schutz der zwischen den beiden Servern gesendeten Daten sicher.

  • Die Enterprise Services-Anwendung ist für eine rollenbasierte Sicherheit auf Anwendungsebene konfiguriert. Die Konfiguration lässt nur den Zugriff durch das lokale ASPNET-Konto (mit dem der Webdienst ausgeführt wird) auf die Serviced Components zu.

  • IPSec zwischen Anwendungsserver und Datenbankserver stellt den Schutz der Daten sicher, die von und zu der Datenbank gesendet werden.

  • SSL zwischen Browser und Webserver schützt die Anmeldeinformationen und Bankkontendetails.

Nachteile

Die Anwendung muss die Identität des ursprünglichen Benutzers an die Datenbank übertragen, damit Überwachungsanforderungen unterstützt werden. Die Identität des Benutzers kann über Parameter gespeicherter Prozeduren übergeben werden.

Verwandte Szenarios

Formularauthentifizierung anhand der Active Directory

Die auf der Formularanmeldeseite erfassten Anmeldeinformationen der Benutzer können anhand einer Vielzahl von Speichern authentifiziert werden. Active Directory stellt eine Alternative zur Verwendung einer SQL Server-Datenbank dar.

Weitere Informationen

Weitere Informationen finden Sie unter "Vorgehensweise: Verwenden der Formularauthentifizierung mit Active Directory" in diesem Handbuch.

Verwenden von DCOM

Windows 2000 (SP3 oder SP2 mit QFE 18.1) oder Windows Server 2003 ermöglichen die Konfiguration von Enterprise Services-Anwendungen für die Verwendung eines statischen Endpunktes. Wenn der Client durch eine Firewall vom Server getrennt ist, bedeutet das, dass in der Firewall nur zwei Ports geöffnet werden müssen: Port 135 für RPC und ein Port für die Enterprise Services-Anwendung.

Diese Erweiterung von DCOM ermöglicht die Auswahl von DCOM als Kommunikationsprotokoll zwischen dem Webserver und dem Anwendungsserver. Eine Webdienstschicht ist in diesem Fall nicht erforderlich.

Wichtig: Wenn die Anwendung die Übertragung verteilter Transaktionen zwischen den beiden Servern erfordert, muss DCOM verwendet werden. Transaktionen können nicht über SOAP laufen. Im SOAP-Szenario müssen die Transaktionen durch die Serviced Components auf dem Anwendungsserver initiiert werden.

Weitere Informationen

Weitere Informationen finden Sie in Modul 9, "Enterprise Services-Sicherheit".

Verwenden von .NET Remoting

Remoting ist eine Alternative, wenn keine von Enterprise Services bereitgestellten Dienste benötigt werden, wie z. B. Transaktionen, Warteschlangenkomponenten, Objektpooling usw. .NET Remoting-Lösungen unterstützen auch den Netzwerklastenausgleich auf der mittleren Ebene. Beachten Sie Folgendes, wenn Sie .NET Remoting verwenden:

  • Optimale Leistung erreichen Sie, wenn Sie den TCP-Kanal und Host in einem Windows-Dienst verwenden. Beachten Sie, dass dieser Kanal standardmäßig keinen Authentifizierungs- und Autorisierungsmechanismus bereitstellt. Der TCP-Kanal ist für Szenarios mit vertrauenswürdigen Subsystemen konzipiert. Sie können mithilfe einer IPSec-Richtlinie einen sicheren Kanal einrichten und sicherstellen, dass nur der Webserver mit dem Anwendungsserver kommuniziert.

  • Wenn Authentifizierungs- und Autorisierungsprüfungen mit IPrincipal-Objekten erforderlich sind, sollten Sie die Remoteobjekte in ASP.NET verwalten und den HTTP-Kanal verwenden. Dadurch können Sie die Sicherheitsfunktionen von IIS und ASP.NET verwenden.

  • Das Remoteobjekt kann über die Windows-Authentifizierung Verbindungen zur Datenbank herstellen und die Prozessidentität des Hosts verwenden (entweder ASP.NET oder eine Windows-Dienstidentität).

Weitere Informationen

Weitere Informationen zur .NET Remoting-Sicherheit finden Sie in Modul 11, "Enterprise Services-Sicherheit".

 

Zusammenfassung

In diesem Modul wurde beschrieben, wie häufig vorkommende Internetanwendungsszenarios gesichert werden.

Informationen zu Intranet- und Extranetanwendungsszenarios finden Sie in Modul 5, "Intranetsicherheit", und Modul 7, "Extranetsicherheit".