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


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

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

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

Ведение журнала конфиденциальной информации

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

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

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

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

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

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

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

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

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

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

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

Важный

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

Следует учитывать, что если в файле конфигурации указаны два или более пользовательских источников, считываются только атрибуты первого источника. Остальные игнорируются. Это означает, что для следующего файла App.config, PII не регистрируется для обоих источников, несмотря на то, что ведение журнала 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"/> существует вне файла Machine.config, система создает ConfigurationErrorsException.

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

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

Осторожность

PII не скрыт в неправильно сформированных сообщениях. Такие сообщения регистрируются as-is без каких-либо изменений. Атрибуты, упомянутые ранее, не влияют на это.

настраиваемый прослушиватель трассировки

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

События, инициируемые ведением журнала сообщений

Ниже перечислены все события, создаваемые ведением журнала сообщений.

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

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

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

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

Эти события можно просмотреть в средстве просмотра событий, которое поставляется с Windows. Для получения дополнительной информации см. журнал регистрации событий .

См. также