Поделиться через


Проблемы безопасности при ведении журналов сообщений

В этом разделе описываются способы защиты конфиденциальных данных от раскрытия в журналах сообщений, а также в событиях, формируемых посредством ведения журнала сообщений.

Проблемы безопасности

Регистрация конфиденциальных сведений

Windows Communication Foundation (WCF) не изменяет данные в заголовках и тексте приложения. WCF также не отслеживает личную информацию в заголовках приложения или данных тела.

Когда регистрация сообщений включена, персональные данные в заголовках, зависящих от приложения (такие как строка запроса), и в теле сообщения (такие как номер кредитной карты), могут быть видимы в журналах. За надлежащее управление доступом к файлам конфигурации и журналов отвечает специалист, выполняющий развертывание приложения. Если требуется, чтобы подобные сведения не были видимы, необходимо отключить регистрацию или фильтровать часть данных (если предполагается доступ к журналам других лиц).

Следующие советы помогут предотвратить непреднамеренное раскрытие содержимого файла журнала.

  • Убедитесь, что файлы журналов защищены с помощью списков управления доступом (ACL), как в сценарии с размещением на веб-сервере, так и в сценарии с резидентной службой.

  • Выберите расширение файла, которое нельзя легко получить с помощью веб-запроса. Например, расширение XML безопасным не является. См. список небезопасных расширений в руководстве по администрированию служб IIS.

  • Задайте абсолютный путь к местоположению файла журнала, которое должно находиться за пределами общедоступного каталога vroot веб-сервера во избежание доступа к нему третьих лиц с помощью веб-браузера.

По умолчанию ключи и персональные данные (personally identifiable information, PII), такие как имя пользователя и пароль, не регистрируются трассировкой и не указываются в заносимых в журнал сообщениях. Администратор компьютера может, тем не менее, с помощью атрибута enableLoggingKnownPII в элементе machineSettings файла Machine.config разрешить приложениям, выполняющимся на компьютере, регистрировать известные персональные данные (PII). Следующая конфигурация показывает, как это сделать.

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

Специалист, выполняющий развертывание приложения, может затем с помощью атрибута logKnownPii в файле App.config или Web.config включить регистрацию персональных данных следующим образом:

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

Регистрация PII включена, только когда оба параметра имеют значение true. Такое сочетание из двух ключей позволяет регистрировать известные PII для каждого приложения.

Внимание

В платформа .NET Framework 4.6.1 logEntireMessage флаги и logKnownPii флаги также должны быть заданы true в файле web.config или файле app.config для включения ведения журнала PII, как показано в следующем примере<system.serviceModel><messageLogging logEntireMessage="true" logKnownPii="true" ….

Необходимо иметь в виду, что при задании в файле конфигурации двух или более пользовательских источников считываются только атрибуты первого источника. Остальные атрибуты не учитываются. Это значит, что в случае следующего файла App.config PII не регистрируются для обоих источников, несмотря на то что для второго источника явно включена регистрация персональных данных.

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

Если элемент <machineSettings enableLoggingKnownPii="Boolean"/>ConfigurationErrorsException присутствует за пределами файла Machine.config, система вызывает исключение.

Изменения вступают в силу только после запуска или перезапуска приложения. Когда оба атрибута имеют значение true, при запуске регистрируется событие. Событие также регистрируется, если атрибут logKnownPii имеет значение true, а атрибут enableLoggingKnownPii имеет значение false.

Администратор компьютера и специалист, выполняющий развертывание приложения, должны быть предельно осторожными при использовании этих двух переключателей. Если регистрация PII включена, ключи контроля доступа и персональные данные заносятся в журналы. Если она отключена, конфиденциальные и зависящие от приложения данные все равно регистрируются в составе заголовков и тел сообщений. Дополнительные сведения о конфиденциальности и защите персональных данных от предоставления доступа см. в разделе "Конфиденциальность пользователей".

Внимание

В неправильно сформированных сообщениях PII не скрываются. Такие сообщения регистрируются «как есть», без каких-либо изменений. Упомянутые выше атрибуты никак на это не влияют.

Пользовательский прослушиватель трассировки

Добавление пользовательского прослушивателя трассировки на источник трассировки «Ведение журнала сообщений» должно быть привилегией исключительно администратора. Это связано с тем, что пользовательские прослушиватели могут быть настроены злоумышленниками на удаленную отправку сообщений, что может привести к разглашению конфиденциальных сведений. Кроме того, если пользовательский прослушиватель настроен на отправку сообщений по линии связи, например в удаленную базу данных, необходимо обеспечить надлежащее управление доступом к журналам сообщений на удаленной машине.

События, активируемые регистрацией сообщений

Ниже приведен исчерпывающий список событий, формируемых регистрацией событий.

  • Регистрация сообщений включена: это событие создается при включении регистрации сообщений в конфигурации или посредством инструментария WMI. Содержание события: "Регистрация сообщений включена. Секретные сведения могут регистрироваться без шифрования, даже если при передаче они были зашифрованы, например, тексты сообщений".

  • Регистрация сообщений отключена: это событие создается при отключении регистрации сообщений в конфигурации или посредством инструментария WMI. Содержание события: "Регистрация сообщений отключена".

  • Регистрация известных PII отключена: это событие создается при включении регистрации известных персональных данных. Это происходит, когда enableLoggingKnownPii атрибут в элементе файла Machine.config заданtrue, а logKnownPii атрибут source элемента в machineSettings файле App.config или Web.config имеет значениеtrue.

  • Регистрация известных PII запрещена: это событие создается, когда Регистрация известных персональных данных не разрешена. Это происходит, когда logKnownPii атрибут source элемента в файле App.config или Web.config имеет trueзначение, но enableLoggingKnownPii атрибут в machineSettings элементе файла Machine.config имеет falseзначение . Исключение не выдается.

Эти события можно просмотреть с помощью средства просмотра событий, входящего в состав Windows. Дополнительные сведения об этом см. в разделе "Ведение журнала событий".

См. также