Перейти к содержанию

Конфигурация тестовой платформы приложения

Резюме

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

Ревизия и тестирование конфигурации — это критическая задача при создании и поддержке архитектуры. Обычно множество систем поставляется с универсальными конфигурациями, которые могут не подходить для конкретного использования.

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

Цели тестирования

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

Как тестировать

Тестирование методом "чёрного ящика"

Образцы и известные файлы и директории

Многие веб-сервера и серверы приложений в стандартной установке предоставляют образцы приложений и файлов для разработчиков, чтобы проверить корректность работы сервера сразу после установки. Однако многие из этих образцов известны как уязвимые. Например, это касается уязвимости CVE-1999-0449 (отказ в обслуживании IIS при установке примера сайта Exair), CAN-2002-1744 (уязвимость обхода каталогов в Microsoft IIS 5.0) и других.

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

Анализ комментариев

Программисты часто оставляют комментарии при разработке крупных веб-приложений. Однако комментарии в HTML-коде могут раскрыть внутреннюю информацию, недоступную для злоумышленников. Иногда даже части исходного кода остаются закомментированными, и эти комментарии могут быть случайно переданы пользователям через HTML-страницы.

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

Системная конфигурация

Для оценки соответствия системы стандартам конфигурации можно использовать различные инструменты, документы и чек-листы. Среди них:

  • CIS-CAT Lite
  • Анализатор поверхности атак от Microsoft
  • Национальная программа чек-листов от NIST

Тестирование методом "серого ящика"

Проверка конфигурации

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

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

Логирование

Логирование — важная часть безопасности приложения, так как с его помощью можно обнаружить уязвимости и атаки. Однако необходимо проверить:

  • Содержат ли логи конфиденциальную информацию?
  • Хранятся ли логи на отдельном сервере?
  • Могут ли логи создать уязвимость типа "отказ в обслуживании"?
  • Как часто логи пересматриваются администраторами?

Конфиденциальная информация в логах

Некоторые приложения могут записывать в логи чувствительные данные, например, логины и пароли, что представляет угрозу в случае доступа к логам злоумышленников через уязвимости сервера. Логи могут содержать:

  • Отладочную информацию
  • Имена пользователей
  • IP-адреса
  • Личные данные
  • Коммерчески значимую информацию

Необходимо убедиться, что конфиденциальная информация не сохраняется в логах или должным образом защищена.

Расположение логов

Если сервер скомпрометирован, злоумышленники могут удалить логи, скрывая следы атаки. Поэтому рекомендуется хранить логи на отдельном сервере, чтобы предотвратить их удаление и упростить анализ.

Хранение логов

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

Ротация логов

Серверы должны выполнять ротацию логов, чтобы предотвратить их переполнение. Это необходимо протестировать, чтобы:

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

Доступ к логам

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

Обзор логов

Администраторы должны анализировать ошибки сервера и выявлять попытки атак. Особое внимание стоит уделить ошибкам с кодом 40x или 50x, которые могут указать на потенциальные уязвимости.