вторник, 16 августа 2016 г.

Нагрузочное тестирование в контексте ИБ

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


Информационная безопасность, если упрощенно, состоит из трех ключевых  критериев:обеспечения конфиденциальности, целостности и доступности. Все они в равных долях обеспечиваются как встроенными в информационную систему штатными механизмами защиты так и специализированными средствами защиты информации (СЗИ). При проведении аудита ИБ или при подготовке к аттестационным испытаниям возникает на мало вопросов связанных с оценкой текущего уроаня защищенности ИС. Как удостовериться в том, что используемые СЗИ развернуты и корректно сконфигурированы, и создаст ли это ожидаемый уровень защищенности? Одним из подходов дающих ответ на этот и многие другие вопросы является использование услуги по нагрузочному тестированию.

Что такое нагрузочное тестирование и зачем оно нужно

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

Нагрузочное тестирование позволяет получить ответы на следующие вопросы:
  • Каким будет поведение системы в реальных условиях при различных по уровню и по продолжительности нагрузках?
  • Каким будет время отклика на запросы пользователей, а также время стабильного поведения при увеличении числа пользователей?
  • Какие показатели наиболее критичные для функционирования системы под нагрузкой?
  • Отвечает ли система предъявляемым требованиям к производительности?
  • Какая часть системы вызывает сбои в её работе?
  • Какой запас надёжности и производительности имеет система?
Существуют  как комплексное нагрузочное тестирование, так и отдельные тесты в зависимости от конкретных технических требований, предъявляемых заказчиком тестируемому объекту.

Пример отдельных тестов:
  • тестирование производительности (Performance Testing) — исследование времени отклика ПО при выполнении операций на разных нагрузках, в том числе на стрессовых нагрузках.
  • тестирование стабильности или надёжности (Stability / Reliability Testing) — исследование устойчивости ПО в режиме длительного использования с целью выявления утечек памяти, перезапуска серверов и других аспектов, влияющих на нагрузку.
  • стресс-тестирование (Stress Testing) — исследование работоспособности ПО в условиях стресса, когда нагрузка превышает максимально допустимые значения, а также для анализа поведения системы при аварийном изменении аппаратной конфигурации.
  • объёмное тестирование (Volume Testing) — исследование производительности ПО для прогнозирования долгосрочного использования системы при увеличении объёмов данных, то есть анализ готовности системы к долгосрочному использованию.
Наибольшую полпулярность среди инструментов для нагрузочного тестирования обрели:  JMeter, Mantis, HP LoadRunner, Microsoft Web Application Stress Tool,Testlink, и TestNG. А так же отечественный сервис Яндекс.Танк

JMeter - равнение на лидера

Apache JMeter — наиболее популярный инструмент для проведения нагрузочного тестирования, разрабатываемый Apache Software Foundation. Изначально JMeter разрабатывался как средство тестирования только web-приложений, но в настоящее время он способен проводить нагрузочные тесты для JDBC-соединений, различных сервисов таких как FTP, LDAP, SOAP, JMS, POP3, IMAP, HTTP и TCP.

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

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

Несколько слов о Яндекс.Танк 

Яндекс.Танк - инструмент для проведения нагрузочного тестирования, разрабатываемый в российской компании Яндекс. Первоначально инструмент не был доступен публично, и использовался только внутри компании Яндекс, но в июле 2012 года был предоставлен в открытый доступ под лицензией LGPL

В своем основном варианте инструмент использует высокопроизводительный асинхронный генератор нагрузки phantom, при помощи которого возможно генерировать десятки тысяч HTTP-запросов в секунду. Так же Яндекс.Танк позволяет подключить Apache JMeter в качестве генератора запросов для тестов со сложными тестовыми сценариями.

В процессе своей работы Яндекс.Танк сохраняет полученные результаты в обычных текстовых лог-файлах, сгруппированных по директориям для отдельных тестов. В течение теста специальный модуль организует вывод результатов в табличном виде в консольный интерфейс. Одновременно с этим запускается локальный веб-сервер, позволяющий видеть те же самые результаты на информативных графиках. По окончании теста возможно автоматическое сохранение результатов на сервисе Loadosophia.org. Также имеется модуль загрузки результатов в хранилище Graphite.

Нагрузочное тестирование и Информационная безопасность


Нагрузочное тестирование в контексте ИБ позволяет ответить на следующие вопросы:

  • Как поведут себя в условиях обычных или распределенных атак отказа в обслуживании (DoS- и DDoS-атак) сетевые сервисы  и обеспечивающие их компоненты ИТ-инфраструктуры?
  • Достаточно ли производительности используемой СОИБ для функционирования в условиях прогнозируемой нагрузки с должным уровнем обеспечения качества информационных сервисов?
  • Правильно ли проведена настройка межсетевых экранов и средств обнаружения вторжений?
  • С какой скоростью наполняются журналы регистрации событий средств СОИБ, операционных и информационных систем? Не приведет ли к отказу в обслуживании переполнение журналов событий? 
  • Успешно ли справляются со своими задачами антивирусные почтовые шлюзы и системы фильтрации спама, HTTP-трафика и т.д.?

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

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

Классическим вариантом нагрузочного тестирования в контексте ИБ является использование модели тестирования «Отказ в обслуживании», когда целевая система подвергшаяся нагрузке (читай - атаке) приостанавливает свою работоспособность. Фактически нагрузочное тестирование моделирует DoS-атаку. По результатам теста можно понять насколько система устойчива, какой порог она может выдержать, и соответственно принять меры том случае, если результаты теста не не соответствуют необходимому уровню.

Специализированное программное обеспечение выполняет атаку вида «отказ в обслуживании» путём постоянных передач на нужный сайт или узел TCP-, UDP-пакетов или HTTP-запросов в режиме многопоточности. 

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

Комментариев нет:

Отправить комментарий

Вы можете добавить свой комментарий...

Примечание. Отправлять комментарии могут только участники этого блога.