Введение
Протокол SNMP (Simple Network Management Protocol) является одним из ключевых инструментов мониторинга и управления сетевыми устройствами в современных информационно-телекоммуникационных системах. С момента появления первой версии SNMP в конце 1980-х годов данный протокол широко применяется для сбора статистических данных, выявления неисправностей и централизованного управления маршрутизаторами, коммутаторами, серверами и другими компонентами сетевой инфраструктуры. Наиболее современной версией является SNMPv3, в которой были реализованы важные механизмы защиты, включая аутентификацию, контроль целостности и шифрование данных. Учитывая стремительное расширение масштаба и сложности корпоративных и глобальных сетей, обеспечение безопасности SNMPv3 приобретает особую актуальность.
Данный протокол является частью системы управления сетью и позволяет администраторам:
- Отслеживать состояние устройств;
- Вносить изменения в конфигурацию;
- Получать уведомления о событиях.
SNMP работает по принципу "менеджер-агент", где менеджер (управляющая система) отправляет запросы агентам (управляемым устройствам), а те, в свою очередь, отвечают или отправляют уведомления (трапы) в случае возникновения значимых событий.
Рисунок 1. Архитектура системы управления
SNMP-менеджером может быть любое устройство, способное выполнять функции управления сетью, например, наш ноутбук с установленным программным обеспечением для управления (например, SolarWinds, Zabbix, или даже встроенные утилиты).
SNMP-агент также может быть любым устройством, поддерживающим SNMP, например, маршрутизаторы, коммутаторы, серверы, принтеры или даже IoT-устройства. Агент работает на самом устройстве, собирает информацию и отправляет её менеджеру по запросу или при наступлении определенных событий.
В основе SNMP лежит модель клиент-серверного взаимодействия, но с некоторыми особенностями. Управляющая система (SNMP Manager) инициирует запросы к управляемым устройствам (SNMP Agent), которые хранят данные о своем состоянии в специальной структуре — MIB (Management Information Base). MIB представляет собой иерархическую базу данных, организованную в виде дерева объектов, где каждый объект идентифицируется уникальным OID (Object Identifier).
OID — это числовая или символьная строка, однозначно определяющая параметр устройства, например, загрузку процессора, состояние интерфейса или уровень трафика.
SNMP использует UDP (порты 161 для запросов и 162 для трапов) из-за низких накладных расходов, хотя это может приводить к потере пакетов. Основные операции протокола:
- GET — запрос значения параметра от агента.
- GETNEXT — последовательный запрос следующих OID в MIB (позволяет обходить дерево данных).
- GETBULK (в SNMPv2c и v3) — массовый запрос данных для уменьшения количества пакетов.
- SET — изменение параметра на устройстве (используется для управления).
- TRAP/INFORM — асинхронные уведомления от агента к менеджеру о критических событиях (TRAP не требует подтверждения, INFORM — требует).
Версии SNMP и безопасность:
- SNMPv1 — первая версия, уязвима к перехвату трафика из-за отсутствия шифрования. Использует строки сообщества (community strings) в качестве примитивной аутентификации.
- SNMPv2c — улучшенная производительность (GETBULK), но сохраняет уязвимости v1.
- SNMPv3 — добавляет шифрование (DES, AES), аутентификацию (HMAC-SHA, HMAC-MD5) и контроль доступа (USM — User-based Security Model), что делает его безопасным для использования в современных сетях.
В ходе данной статьи внимание уделяется протоколу SNMPV3. Хотя SNMPv3 не приносит никаких изменений в протокол помимо добавления криптографической защиты, он является улучшением за счёт новых текстовых соглашений, концепций и терминологии.
Безопасность была большой проблемой SNMP с самого появления. Аутентификация в SNMP версий 1 и 2 сводилась не более чем к паролю (строке сообщества), который пересылался в открытом виде между менеджером и агентом.
В отличие от SNMPv1 и SNMPv2c, где использовались простые строки сообщества (community strings), передаваемые в открытом виде, SNMPv3 реализует модель безопасности USM (User-based Security Model). Это означает, что каждое взаимодействие между менеджером и агентом требует аутентификации пользователя, а при необходимости — и шифрования данных.
- Аутентификация гарантирует, что запросы поступают от доверенного источника. Для этого используются алгоритмы HMAC-MD5-96 или HMAC-SHA-96, которые предотвращают подмену пакетов.
- Шифрование (через DES, 3DES, AES) защищает содержимое SNMP-пакетов от перехвата, что особенно важно при использовании SET-операций для изменения конфигурации устройств.
- Защита от повтора (replay attacks) — каждый пакет содержит временную метку и уникальный счетчик, что исключает возможность повторного использования перехваченных сообщений.
Также SNMPv3 вводит модель VACM (View-based Access Control Model), которая позволяет тонко настраивать права доступа для разных пользователей. Например, можно разрешить одному администратору только читать статистику интерфейсов (GET), а другому — изменять настройки (SET). Это кардинально отличает SNMPv3 от предыдущих версий, где контроль доступа был крайне примитивным или отсутствовал вовсе.
С 2004 года IETF признаёт SNMPv3, определённый в RFC 3411, RFC 3418 (также известный как STD0062) в качестве текущей стандартной версии SNMP. IETF отметил SNMPv3 как полный Интернет-стандарт, что является самым высоким уровнем готовности для RFC. При этом более ранние версии считаются устаревшими (обозначаются как «исторические» — Historic).
Настройка коммутаторов
Чтобы продемонстрировать атаку на протокол SNMPv3, надо настроить SNMPv3 на коммутаторе и компьютере с операционной системой Linux с минимальными настройками безопасности. Настройка будет производиться на 3 коммутаторах: Cisco, Eltex, Mikrotik.
1) Настройка коммутатора Cisco
Таблица 1.
Настройка коммутаторов
CISCO |
|
Включение SNMPv3 |
-configure terminal |
Настройка группы |
-snmp-server group <group-name> v3 priv |
Создание пользователя |
snmp-server user <username> <group-name> v3 auth sha <auth-password> priv aes 128 <priv-password> |
Аутентификация |
sha/md5 |
Алгоритм шифрования |
aes-128 |
Примечание |
<engine-id>: Уникальный идентификатор для движка SNMPv3 <group-name>: Имя группы SNMPv3 <username>: Имя пользователя для аутентификации SNMPv3 <auth-password>: Пароль для аутентификации SNMPv3 <priv-password>: Пароль для конфиденциальности SNMPv3 (шифрование) <host-ip>: IP-адрес менеджера SNMP |
Eltex |
|
Включение SNMPv3 |
-snmp-server server |
Настройка группы |
snmp-server group AuthPriv v3 priv write iso |
Создание пользователя |
snmp-server user Md5Des AuthPriv v3 auth md5 [password] priv-protocol des priv [encryption key] |
Аутентификация |
sha/md5 |
Алгоритм шифрования |
des/aes |
Mikrotik |
|
Включение SNMPv3 |
/ snmp set enabled=yes |
Настройка группы |
- |
Создание пользователя |
/ snmp user add name=snmp_secure authentication-password=AuthPass123 \ encryption-password=PrivPass123 authentication-protocol=sha1 \encryption-protocol=aes disabled=no |
Аутентификация |
sha1/md5/sha256 |
Алгоритм шифрования |
aes/des |
Примечание |
name=snmp_secure – имя пользователя. authentication-password=AuthPass123 – пароль для аутентификации. encryption-password=PrivPass123 – пароль для шифрования. authentication-protocol=sha1 – алгоритм аутентификации (sha1, md5, sha256). encryption-protocol=aes – алгоритм шифрования (aes или des). security=private – включает аутентификацию + шифрование |
Данные примеры настроек позволяют настроить SNMPv3 на коммутаторах с минимальными настройками шифрования. В данной статье специально приведены минимальные настройки, так как многие системные администраторы пренебрегают тщательной настройкой защиты (установка паролей по умолчанию, слабые алгоритмы шифрования и т.д.) , в связи с чем становится возможным провести атаку вида brute-force.
Проведение атаки на протокол SNMPv3
На протокол SNMPv3 возможны такие виды атак, как спуфинг (подделка сообщений SNMP с целью выдачи себя за доверенного пользователя или агент), модификация сообщений (попытки изменить или внедрить фиктивные SNMP-сообщения), атаки отказа в обслуживании (перегрузка устройства большим количеством SNMP запросов), использование уязвимостей в конфигурации SNMP протокола, brute force атаки на аутентификацию (подбор паролей).
В данной статье будет разобран пример атаки методом brute force, так данный тип атаки является самым простым в реализации, а следовательно самым распространенным. Во время моделирования атаки, особое внимание уделяется проблеме человеческого фактора — неправильно заданные параметры безопасности (например, использование слабых паролей, отказ от включения функции шифрования, наличие устаревших агентов в инфраструктуре) делают возможными атаки, несмотря на надежность самого протокола. В рамках моделирования атаки предполагается использование предсказуемых параметров — слабого пароля, отключённого шифрования (режим authNoPriv) и тестовой среды без ограничений по частоте запросов, что позволит воспроизвести поведение атакующего в контролируемых условиях.
Во время настройки протокола использовалась лабораторная виртуальная сеть, включающая программный SNMPv3-агент, настроенный с минимальными параметрами безопасности. В качестве управляющего устройства использовался хост с ОС Kali Linux, на котором были установлены инструменты анализа и атаки, такие, как nmap и SNMPwn. Входные данные включали заранее составленные список возможных пользователей и заранее определённый словарь паролей. Это нужно было для проверки успешности brute force атаки при слабой настройке безопасности протокола.
Для атаки на протокол SNMPv3 будет использоваться инструмент SNMPwn. Данный инструмент предназначен для тестирования защиты протокола, опираясь на следующий алгоритм работы:
- Проверка, отвечают ли указанные вами хосты на запросы SNMP.
- Перечисление пользователей SNMP, проверяя каждого из предоставленного вами списка.
- Атака сервера с перечисленными аккаунтами и вашим списком паролей и паролей шифрования. Не нужно атаковать весь список пользователей, только живые аккаунты.
- Атакует все типы протоколов:
- Нет аутентификации, нет шифрования (noauth)
- Аутентификация, без шифрования (authnopriv)
- Аутентификация и шифрование (поддерживаются все типы, MD5, SHA, DES, AES) - (authpriv)
Сценарий атаки: нам необходимо предоставить скрипту список пользователей, список хостов, список паролей и список паролей шифрования. Базовые файлы users.txt и passwords.txt включены.
Скрипт запускается командой:
./snmpwn.rb --hosts hosts.txt --users users.txt --passlist passwords.txt --enclist passwords.txt
В файле users.txt содержатся возможные имена пользователей (особенно актуально, если известны конкретные цели атаки). В файле passwords.txt содержится список паролей, который будет проверяться на совпадение.
1. Атака на SNMPv3 на Cisco коммутаторе
Рисунок 2. Поиск пользователей
Рисунок 3. Атака на пароли
Рисунок 4. Результат атаки
2. Атака на SNMPv3 на коммутаторе Eltex
Рисунок 5. Поиск пользователей
Рисунок 6. Атака на пароли
Рисунок 7. Результат атаки
3. Атака на SNMPv3 на коммутаторе Mikrotik
Рисунок 8. Поиск пользователей
Рисунок 9. Атака на пароли
Рисунок 10. Результат атаки
Чтобы сравнить время перебора паролей для каждого коммутатора, напишем небольшой bash-код:
#!/bin/bash
s=$(date +%s.%3N)
./snmpwn.rb --hosts hosts.txt --users users.txt --passlist passwords.txt --enclist passwords.txt
printf "Время: $((($(date +%s.%3N)-s)/60)) мин. %.3f сек.\n" $(echo "scale=3;($(date +%s.%3N)-s)%60" | bc)
Таблица 2.
Скорость перебора паролей для каждого коммутатора
Коммутатор |
Время выполнения |
Cisco |
0 мин. 54.232 сек. |
Eltex |
0 мин. 52.108 сек. |
Mikrotik |
0 мин. 32.007 сек |
Возможные технологии защиты
Основой защиты становится принцип многослойной безопасности, где каждый уровень создает дополнительные препятствия для злоумышленника. Первый и самый важный рубеж - это надежные учетные данные. Пароли для аутентификации и шифрования должны быть длинными, сложными и уникальными, состоящими из случайных комбинаций букв в разных регистрах, цифр и специальных символов. Практика показывает, что пароль длиной 12-15 символов с указанными характеристиками увеличивает время подбора до нескольких лет даже при использовании мощных вычислительных ресурсов.
Следующий критически важный аспект - ограничение доступа по IP-адресам. Настройка SNMP-сервера таким образом, чтобы он отвечал только на запросы с определенных доверенных адресов или подсетей, сразу отсекает значительную часть потенциальных атак. Это особенно актуально для устройств, не требующих широкой доступности протокола. Дополнительно стоит настроить фильтрацию на межсетевом экране, блокируя все UDP-пакеты на порт 161, кроме разрешенных источников.
Выбор криптографических алгоритмов также играет ключевую роль в обеспечении безопасности. Устаревшие протоколы вроде MD5 или DES давно не соответствуют современным требованиям и должны быть заменены на более стойкие варианты. Для аутентификации предпочтительнее использовать SHA-256 или SHA-512, а для шифрования - AES с 256-битным ключом. Такая комбинация обеспечивает надежную защиту от перехвата и подмены данных.
Эффективным способом противодействия brute force-атакам является внедрение ограничений на частоту запросов. Настройка межсетевого экрана для отбрасывания пакетов при превышении определенного порога соединений в секунду делает классические атаки перебора практически бесполезными. Например, ограничение в 5-10 запросов в секунду с одного IP-адреса не мешает нормальной работе мониторинга, но существенно затрудняет автоматизированный подбор.
Для критически важных инфраструктур стоит рассмотреть возможность полного отказа от прямого доступа к SNMP из внешних сетей. В таких случаях рекомендуется использовать VPN-туннели (IPsec или WireGuard) для организации защищенного канала, через который уже будут осуществляться SNMP-запросы. Этот подход исключает возможность прямого воздействия на SNMP-сервис извне.
Не менее важна система мониторинга и оповещения о подозрительной активности. Настройка детального логирования всех SNMP-запросов с последующим анализом позволяет выявлять попытки несанкционированного доступа на ранних стадиях. Интеграция с SIEM-системами дает возможность автоматического реагирования при обнаружении аномальной активности, например, блокировки IP-адресов, с которых поступает большое количество неудачных запросов.
Возможный алгоритм правильной настройки протокола для того, чтобы атаку нельзя было совершить с помощью brute-force или этот процесс занимал бы слишком много времени:
Таблица 3.
Безопасная настройка коммутаторов
Данные настройки используют более надежные методы шифрования и аутентификации, разрешают SNMP только с доверенного ip-адреса, оставляют доступ только к нужным OID, удаляют строки сообщества. |
Cisco |
-configure terminal -snmp-server group SECURE_GROUP v3 priv read SECURE_VIEW write SECURE_VIEW -snmp-server user ADMIN SECURE_GROUP v3 auth sha AuthPass#2025 priv aes 256 PrivPass#2025 -snmp-server host 192.168.1.100 version 3 priv ADMIN -access-list 10 permit 192.168.1.100 snmp-server view SECURE_VIEW 1.3.6.1.2.1 included -no snmp-server community public RO -no snmp-server community private RW |
Eltex |
- snmp-server server - snmp-server engineID local 800000090300A1B2C3D4E5 nmp-server view SECURE_VIEW 1.3.6.1.2.1 included - snmp-server group SECURE_GROUP v3 priv read SECURE_VIEW write SECURE_VIEW - snmp-server user ADMIN SECURE_GROUP v3 auth sha512 AuthPass#2025 priv aes256 PrivPass#2025 - snmp-server host 192.168.1.100 traps version 3 priv ADMIN - no snmp-server community public |
Mikrotik |
/snmp set enabled=yes /snmp user add name=SNMP_ADMIN authentication-password="AuthPass#2025" encryption-password="PrivPass#2025" authentication-protocol=sha512 encryption-protocol=aes-256 /ip firewall filter add chain=input protocol=udp dst-port=161 src-address=192.168.1.100 action=accept /ip firewall filter add chain=input protocol=udp dst-port=161 action=drop /snmp community set [find] security=none |
Заключение
В ходе исследования была проведена детальная оценка уязвимостей протокола SNMPv3 с акцентом на практическую реализацию атак методом перебора в условиях упрощённой конфигурации безопасности. Экспериментальная часть работы показала, что, несмотря на встроенные механизмы защиты в SNMPv3, включающие аутентификацию на основе HMAC-SHA/HMAC-MD5, шифрование данных с использованием AES/DES и защиту от повторных атак через временные метки, основной угрозой остаётся человеческий фактор. Было установлено, что использование слабых паролей, работа в режиме authNoPriv без шифрования и отсутствие ограничений на частоту запросов делают систему уязвимой к brute-force атакам. В лабораторных условиях с помощью инструмента SNMPwn удалось успешно провести атаку перебора при наличии слабых учётных данных, что подтвердило критическую важность правильной настройки параметров безопасности.
Результаты исследования подчёркивают необходимость комплексного подхода к защите SNMPv3, включающего применение стойких паролей длиной не менее 12 символов, обязательное использование режима authPriv с шифрованием AES-256, ограничение доступа по IP-адресам и настройку защиты от перебора через контроль частоты запросов. Особое внимание уделено важности мониторинга SNMP-активности и регулярного обновления программного обеспечения для закрытия известных уязвимостей. При этом отмечено, что сам протокол SNMPv3 обладает достаточным уровнем защищённости при грамотной настройке, а основные проблемы безопасности возникают из-за ошибочных конфигураций и пренебрежения базовыми мерами защиты.
Выводы работы свидетельствуют, что обеспечение безопасности SNMPv3 требует не только технических мер, но и строгого соблюдения политик безопасности, включая регулярную смену паролей, аудит настроек и обучение персонала. Практическая значимость исследования заключается в демонстрации реальных рисков, связанных с неправильной настройкой SNMPv3, и предоставлении конкретных рекомендаций по усилению защиты, которые могут быть применены в корпоративных сетях и критически важных инфраструктурах. Полученные результаты подтверждают, что при должном уровне внимания к вопросам конфигурации и эксплуатации SNMPv3 остаётся надёжным инструментом для управления сетевыми устройствами с соблюдением современных требований информационной безопасности.
Список литературы
- Семейство стандартов SNMP [Электронный ресурс] // Викиучебник. URL: https://ru.wikibooks.org/wiki/Семейство_стандартов_SNMP (дата обращения: 11.06.2025)
- Настройка SNMP на оборудовании Eltex [Электронный ресурс] // Документация Eltex. URL: https://docs.eltex-co.ru/pages/viewpage.action?pageId=385057049 (дата обращения: 21.06.2025)
- SNMP Pentesting: Best Practices [Электронный ресурс] // Secybr. URL: https://secybr.com/posts/snmp-pentesting-best-practicies/ (дата обращения: 23.05.2025)
- Включение SNMPv3 на Cisco Switch [Электронный ресурс] // TechExpert Tips. URL: https://techexpert.tips/ru/cisco-switch-ru/включить-cisco-snmp-version-3/ (дата обращения: 30.06.2025)
- Основы SNMP. 2-е изд. [Электронный ресурс] / K0d.cc. URL: https://k0d.cc/storage/books/Администрирование/osnovy_snmp_2-e_izd.pdf (дата обращения: 30.06.2025)
- Обсуждение проблем с SNMP на форуме Eltex [Электронный ресурс] // Eltex Forum. URL: https://forum.eltex-co.ru/viewtopic.php?t=10251 (дата обращения: 02.07.2025)
- Уймин А. Г. Сетевое и системное администрирование. Демонстрационный экзамен КОД 1.1: учебно-методическое пособие для СПО / А. Г. Уймин. – 3-е изд., стереотипное. – Санкт-Петербург: Издательство "Лань", 2022. – 480 с. – ISBN 978-5-8114-9255-8 (дата обращения 02.07.2025)