Оглавление |
---|
Введение
SNMP (англ. - Simple Network Management Protocol
...
— простой протокол сетевого управления)
...
— стандартный интернет-протокол для управления устройствами в IP-сетях на основе
...
протоколов TCP/UDP. К поддерживающим SNMP устройствам относятся маршрутизаторы, коммутаторы, серверы, рабочие станции, принтеры, модемные стойки и другие. Протокол обычно используется в системах сетевого управления для контроля подключённых к сети устройств на предмет условий, которые требуют внимания администратора. SNMP
...
состоит из набора стандартов для сетевого управления, включая протокол прикладного уровня, схему баз данных и набор объектов данных.
Стенд
...
При описании протокола используются термины:
MIB (база управленческой информации)текстовый файл с инструкциями по сбору и упорядочению информации. Менеджер SNMP использует информацию из MIB для перевода и интерпретации сообщений перед их отправкой конечному пользователю. Ресурсы, хранящиеся в MIB, называются управляемыми объектами или переменными управления.
Описание стенда
Стенд состоит из двух компьютеров с установленной ОС Astra Linux
...
Special Edition.
Первый компьютер выступает в роли менеджера и ему присвоен IP-
...
адрес: 192.168.1.111
...
Второй компьютер выступает в роли опрашиваемого агента и ему присвоен IP-адрес: 192.168.1.112
1: Установка демона и утилит SNMP & SNMPD:
...
Установка пакетов
Установка SNMP на
...
компьютер в роли менеджера:
Command | ||
---|---|---|
| ||
sudo apt |
...
install snmp |
...
Установка SNMPD на
...
компьютер в роли агента (опрашиваемого) :
Command | ||
---|---|---|
|
...
sudo apt |
...
install snmpd |
2: Конфигурация:
Настройка
Настройка
...
менеджера SNMP
...
...
В конфигурационном файле /etc/snmp/snmp.conf
...
Command | ||
---|---|---|
| ||
sudo nano /etc/snmp/snmp.conf |
...
чтобы позволить менеджеру SNMP импортировать файлы MIB, следует закомментировать следующую строку:
Блок кода |
---|
#mibs : |
После чего сохранить файл (Ctrl+O) и выйти из редактора nano (ctrl+X).
б) агента snmpd:
...
Настройка агента SNMPD
В конфигурационном файле /etc/snmp/snmpd.conf
...
Блок кода | ||
---|---|---|
| ||
sudo nano /etc/snmp/snmpd.conf |
...
изменить параметр agentAddress, определяющий разрешенные подключения. По умолчанию разрешены только подключения с локального компьютера. Для разрешения внешних подключения привести параметры к виду:
Блок кода language bash #
...
Принимать
...
подключения
...
только
...
от
...
локальной системы #agentAddress udp:127.0.0.1:161 #
...
Принимать
...
подключения
...
по
...
всем
...
интерфейсам (
...
IPv4 *
...
и* IPv6) agentAddress udp:161,udp6:[::1]:161
Примечание Если не используется
...
IPv6, следует также удалить udp6:[::1]:161
...
Создать шаблон пользователя %Имя_вашего_пользователя, который, который будет далее использоваться
...
для создания обычных пользователей. Пакеты SNMP делают это
...
путем клонирования параметров пользователей.
...
Создавая нового пользователя,
...
указать тип аутентификации (MD5 или SHA) и пароль (минимум 8 символов). Если
...
планируется использовать при передаче данных защитное преобразование данных,
...
то указать протокол защитного преобразования (DES или AES) и пароль для него (
...
не обязателен). Если
...
пароль для протокола защитного преобразования не указан, то вместо него будет использоваться пароль аутентификации.
...
Пример:
Создание пользователя "usertest", с паролем "temp_password", с
...
типом аутентификации MD5 и протоколом защитного преобразования DES. Для этого в конфигурационном файле /etc/snmp/snmpd.cfg
...
указать:
Блок кода | ||
---|---|---|
| ||
createUser usertest MD5 temp_password DES
|
Далее в конфигурационном файле, пользователю "usertest" следует указать уровень доступа:
- rwuser - даёт право на чтение и запись.
- rouser - даёт право только на чтение.
Для обязательного использования защитного преобразования используется параметр priv .
Чтобы ограничить пользователя определённой частью MIB, нужно указать OID высшего уровня, к которому пользователь должен иметь доступ.
Блок кода | ||
---|---|---|
| ||
rwuser usertest priv
|
Сохраните и закройте файл /etc/snmp/snmpd.cfg.
...
После внесения изменений перезапустить службу snmpd:
Command | ||
---|---|---|
| ||
sudo |
...
systemctl restart snmpd |
...
...
Проверить статус менеджера snmpd:
Command | ||||
---|---|---|---|---|
|
...
● snmpd.service - Simple Network Management Protocol (SNMP) Daemon. мар 04 09:22:44 se17 systemd[1]: Starting Simple Network Management Protocol (SNMP) Daemon.... |
Предупреждения:
Блок кода |
---|
snmpd[7321]: /etc/snmp/snmpd.conf: line 145: Warning: Unknown token: defaultMonitors.
snmpd[7321]: /etc/snmp/snmpd.conf: line 147: Warning: Unknown token: linkUpDownNotifications. |
вызваны отсутствием MIB DISMAN (для его использования требуется отдельная лицензия). Эти предупреждения можно игнорировать (либо удалить/закомментировать соответствующие строки в конфигурационном файле /etc/snmp/snmpd.conf, либо установить DISMAN MIB).
Общая структура команд SNMP:
...
Для управления пользователями SNMPv3 применяется инструмент snmpusm. Три базовых операций SNMP
...
:
- snmpget - прочитать значение оценки с помощью устройства
...
- ;
- snmpset
...
- - установить значение параметра на устройство
...
- ;
- snmpwalk
...
- - прочитать с устройства часть дерева MIB.
При работе с набором net-snmp используется несколько шаблонов для вызова команд.
...
Для выполнения команд сначала нужно пройти аутентификацию и подключиться к демону SNMP. Для этого могут понадобиться следующие флаги:
-v (version): задаёт версию SNMP-протокола.
-c (community): определяет версию строки доступа .
-u (user-name): указывает имя пользователя, которого нужно авторизовать. Чтобы пользователь имел право на чтение и изменение, он должен быть зарегистрирован в SNMP.
-l (level): задаёт уровень безопасности для подключения. Можно использовать такие значения: noAuthNoPriv (без аутентификации), authNoPriv (аутентификация без защитного преобразования) и authPriv (аутентификация и защитное преобразование). Кроме того, указанный пользователь должен иметь доступ к выбранному уровню безопасности, иначе он не сможет подключиться.
-a (protocol): определяет протокол аутентификации, MD5 или SHA. Это значение должно совпадать с информацией пользователя, указанной при его создании.
-x (protocol): определяет протокол защитного преобразования, DES или AES. Это значение должно совпадать с информацией пользователя, указанной при его создании. Протокол защитного преобразования обязательно нужно указывать, если в настройках пользователя есть параметр priv.
-A (passphrase): пароль для аутентификации пользователя.
-X (passphrase): пароль защитного преобразования. Если вы не указали этот пароль, вместо него будет использоваться пароль для аутентификации. Это пароль обязательно нужно указывать, если в настройках пользователя есть параметр priv.
...
Общий синтаксис команды:
Command | ||
---|---|---|
| ||
snmp_command -u |
...
<имя_ |
...
пользователя> -l authPriv -a MD5 -x DES -A |
...
<пароль_ |
...
аутентификации> -X |
...
<пароль_защитного_ |
...
преобразования> <IP-адрес_хоста> <дополнительные_команды_и_ |
...
опции> |
Получение
...
информации с
...
удаленного хоста: snmpget
К примеру, чтобы убедиться, что пользователь usertest доступен,
...
выполнить на менеджере команду:
...
Command |
---|
...
language | bash |
---|
snmpget |
...
-u |
...
usertest |
...
-l |
...
authPriv |
...
-a |
...
MD5 |
...
-x |
...
DES |
...
-A |
...
temp_password |
...
-X |
...
temp_password |
...
192.168.1.112 |
...
1.3.6.1.2.1.1.1.0 |
...
Блок кода |
---|
SNMPv2-MIB::sysDescr.0 = STRING: Linux |
...
se17o1 5.4. |
...
0- |
...
81-generic |
...
#astra34+ci17-Ubuntu SMP |
...
Mon |
...
Nov |
...
22 13: |
...
21: |
...
54 UTC |
...
2021 x86_64 |
...
Строка 1.3.6.1.2.1.1.1.0 – это OID, который отвечает за отображение данных системы. В удаленной системе он выведет результат команды uname –a.
3б) Утилита snmpusm - для управления пользователями SNMPv3
...
Управление пользователями SNMPv3: snmpusm
Инструмент snmpusm позволяет на сервере-менеджере создавать новых пользователей, используя данные существующих пользователей в качестве шаблона. Общий синтаксис имеет вид:
Command |
---|
snmpusm <информация |
...
_об_уч_ |
...
записи> <удаленный_ |
...
хост> create |
...
<новый_ |
...
пользователь> <существующий_ |
...
пользователь> |
С помощью шаблона (ранее созданный пользователь usertest) и флагов
...
можно создать
...
нового пользователя как копию существующего:
Command |
---|
...
| ||
snmpusm |
...
-u |
...
usertest |
...
-l |
...
authPriv |
...
-a |
...
MD5 |
...
-x |
...
DES |
...
-A |
...
temp_password |
...
-X |
...
temp_password |
...
192.168.1.112 |
...
create |
...
newuser |
...
usertest |
...
Теперь на
...
удаленном сервере есть
...
пользователь newuser. Однако пока что он использует те же
...
учетные данные (пароли), что и usertest, и не имеет права изменять пользовательские данные. Для того, чтобы изменить
...
language | bash |
---|
...
пароли нового пользователя (пароль для аутентификации и пароль для протокола защитного преобразования) выполнить команды:
Command |
---|
snmpusm -u usertest -l authPriv -a MD5 -x DES -A temp_password -X temp_password 192.168.1.112 |
...
passwd -Ca setupauth new_pass newuser |
...
-X temp_password 192.168.1.112 passwd -Cx setupauth new_pass newuser |
Теперь у пользователя newuser установлен новый пароль
...
«new_pass».
Управление правами пользователей SNMPv3: snmpvacm
Инструмент snmpvacm позволяет изменять права польователей. Пример:
Command |
---|
snmpvacm -u usertest -l authPriv -a MD5 -x DES -A temp_password -X temp_password 192.168.1.112 createSec2Group 3 newuser rwgrp |
Пояснение к примеру:
- Команда createSec2Group имеет аргументы MODEL SECURITYNAME GROUPNAME и создает запись в таблице соответствия имен и прав доступа. Параметры:
- MODEL - цифра, указывающая модель безопасности:
- 1 - зарезервировано для SNMPv1;
- 2 - зарезервировано для SNMPv2c;
- 3 - User-based Security Model (USM) .
- SECURITYNAME - строка, указывающая имя субъекта безопасности (принципал). Для модели USM это имя пользователя;
- GROUPNAME - строка, указывающая имя группы, в которую дожен быть включен субъект. Это имя далее используется при назначении прав.
- MODEL - цифра, указывающая модель безопасности:
Назначение прав группе:
Command |
---|
snmpvacm -u usertest -l authPriv -a MD5 -x DES -A temp_password -X temp_password 192.168.1.112 createAccess rwgrp 3 2 1 allseeing allseeing none |
Пояснения к примеру:
- Команда createAccess имеет параметры GROUPNAME [CONTEXTPREFIX] MODEL LEVEL CONTEXTMATCH READVIEW WRITEVIEW NOTIFYVIEW и создает запись в таблице доступа, предоставляющую доступ к определенным MIB принципалам в указанной группе. Параметры:
- GROUPNAME - имя группы, для которой определяются права доступа;
- CONTEXTPREFIX (необязательный параметр) - строка, представляющая контекст применения создаваемой записи. Интерпретация значения строки зависит от значения параметра CONTEXTMATCH. Если не указан, то в качестве контекста применяется пустая строка "".
- MODEL - цифра, определяющая модель безопасности:
- 1 - зарезервировано для SNMPv1;
- 2 - зарезервировано для SNMPv2c;
- 3 - User-based Security Model (USM)
- LEVEL - цифра, определяющая минимальный уровень безопасности для запросов:
- 1 - noAuthNoPriv - без аутентификации и защитного преобразования передаваемых данных;
- 2 - authNoPriv - аутентификация без защитного преобразования передаваемых данных;
- 3 - authPriv - аутентификация и защитное преобразование передаваемых данных;
- CONTEXTMATCH - определяет способ интерпретации параметра CONTEXTPREFIX:
- 1 ('exact') - требует точного соответствия контекста CONTEXTPREFIX;
- 2 ('prefix') - требует соответствия начальной строки;
- READVIEW - имя набора MIB (команда createView), содержащего объекты MIB, доступные для чтения;
- WRITEVIEW - имя набора MIB (команда createView), содержащего объекты MIB, доступные для изменения значений;
- NOTIFYVIEW - имя набора MIB (команда createView), содержащего объекты MIB, доступные отправки извещение (в доступной версии не поддерживается);