Дерево страниц

Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

« Предыдущий Версия 16 Следующий »


Данная статья применима к:

  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7)
  • Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
  • Astra Linux Special Edition РУСБ.10015-16 исп. 1 и исп. 2
  • Astra Linux Special Edition РУСБ.10265-01 (очередное обновление 8.1)
  • Astra Linux Common Edition 2.12

Введение

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

Установка пакетов

Установка SNMP на компьютер в роли менеджера:

sudo apt install snmp
Установка SNMPD на компьютер в роли агента (опрашиваемого) :
sudo apt install snmpd

Настройка

Настройка менеджера SNMP

В конфигурационном файле /etc/snmp/snmp.conf чтобы позволить менеджеру SNMP импортировать файлы MIB, следует закомментировать следующую строку:

#mibs :


Настройка агента SNMPD

  1. В конфигурационном файле /etc/snmp/snmpd.conf изменить параметр agentAddress, определяющий разрешенные подключения. По умолчанию разрешены только подключения с локального компьютера. Для разрешения внешних подключения привести параметры к виду:

    #  Принимать подключения только от локальной системы
    #agentAddress  udp:127.0.0.1:161
    
    #  Принимать подключения по всем интерфейсам (IPv4 *и* IPv6)
    agentAddress udp:161,udp6:[::1]:161
    

    Если не используется IPv6, следует также удалить udp6:[::1]:161

  2. Создать шаблон пользователя %Имя_вашего_пользователя, который,  который будет далее использоваться для создания обычных пользователей. Пакеты 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

После внесения изменений перезапустить службу snmpd:

sudo systemctl restart snmpd
Проверить статус менеджера snmpd:
sudo systemctl status snmpd

● snmpd.service - Simple Network Management Protocol (SNMP) Daemon.
   Loaded: loaded (/lib/systemd/system/snmpd.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2022-03-04 09:22:44 MSK; 8s ago
  Process: 7319 ExecStartPre=/bin/mkdir -p /var/run/agentx (code=exited, status=0/SUCCESS)
 Main PID: 7321 (snmpd)
    Tasks: 1 (limit: 4641)
   Memory: 5.2M
   CGroup: /system.slice/snmpd.service
           └─7321 /usr/sbin/snmpd -Lsd -Lf /dev/null -u Debian-snmp -g Debian-snmp -I -smux mteTrigger mteTriggerConf -f -p /run/snmpd.pid

мар 04 09:22:44 se17 systemd[1]: Starting Simple Network Management Protocol (SNMP) Daemon....
мар 04 09:22:44 se17 systemd[1]: Started Simple Network Management Protocol (SNMP) Daemon..
мар 04 09:22:44 se17 snmpd[7321]: /etc/snmp/snmpd.conf: line 145: Warning: Unknown token: defaultMonitors.
мар 04 09:22:44 se17 snmpd[7321]: /etc/snmp/snmpd.conf: line 147: Warning: Unknown token: linkUpDownNotifications.
мар 04 09:22:44 se17 snmpd[7321]: Turning on AgentX master support.
мар 04 09:22:44 se17 snmpd[7321]: NET-SNMP version 5.7.3

Предупреждения:

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.

Общий синтаксис команды:

snmp_command -u <имя_пользователя> -l authPriv -a MD5 -x DES -A <пароль_аутентификации> -X <пароль_защитного_преобразования> <IP-адрес_хоста> <дополнительные_команды_и_опции>

Получение информации с удаленного хоста: snmpget

К примеру, чтобы убедиться, что пользователь usertest доступен, выполнить на менеджере команду:

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

Строка 1.3.6.1.2.1.1.1.0 – это OID, отвечающий за отображение данных системы. В удаленной системе он выведет результат, аналогичный результату команды uname –a:
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

Управление пользователями SNMPv3: snmpusm

Инструмент snmpusm позволяет на сервере-менеджере создавать новых пользователей, используя данные существующих пользователей в качестве шаблона. Общий синтаксис имеет вид:

snmpusm <информация_об_уч_записи> <удаленный_хост> create <новый_пользователь> <существующий_пользователь>
С помощью шаблона (ранее созданный пользователь usertest) и флагов можно создать нового пользователя как копию существующего:
snmpusm -u usertest -l authPriv -a MD5 -x DES -A temp_password -X temp_password 192.168.1.112 create newuser usertest
Теперь на удаленном сервере есть пользователь newuser. Однако пока что он использует те же учетные данные (пароли), что и usertest, и не имеет права изменять пользовательские данные. Для того, чтобы изменить пароли нового пользователя (пароль для аутентификации и пароль для протокола защитного преобразования) выполнить команды:
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
snmpusm -u usertest -l authPriv -a MD5 -x DES -A temp_password -X temp_password 192.168.1.112 passwd -Cx setupauth new_pass newuser

Теперь у пользователя newuser установлен новый пароль «new_pass».

Управление правами пользователей SNMPv3: snmpvacm

Инструмент snmpvacm позволяет изменять права польователей. Пример:

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 - строка, указывающая имя группы, в которую дожен быть включен субъект. Это имя далее используется при назначении прав.

Назначение прав группе:

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, доступные отправки извещение (в доступной версии не поддерживается);
  • Нет меток