Проблемы безопасности при ведении журналов сообщений
В этом разделе описываются способы защиты конфиденциальных данных от раскрытия в журналах сообщений, а также в событиях, формируемых посредством ведения журнала сообщений.
Проблемы безопасности
Регистрация конфиденциальных сведений
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. Дополнительные сведения об этом см. в разделе "Ведение журнала событий".