Введение
В этой лабораторной работе вы научитесь реализовывать безопасный сетевой мониторинг в системе Linux с использованием протокола Simple Network Management Protocol версии 3 (SNMPv3). Вы сосредоточитесь на настройке SNMP-агента (snmpd) для обеспечения надежной аутентификации и шифрования, гарантируя защиту данных управления при передаче и отходя от небезопасности старых версий SNMP.
Процесс начинается с установки необходимых инструментов SNMP-агента и клиента в вашей системе. Затем вы создадите выделенного пользователя SNMPv3 с безопасными учетными данными непосредственно в конфигурационном файле. Наконец, вы будете использовать утилиту командной строки snmpwalk для выполнения безопасных запросов к вашему настроенному агенту, проверяя вашу конфигурацию и исследуя, как получать конкретную системную информацию с использованием Object Identifiers (OIDs).
Установка SNMP-агента и клиентских инструментов
На этом этапе вы установите основные компоненты, необходимые для сетевого мониторинга с использованием протокола Simple Network Management Protocol (SNMP). Мы установим как SNMP-агент, который работает на отслеживаемом устройстве, так и клиентские инструменты, которые используются для запроса к агенту.
Во-первых, стандартной лучшей практикой является обновление списка пакетов вашей системы. Это гарантирует, что вы получаете последние и наиболее безопасные версии программного обеспечения, доступные в репозиториях.
Выполните следующую команду для обновления индекса пакетов в вашей системе:
sudo apt update
Вы увидите вывод, показывающий получение списков пакетов из репозиториев Ubuntu.
Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
Get:2 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB]
...
Fetched 1,587 kB in 2s (924 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
All packages are up to date.
Теперь, когда список пакетов обновлен, вы можете установить SNMP-агент (демон) и клиентские утилиты. Агент предоставляется пакетом snmpd, а клиентские инструменты (такие как snmpwalk, snmpget) находятся в пакете snmp.
Выполните команду ниже, чтобы установить оба пакета. Флаг -y автоматически подтверждает установку, поэтому вам не будет предложено подтверждение.
sudo apt install snmpd snmp -y
Процесс установки загрузит и настроит необходимые файлы. После завершения служба snmpd, которая является демоном агента, должна запуститься автоматически.
Чтобы убедиться, что SNMP-агент работает корректно, вы можете проверить статус службы snmpd с помощью systemctl.
sudo systemctl status snmpd
Вывод должен указывать, что служба active (running). Это подтверждает, что SNMP-агент готов принимать запросы.
● snmpd.service - Simple Network Management Protocol (SNMP) Daemon.
Loaded: loaded (/lib/systemd/system/snmpd.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2023-10-30 08:30:00 UTC; 5s ago
Main PID: 1234 (snmpd)
Tasks: 1 (limit: 4595)
Memory: 9.8M
CPU: 35ms
CGroup: /system.slice/snmpd.service
└─1234 /usr/sbin/snmpd -Lsd -Lf /dev/null -u Debian-snmp -g Debian-snmp -I -smux mteTrigger mteTriggerConf -f
Если вы видите экран статуса, вы можете нажать
qна клавиатуре, чтобы выйти и вернуться в командную строку.
С запущенным агентом и установленными клиентскими инструментами ваша среда теперь готова к настройке и взаимодействию по SNMP.
Создание безопасного пользователя SNMPv3 в snmpd.conf
На этом этапе вы настроите SNMP-агент (snmpd) для использования SNMPv3, который предоставляет важные функции безопасности. В отличие от старых версий, SNMPv3 поддерживает аутентификацию (для проверки личности отправителя) и конфиденциальность (для шифрования данных). Вы добьетесь этого, создав нового пользователя непосредственно в конфигурационном файле агента, /etc/snmp/snmpd.conf.
Прежде чем вносить какие-либо изменения, крайне важно создать резервную копию исходного конфигурационного файла. Это позволит вам легко восстановить его, если что-то пойдет не так.
Выполните следующую команду для копирования конфигурационного файла:
sudo cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak
Теперь вы отредактируете основной конфигурационный файл /etc/snmp/snmpd.conf, чтобы добавить нового пользователя SNMPv3. Для этой задачи мы будем использовать текстовый редактор nano.
Выполните эту команду, чтобы открыть файл с правами sudo:
sudo nano /etc/snmp/snmpd.conf
Прокрутите до самого конца файла и добавьте следующие строки. Эти строки определяют нового пользователя с именем labexuser с надежными протоколами аутентификации (SHA) и конфиденциальности (AES).
createUser: Эта директива создает пользователя SNMPv3.labexuser: Имя пользователя для вашего пользователя SNMPv3.SHA: Протокол аутентификации (более безопасный, чем MD5).AuthPassLabEx: Парольная фраза для аутентификации (должна быть не менее 8 символов).AES: Протокол конфиденциальности (шифрования) (более безопасный, чем DES).PrivPassLabEx: Парольная фраза для конфиденциальности (должна быть не менее 8 символов).
rwuser: Эта директива предоставляет пользователю права на чтение и запись для всего дерева OID при использовании уровня безопасностиpriv(аутентификация и конфиденциальность).
Скопируйте и вставьте следующий блок конфигурации в конец файла:
## --- LabEx SNMPv3 User Configuration ---
## Create a secure SNMPv3 user for monitoring
createUser labexuser SHA "AuthPassLabEx" AES "PrivPassLabEx"
## Grant the new user read-write access with privacy
rwuser labexuser priv
## --- End of Configuration ---
После добавления текста сохраните файл и выйдите из nano, нажав Ctrl+O, затем Enter для подтверждения имени файла и, наконец, Ctrl+X для выхода.
Теперь вы успешно настроили безопасного пользователя для связи по SNMPv3. На следующем шаге вы перезапустите службу, чтобы применить эти изменения.
Перезапуск и проверка службы snmpd
На этом этапе вы примените новую конфигурацию пользователя, которую добавили на предыдущем шаге. Всякий раз, когда вы изменяете конфигурационный файл работающей службы, такой как snmpd, изменения не применяются автоматически. Вам необходимо перезапустить службу, чтобы она перечитала свой конфигурационный файл и загрузила новые настройки.
Сначала используйте команду systemctl для перезапуска службы snmpd. Это остановит текущий процесс и запустит новый с обновленной конфигурацией, включающей вашего пользователя labexuser.
sudo systemctl restart snmpd
Эта команда обычно не выдает никакого вывода, если она выполнена успешно.
Далее крайне важно убедиться, что служба перезапустилась без каких-либо проблем. Если в вашем файле /etc/snmp/snmpd.conf были синтаксические ошибки, служба может не запуститься. Вы можете проверить ее текущий статус, чтобы убедиться, что она работает корректно.
sudo systemctl status snmpd
Вы должны увидеть вывод, подтверждающий, что служба находится в состоянии active (running). Обратите внимание на временную метку, которая должна показывать, что служба была запущена совсем недавно.
● snmpd.service - Simple Network Management Protocol (SNMP) Daemon.
Loaded: loaded (/lib/systemd/system/snmpd.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2023-10-30 08:35:00 UTC; 3s ago
Main PID: 5678 (snmpd)
Tasks: 1 (limit: 4595)
Memory: 10.1M
CPU: 40ms
CGroup: /system.slice/snmpd.service
└─5678 /usr/sbin/snmpd -Lsd -Lf /dev/null -u Debian-snmp -g Debian-snmp -I -smux mteTrigger mteTriggerConf -f
Не забудьте нажать
q, чтобы выйти из представления статуса и вернуться в терминал.
Видя статус active (running), вы подтверждаете, что изменения в вашей конфигурации были действительными, и SNMP-агент теперь работает с новым пользователем labexuser, готовым к безопасной связи.
Выполнение безопасных запросов с помощью инструментов SNMPv3
На этом этапе вы будете использовать инструменты SNMP-клиента для выполнения безопасных запросов к SNMP-агенту, работающему на вашей локальной машине. Вы будете использовать учетные данные labexuser, которые вы настроили в snmpd.conf, чтобы протестировать безопасную связь SNMPv3. Это момент, чтобы увидеть вашу безопасную конфигурацию в действии.
Команды SNMP для SNMPv3 требуют нескольких специальных флагов для обработки аутентификации и конфиденциальности. Вот разбивка используемых вами параметров:
-v 3: Указывает, что вы используете SNMP версии 3.-l authPriv: Устанавливает уровень безопасностиauthPriv, что означает, что связь требует как аутентификации, так и конфиденциальности (шифрования). Это самый высокий уровень безопасности.-u labexuser: Указывает имя пользователя, которым является созданный вамиlabexuser.-a SHA: Определяет протокол аутентификации как SHA. Он должен соответствовать протоколу, установленному вsnmpd.conf.-A "AuthPassLabEx": Предоставляет парольную фразу для аутентификации.-x AES: Определяет протокол конфиденциальности (шифрования) как AES. Он также должен соответствовать вашей конфигурации.-X "PrivPassLabEx": Предоставляет парольную фразу для конфиденциальности.localhost: Целевой хост, на котором работает SNMP-агент. В данном случае это ваша собственная машина.
Сначала протестируем соединение, обойдя все дерево системы. Команда snmpwalk обходит деревья OID и возвращает все объекты в ветви.
Понимание структуры OID: Идентификаторы объектов (OID) используют иерархическую систему нумерации. OID 1.3.6.1.2.1.1 представляет группу "system" в стандартном MIB-II SNMP:
1.3.6.1= internet1.3.6.1.2= mgmt (management)1.3.6.1.2.1= mib-2 (standard MIB)1.3.6.1.2.1.1= system group (содержит основную системную информацию)
Выполните следующую команду для обхода дерева MIB системы:
snmpwalk -v 3 -l authPriv -u labexuser -a SHA -A "AuthPassLabEx" -x AES -X "PrivPassLabEx" localhost 1.3.6.1.2.1.1
Если команда выполнена успешно, вы увидите несколько OID, связанных с системой, и их значения. Это подтверждает, что ваш SNMP-менеджер успешно аутентифицировался в агенте (snmpd), и запрос был выполнен по безопасному зашифрованному каналу.
SNMPv2-MIB::sysDescr.0 = STRING: Linux labex-vm 5.15.0-XX-generic #XX-Ubuntu SMP ...
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-TC::linux
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (123456) 0:20:34.56
SNMPv2-MIB::sysContact.0 = STRING: Me <me@example.org>
SNMPv2-MIB::sysName.0 = STRING: labex-vm
SNMPv2-MIB::sysLocation.0 = STRING: Sitting on the Dock of the Bay
...
Успешный ответ доказывает, что вся ваша настройка SNMPv3 работает правильно. Если бы вы использовали неверные учетные данные или протоколы, команда завершилась бы ошибкой аутентификации.
Запрос конкретных OID с помощью snmpget
На этом шаге вы научитесь извлекать конкретные фрагменты системной информации с помощью команды snmpget. В то время как snmpwalk обходит полные деревья OID, snmpget предназначен для запроса конкретных идентификаторов объектов (OID) для точного извлечения информации.
Теперь, когда у вас есть рабочая и безопасная настройка SNMPv3, вы можете запрашивать конкретную системную информацию. OID уникально указывает на фрагмент управляемой информации в базе управления информацией (MIB) устройства.
Объяснение иерархии OID: Дерево OID SNMP следует международному стандарту ISO/IEC для иерархии идентификаторов объектов:
1 (iso)
└── 3 (org)
└── 6 (dod)
└── 1 (internet)
└── 2 (mgmt)
└── 1 (mib-2)
└── 1 (system)
├── 1.0 (sysDescr)
├── 3.0 (sysUpTime)
├── 4.0 (sysContact)
├── 5.0 (sysName)
└── 6.0 (sysLocation)
Это объясняет, почему системная информация начинается с 1.3.6.1.2.1.1 — это стандартизированный путь к группе системы в MIB-II.
Давайте запросим конкретный и часто используемый OID: описание системы. Этот OID извлекает базовое текстовое описание управляемого устройства.
Понимание конкретных OID: В группе системы (1.3.6.1.2.1.1) каждый фрагмент информации имеет свой собственный под-идентификатор:
1.3.6.1.2.1.1.1.0= sysDescr.0 (описание системы)1.3.6.1.2.1.1.3.0= sysUpTime.0 (время работы системы)1.3.6.1.2.1.1.4.0= sysContact.0 (контактная информация системы)1.3.6.1.2.1.1.5.0= sysName.0 (имя системы)1.3.6.1.2.1.1.6.0= sysLocation.0 (местоположение системы)
.0 в конце указывает, что это скалярное значение (один экземпляр), а не запись в таблице.
Выполните следующую команду для запроса описания системы:
snmpget -v 3 -l authPriv -u labexuser -a SHA -A "AuthPassLabEx" -x AES -X "PrivPassLabEx" localhost 1.3.6.1.2.1.1.1.0
Вывод покажет описание системы, подтверждая, что ваша аутентификация и конфиденциальность SNMPv3 работают правильно:
iso.3.6.1.2.1.1.1.0 = STRING: "Linux iZrj9ixg5sv0oem6yeu6aqZ 5.15.0-56-generic ..."
Далее, давайте запросим время работы системы, используя числовой OID 1.3.6.1.2.1.1.3.0 (что соответствует sysUpTime.0). Этот OID сообщает время с момента последней инициализации сетевой управляющей части системы:
snmpget -v 3 -l authPriv -u labexuser -a SHA -A "AuthPassLabEx" -x AES -X "PrivPassLabEx" localhost 1.3.6.1.2.1.1.3.0
Вывод покажет время работы в формате "Timeticks", который представляет собой сотые доли секунды, а также в удобочитаемом формате:
iso.3.6.1.2.1.1.3.0 = Timeticks: (48642) 0:08:06.42
Наконец, вы можете запрашивать несколько OID в одной команде, перечисляя их в конце. Давайте вместе получим описание системы и контактную информацию, используя их числовые OID.
Зачем использовать числовые OID? В некоторых средах символические имена, такие как sysDescr.0, могут не распознаваться, потому что:
- Файлы MIB не загружены или не установлены
- Конфигурация SNMP-клиента не включает необходимые определения MIB
- Использование числовых OID обеспечивает совместимость между различными системами
Выполните эту команду для одновременного запроса нескольких OID:
snmpget -v 3 -l authPriv -u labexuser -a SHA -A "AuthPassLabEx" -x AES -X "PrivPassLabEx" localhost 1.3.6.1.2.1.1.1.0 1.3.6.1.2.1.1.4.0
Это вернет оба значения в одном ответе:
iso.3.6.1.2.1.1.1.0 = STRING: "Linux iZrj9ixg5sv0oem6yeu6aqZ 5.15.0-56-generic ..."
iso.3.6.1.2.1.1.4.0 = STRING: "Me <me@example.org>"
Успешно запросив эти конкретные OID, вы продемонстрировали основную возможность SNMP для безопасного мониторинга сети. Теперь вы можете получать точные операционные данные с ваших устройств безопасным, аутентифицированным и зашифрованным способом.
Резюме
В этой лабораторной работе вы научились реализовывать безопасный сетевой мониторинг в системе Linux с использованием SNMPv3. Вы начали с установки основных компонентов, включая SNMP-агент (snmpd) и клиентские инструменты (snmp), после обновления репозитория пакетов системы. Основное внимание было уделено безопасности, которую вы настроили, создав нового пользователя SNMPv3 в файле snmpd.conf, с использованием надежных протоколов аутентификации и конфиденциальности (шифрования) для защиты данных при передаче.
После настройки безопасного пользователя вы перезапустили службу snmpd для применения новой конфигурации и проверили ее корректную работу. Затем вы использовали клиентские инструменты SNMP для выполнения безопасных запросов к агенту, аутентифицируясь с использованием учетных данных созданного вами пользователя SNMPv3. Вы практиковались в использовании snmpwalk для обхода полных ветвей дерева MIB и snmpget для извлечения конкретных идентификаторов объектов (OID). Это продемонстрировало, как безопасно отслеживать системную информацию, такую как описание системы, время работы и контактные данные, используя как комплексные обходы деревьев, так и точные индивидуальные запросы.



