Одним из способов проверить корректность конфигурирования средств защиты информации и устойчивость корпоративных информационных систем к некоторым видам атак является нагрузочное тестирование. Проведение нагрузочных тестов позволяет адекватно оценить текущий уровень защищенности, причем как СЗИ так и отдельно информационных систем, а так же проверить ИТ-инфраструктуру на соответствие требованиям, к примеру, для выполнения аттестационных мероприятий.
Информационная безопасность, если упрощенно, состоит из трех ключевых критериев:обеспечения конфиденциальности, целостности и доступности. Все они в равных долях обеспечиваются как встроенными в информационную систему штатными механизмами защиты так и специализированными средствами защиты информации (СЗИ). При проведении аудита ИБ или при подготовке к аттестационным испытаниям возникает на мало вопросов связанных с оценкой текущего уроаня защищенности ИС. Как удостовериться в том, что используемые СЗИ развернуты и корректно сконфигурированы, и создаст ли это ожидаемый уровень защищенности? Одним из подходов дающих ответ на этот и многие другие вопросы является использование услуги по нагрузочному тестированию.
Что такое нагрузочное тестирование и зачем оно нужно
Нагрузочное тестирование — это автоматизированные испытания информационной системы (или отдельного приложения, 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-запросов в режиме многопоточности.
При анализе проблем производительности нагрузочные тесты позволяют выявить узкие места в инфраструктуре и дают возможность оценить результативность принятого решения после исправления выявленных недостатков (внесения изменений).
Комментариев нет:
Отправить комментарий
Вы можете добавить свой комментарий...
Примечание. Отправлять комментарии могут только участники этого блога.