Beveiligingsproblemen voor berichtenlogboekregistratie
In dit onderwerp wordt beschreven hoe u gevoelige gegevens kunt beveiligen tegen blootstelling in berichtlogboeken, evenals gebeurtenissen die worden gegenereerd door berichtregistratie.
Beveiligingsproblemen
Logboekregistratie van gevoelige informatie
Windows Communication Foundation (WCF) wijzigt geen gegevens in toepassingsspecifieke headers en hoofdteksten. WCF houdt ook geen persoonlijke gegevens bij in toepassingsspecifieke headers of hoofdtekstgegevens.
Wanneer logboekregistratie van berichten is ingeschakeld, kunnen persoonlijke gegevens in toepassingsspecifieke headers, zoals een queryreeks, en informatie in de hoofdtekst, zoals een creditcardnummer, zichtbaar worden in de logboeken. De toepassings deployer is verantwoordelijk voor het afdwingen van toegangsbeheer voor de configuratie- en logboekbestanden. Als u niet wilt dat dit soort informatie zichtbaar is, moet u logboekregistratie uitschakelen of een deel van de gegevens uitfilteren als u de logboeken wilt delen.
Met de volgende tips kunt u voorkomen dat de inhoud van een logboekbestand onbedoeld wordt weergegeven:
Zorg ervoor dat de logboekbestanden worden beveiligd door ACL's (Access Control Lists), zowel in webhost- als zelfhostscenario's.
Kies een bestandsextensie die niet eenvoudig kan worden verwerkt met behulp van een webaanvraag. De bestandsextensie .xml is bijvoorbeeld geen veilige keuze. U kunt de iis-beheerhandleiding (Internet Information Services) controleren om een lijst met extensies weer te geven die kunnen worden aangeboden.
Geef een absoluut pad op voor de locatie van het logboekbestand. Deze moet zich buiten de openbare map van de webhost bevinden om te voorkomen dat het wordt geopend door een externe partij via een webbrowser.
Standaard worden sleutels en persoonlijke gegevens (PII) zoals gebruikersnaam en wachtwoord niet vastgelegd in traceringen en vastgelegde berichten. Een computerbeheerder kan echter het kenmerk enableLoggingKnownPII
in het machineSettings
element van het Machine.config-bestand gebruiken om toe te staan dat toepassingen die op de computer worden uitgevoerd, bekende persoonsgegevens registreren. In de volgende configuratie ziet u hoe u dit doet:
<configuration>
<system.serviceModel>
<machineSettings enableLoggingKnownPii="true"/>
</system.serviceModel>
</configuration>
Een toepassingsi deployer kan vervolgens het kenmerk logKnownPii
in het App.config- of Web.config-bestand gebruiken om PII-logboekregistratie als volgt in te schakelen:
<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>
Alleen wanneer beide instellingen zijn true
is PII-logboekregistratie ingeschakeld. De combinatie van twee switches maakt het mogelijk om bekende PII voor elke toepassing te registreren.
Belangrijk
In .NET Framework 4.6.1 moeten de logEntireMessage
- en logKnownPii
vlaggen ook worden ingesteld op true
in het Web.config-bestand of het App.config-bestand om PII-logboekregistratie in te schakelen, zoals wordt weergegeven in het volgende voorbeeld <system.serviceModel><messageLogging logEntireMessage="true" logKnownPii="true" …
.
Houd er rekening mee dat als u twee of meer aangepaste bronnen opgeeft in een configuratiebestand, alleen de kenmerken van de eerste bron worden gelezen. De anderen worden genegeerd. Dit betekent dat voor het volgende App.config-bestand PII niet wordt geregistreerd voor beide bronnen, ook al is PII-registratie expliciet ingeschakeld voor de tweede bron.
<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>
Als het <machineSettings enableLoggingKnownPii="Boolean"/>
element buiten het Machine.config-bestand bestaat, genereert het systeem een ConfigurationErrorsException.
De wijzigingen zijn alleen van kracht wanneer de toepassing wordt gestart of opnieuw wordt gestart. Een gebeurtenis wordt geregistreerd bij het opstarten wanneer beide kenmerken zijn ingesteld op true
. Een gebeurtenis wordt ook geregistreerd als logKnownPii
is ingesteld op true
, maar enableLoggingKnownPii
is false
.
De machinebeheerder en toepassings-deployer moeten uiterst voorzichtig zijn bij het gebruik van deze twee switches. Als PII-logboekregistratie is ingeschakeld, worden beveiligingssleutels en PII vastgelegd. Als deze optie is uitgeschakeld, worden gevoelige en toepassingsspecifieke gegevens nog steeds geregistreerd in berichtkoppen en -lichamen. Zie Gebruikersprivacyvoor een uitgebreidere discussie over privacy en het beschermen van PII.
Voorzichtigheid
PII is niet verborgen in vervormde boodschappen. Dergelijke berichten worden vastgelegd as-is zonder enige wijziging. Kenmerken die eerder worden vermeld, hebben hier geen effect op.
Aangepaste traceerluisteraar
Het toevoegen van een aangepaste traceluisteraar aan de tracesource voor berichtlogging is een bevoegdheid die moet worden beperkt tot de beheerder. Dit komt doordat kwaadwillende aangepaste listeners kunnen worden geconfigureerd om berichten op afstand te verzenden, wat leidt tot openbaarmaking van gevoelige informatie. Als u bovendien een aangepaste listener configureert voor het verzenden van berichten op de kabel, zoals naar een externe database, moet u het juiste toegangsbeheer afdwingen voor de berichtenlogboeken op de externe computer.
Gebeurtenissen die worden geactiveerd door berichtregistratie
Hieronder ziet u alle gebeurtenissen die worden verzonden door logboekregistratie van berichten.
Logboekregistratie van berichten: deze gebeurtenis wordt verzonden wanneer berichtlogboekregistratie is ingeschakeld in de configuratie of via WMI. De inhoud van de gebeurtenis is 'Berichtlogboekregistratie is ingeschakeld. Gevoelige informatie kan worden vastgelegd in duidelijke tekst, zelfs als ze zijn versleuteld op de kabel, bijvoorbeeld berichtteksten.
Berichtregistratie uitgeschakeld: Deze gebeurtenis wordt verzonden wanneer berichtregistratie via WMI is uitgeschakeld. De inhoud van de gebeurtenis is 'Berichtlogboekregistratie is uitgeschakeld'.
Bekende PII aanmelden: deze gebeurtenis wordt verzonden wanneer logboekregistratie van bekende PII is ingeschakeld. Dit gebeurt wanneer het kenmerk
enableLoggingKnownPii
in hetmachineSettings
element van het Machine.config-bestand is ingesteld optrue
en hetlogKnownPii
kenmerk van hetsource
-element in het App.config- of Web.config-bestand is ingesteld optrue
.Loggen van bekende PII niet toegestaan: dit evenement wordt gegenereerd wanneer loggen van bekende PII niet is toegestaan. Dit gebeurt wanneer het
logKnownPii
kenmerk van hetsource
-element in het App.config- of Web.config-bestand is ingesteld optrue
, maar het kenmerkenableLoggingKnownPii
in hetmachineSettings
element van het Machine.config bestand is ingesteld opfalse
. Er wordt geen uitzondering opgeworpen.
Deze gebeurtenissen kunnen worden weergegeven in het hulpprogramma Logboeken dat bij Windows wordt geleverd. Zie Event Loggingvoor meer informatie hierover.