Dela via


Säkerhetsproblem för meddelandeloggning

Det här avsnittet beskriver hur du kan skydda känsliga data från att exponeras i meddelandeloggar, samt händelser som genereras av meddelandeloggning.

Säkerhetsproblem

Loggning av känslig information

Windows Communication Foundation (WCF) ändrar inte några data i programspecifika rubriker och brödtexter. WCF spårar inte heller personlig information i programspecifika rubriker eller brödtextdata.

När meddelandeloggning är aktiverat, personlig information i programspecifika rubriker, till exempel en frågesträng; och brödtextinformation, till exempel ett kreditkortsnummer, kan visas i loggarna. Programdistributionsverktyget ansvarar för att framtvinga åtkomstkontroll på konfigurations- och loggfilerna. Om du inte vill att den här typen av information ska visas bör du inaktivera loggning eller filtrera bort en del av data om du vill dela loggarna.

Följande tips kan hjälpa dig att förhindra att innehållet i en loggfil exponeras oavsiktligt:

  • Se till att loggfilerna skyddas av åtkomstkontrollistor (ACL) i både webbhostade och självhostade scenarier.

  • Välj ett filnamnstillägg som inte enkelt kan hanteras med hjälp av en webbbegäran. Filnamnstillägget .xml är till exempel inte ett säkert val. Du kan kontrollera administrationsguiden för Internet Information Services (IIS) för att se en lista över tillägg som kan hanteras.

  • Ange en absolut sökväg för loggfilens plats, som ska ligga utanför den offentliga katalogen Web host vroot för att förhindra att den nås av en extern part med hjälp av en webbläsare.

Som standard loggas inte nycklar och personligt identifierbar information (PII) som användarnamn och lösenord i spårningar och loggade meddelanden. En datoradministratör kan dock använda attributet enableLoggingKnownPII i machineSettings-elementet i Machine.config-filen för att tillåta program som körs på datorn att logga känd personligt identifierbar information (PII). Följande konfiguration visar hur du gör detta:

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

En programdistribuerare kan sedan använda attributet logKnownPii i antingen App.config- eller Web.config-filen för att aktivera PII-loggning på följande sätt:

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

Endast när båda inställningarna är true är PII-loggning aktiverat. Kombinationen av två växlar ger flexibiliteten att logga kända PII för varje program.

Viktig

I .NET Framework 4.6.1 måste logEntireMessage- och logKnownPii flaggorna också vara inställda på true i filen Web.config eller App.config för att aktivera PII-loggning, vilket visas i följande exempel <system.serviceModel><messageLogging logEntireMessage="true" logKnownPii="true" ….

Du bör vara medveten om att om du anger två eller flera anpassade källor i en konfigurationsfil är det bara attributen för den första källan som läse. De andra ignoreras. Det innebär att PII för följande App.config, inte loggas för båda källorna trots att PII-loggning uttryckligen är aktiverad för den andra källan.

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

Om <machineSettings enableLoggingKnownPii="Boolean"/>-elementet finns utanför Machine.config-filen genererar systemet en ConfigurationErrorsException.

Ändringarna gäller endast när programmet startar eller startar om. En händelse loggas vid start när båda attributen är inställda på true. En händelse loggas också om logKnownPii är inställt på true men enableLoggingKnownPii är false.

Datoradministratören och programdistribueraren bör vara mycket försiktiga när du använder dessa två växlar. Om PII-loggning är aktiverat loggas säkerhetsnycklar och PII. Om den är avstängd loggas fortfarande känslig och programspecifik data i meddelandehuvuden och meddelandetexter. En mer ingående diskussion om sekretess och skydd av PII från att exponeras finns i Användarsekretess.

Försiktighet

PII är inte dolt i felkonstruerade meddelanden. Sådana meddelanden loggas as-is utan ändringar. Attribut som nämnts tidigare har ingen effekt på detta.

Anpassad spårningslyssnare

Att lägga till en anpassad tracelyssnare på spårningskällan för Meddelandeloggning är ett privilegium som endast bör tillåtas för administratören. Detta beror på att skadliga anpassade lyssnare kan konfigureras för att skicka meddelanden via fjärranslutning, vilket leder till att känslig information avslöjas. Om du konfigurerar en anpassad lyssnare för att skicka meddelanden på kabeln, till exempel till en fjärrdatabas, bör du dessutom framtvinga korrekt åtkomstkontroll i meddelandeloggarna på fjärrdatorn.

Händelser som utlöses av meddelandeloggning

Följande listar alla händelser som genereras av meddelandeloggning.

  • Meddelandeloggning på: Den här händelsen genereras när meddelandeloggning är aktiverad i konfigurationen eller via WMI. Innehållet i händelsen är "Meddelandeloggning har slagits på." Känslig information kan loggas i klartext, även om de har krypterats under överföringen, till exempel meddelandekroppar.

  • Meddelandeloggning av: Den här händelsen genereras när meddelandeloggning inaktiveras via WMI. Innehållet i händelsen är "Meddelandeloggning har inaktiverats".

  • Loggning av kända PII-data aktiverad: Den här händelsen genereras när loggning av kända PII-data är påslagen. Detta inträffar när attributet enableLoggingKnownPii i machineSettings-elementet i Machine.config-filen är inställt på trueoch attributet logKnownPii för source-elementet i antingen App.config- eller Web.config-filen är inställt på true.

  • Loggning av känd PII tillåts inte: Den här händelsen genereras när loggning av känd PII inte är tillåten. Detta inträffar när logKnownPii-attributet för source-elementet i antingen App.config- eller Web.config-filen är inställt på true, men attributet enableLoggingKnownPii i machineSettings-elementet i filen Machine.config är inställt på false. Inget undantag kastas.

Dessa händelser kan visas i verktyget Händelsehanteraren som medföljer Windows. Mer information om detta finns i Händelseloggning.

Se även