Auf Englisch lesen

Freigeben über


Sicherheitsbedenken bei der Nachrichtenprotokollierung

In diesem Thema wird beschrieben, wie Sie vertrauliche Daten vor der Bereitstellung in Nachrichtenprotokollen sowie von Ereignissen schützen können, die durch die Nachrichtenprotokollierung generiert werden.

Sicherheitsbedenken

Protokollierung vertraulicher Informationen

Windows Communication Foundation (WCF) ändert keine Daten in anwendungsspezifischen Headern und Textkörpern. WCF verfolgt darüber hinaus keine persönlichen Informationen in anwendungsspezifischen Headern oder Textdaten nach.

Wenn die Nachrichtenprotokollierung aktiviert ist, können persönliche Informationen in anwendungsspezifischen Headern, wie einer Abfragezeichenfolge, und in Textkörperinformationen, wie einer Kreditkartennummer, in den Protokollen sichtbar werden. Der Anwendungsbereitstellungsdienst ist für die Erzwingung der Zugriffssteuerung für die Konfigurations- und Protokolldateien verantwortlich. Wenn diese Art von Informationen nicht sichtbar sein soll, sollten Sie die Protokollierung deaktivieren oder einen Teil der Daten herausfiltern, wenn Sie die Protokolle freigeben möchten.

Mit den folgenden Tipps können Sie verhindern, dass der Inhalt einer Protokolldatei unbeabsichtigt verfügbar gemacht wird:

  • Stellen Sie sicher, dass die Protokolldateien sowohl in Webhost- als auch selfhost-Szenarien durch Zugriffssteuerungslisten (Access Control Lists, ACL) geschützt sind.

  • Wählen Sie eine Dateierweiterung aus, die nicht einfach mithilfe einer Webanforderung bereitgestellt werden kann. Die dateierweiterung .xml ist z. B. keine sichere Wahl. Sie können im Verwaltungshandbuch für Internetinformationsdienste (IIS) nachschlagen, um eine Liste der Erweiterungen anzuzeigen, die unterstützt werden können.

  • Geben Sie einen absoluten Pfad für den Speicherort der Protokolldatei an, der sich außerhalb des öffentlichen Verzeichnisses des Webhosts befinden soll, um zu verhindern, dass von einer externen Partei über einen Webbrowser auf sie zugegriffen wird.

Standardmäßig werden Schlüssel und personenbezogene Daten (PII) wie Benutzername und Kennwort nicht in Protokollen und aufgezeichneten Nachrichten protokolliert. Ein Computeradministrator kann jedoch das enableLoggingKnownPII-Attribut im machineSettings-Element der Machine.config-Datei verwenden, um Anwendungen, die auf dem Computer ausgeführt werden, das Protokollieren bekannter personenbezogener Informationen (PII) zu ermöglichen. Die folgende Konfiguration veranschaulicht, wie Dies geschieht:

XML
<configuration>
   <system.serviceModel>
      <machineSettings enableLoggingKnownPii="true"/>
   </system.serviceModel>
</configuration>

Ein Anwendungsbereitstellunger kann dann das attribut logKnownPii entweder in der App.config- oder Web.config Datei verwenden, um die PII-Protokollierung wie folgt zu aktivieren:

XML
<system.diagnostics>
  <sources>
      <source name="System.ServiceModel.MessageLogging"
        logKnownPii="true">
        <listeners>
                 <add name="messages"
                 type="System.Diagnostics.XmlWriterTraceListener"
                 initializeData="c:\logs\messages.svclog" />
          </listeners>
      </source>
    </sources>
</system.diagnostics>

Nur wenn beide Einstellungen true sind, ist die PII-Protokollierung aktiviert. Die Kombination aus zwei Schaltern ermöglicht die Flexibilität, bekannte PII für jede Anwendung zu protokollieren.

Wichtig

In .NET Framework 4.6.1 müssen die logEntireMessage und logKnownPii Flags auch auf true in der Web.config-Datei oder in der App.config-Datei festgelegt werden, um die PII-Protokollierung zu aktivieren, wie im folgenden Beispiel <system.serviceModel><messageLogging logEntireMessage="true" logKnownPii="true" …gezeigt.

Beachten Sie, dass beim Angeben von zwei oder mehr benutzerdefinierten Quellen in einer Konfigurationsdatei nur die Attribute der ersten Quelle gelesen werden. Die anderen werden ignoriert. Dies bedeutet, dass PII für die folgende App.configDatei nicht für beide Quellen protokolliert wird, obwohl die PII-Protokollierung für die zweite Quelle explizit aktiviert ist.

XML
<system.diagnostics>
   <sources>
      <source name="System.ServiceModel.MessageLogging"
              logKnownPii="false">
              <listeners>
                 <add name="messages"
                      type="System.Diagnostics.XmlWriterTraceListener"
                      initializeData="c:\logs\messages.svclog" />
              </listeners>
            </source>
      <source name="System.ServiceModel"
              logKnownPii="true">
              <listeners>
                 <add name="traces"
                      type="System.Diagnostics.XmlWriterTraceListener"
                      initializeData="c:\logs\traces.svclog" />
              </listeners>
      </source>
   </sources>
</system.diagnostics>

Wenn das <machineSettings enableLoggingKnownPii="Boolean"/>-Element außerhalb der Machine.config-Datei vorhanden ist, löst das System eine ConfigurationErrorsExceptionaus.

Die Änderungen sind nur wirksam, wenn die Anwendung gestartet oder neu gestartet wird. Ein Ereignis wird beim Start protokolliert, wenn beide Attribute auf truefestgelegt sind. Ein Ereignis wird auch protokolliert, wenn logKnownPii auf true festgelegt ist, aber enableLoggingKnownPiifalseist.

Der Systemadministrator und der Anwendungsbereitsteller sollten bei der Verwendung dieser beiden Optionen äußerst vorsichtig sein. Wenn die PII-Protokollierung aktiviert ist, werden Sicherheitsschlüssel und PII protokolliert. Wenn sie deaktiviert ist, werden vertrauliche und anwendungsspezifische Daten weiterhin in Nachrichtenkopfzeilen und -textkörpern protokolliert. Eine ausführlichere Diskussion über den Schutz der Privatsphäre und den Schutz von PII-Daten vor Offenlegung finden Sie unter Datenschutz.

Achtung

PII ist in falsch formatierten Nachrichten nicht versteckt. Solche Nachrichten werden ohne Änderung protokolliert. Zuvor erwähnte Attribute wirken sich nicht auf dies aus.

Benutzerdefinierter Ablaufverfolgungslistener

Das Hinzufügen eines benutzerdefinierten Ablaufverfolgungslisteners auf eine Ablaufverfolgungsquelle für Nachrichtenprotokollierung ist ein Recht, das dem Administrator vorbehalten sein sollte. Dies liegt daran, dass böswillige benutzerdefinierte Listener so konfiguriert werden können, dass Nachrichten remote gesendet werden, was zur Offenlegung vertraulicher Informationen führt. Wenn Sie außerdem einen benutzerdefinierten Listener zum Senden von Nachrichten an das Kabel konfigurieren, z. B. an eine Remotedatenbank, sollten Sie die ordnungsgemäße Zugriffssteuerung für die Nachrichtenprotokolle auf dem Remotecomputer erzwingen.

Ereignisse, die durch die Nachrichtenprotokollierung ausgelöst werden

Im Folgenden werden alle Ereignisse aufgelistet, die von der Nachrichtenprotokollierung erzeugt werden.

  • Nachrichtenprotokollierung: Dieses Ereignis wird ausgelöst, wenn die Nachrichtenprotokollierung in der Konfiguration oder über WMI aktiviert wird. Der Inhalt des Ereignisses lautet "Nachrichtenprotokollierung wurde aktiviert. Vertrauliche Informationen können klartext protokolliert werden, auch wenn sie auf dem Draht verschlüsselt wurden, z. B. Nachrichtentexte."

  • Nachrichtenprotokollierung aus: Dieses Ereignis wird ausgegeben, wenn Nachrichtenprotokollierung durch WMI deaktiviert ist. Der Inhalt des Ereignisses lautet "Nachrichtenprotokollierung wurde deaktiviert".

  • Log Known PII On: Dieses Ereignis wird ausgegeben, wenn die Protokollierung bekannter PII aktiviert ist. Dies geschieht, wenn das enableLoggingKnownPii-Attribut im machineSettings-Element der Machine.config Datei auf truefestgelegt ist, und das logKnownPii Attribut des source-Elements in der App.config- oder Web.config Datei auf truefestgelegt ist.

  • Protokollierung bekannter PII nicht erlaubt: Dieses Ereignis wird ausgelöst, wenn die Protokollierung von bekannten PII nicht erlaubt ist. Dies geschieht, wenn das logKnownPii-Attribut des source-Elements in der App.config- oder Web.config-Datei auf truefestgelegt ist, das enableLoggingKnownPii Attribut im machineSettings-Element der Machine.config Datei jedoch auf falsefestgelegt ist. Es wird keine Ausnahme ausgelöst.

Diese Ereignisse können im Tool "Ereignisanzeige" angezeigt werden, das im Lieferumfang von Windows ist. Weitere Informationen hierzu finden Sie unter Ereignisprotokollierung.

Siehe auch