SNMP: Управление и мониторинг сетей

Что такое SNMP?

SNMP (Simple Network Management Protocol) — это протокол для управления и мониторинга сетевых устройств, таких как маршрутизаторы, коммутаторы и фаерволы. Он является частью системы управления сетью и позволяет администраторам:

  • Отслеживать состояние устройств;

  • Вносить изменения в конфигурацию;

  • Получать уведомления о событиях.

Основные концепции SNMP

Устройства в SNMP

  1. Управляемые устройства (Managed Devices): устройства, которые контролируются с помощью SNMP.

  2. Станция управления сетью (NMS): сервер или система, управляющая устройствами. Это также называется SNMP-сервером.

SNMP-менеджером может быть любое устройство, способное выполнять функции управления сетью, например, наш ноутбук с установленным программным обеспечением для управления (например, SolarWinds, Zabbix, или даже встроенные утилиты).

SNMP-агент также может быть любым устройством, поддерживающим SNMP, например, маршрутизаторы, коммутаторы, серверы, принтеры или даже IoT-устройства. Агент работает на самом устройстве, собирает информацию и отправляет её менеджеру по запросу или при наступлении определённых событий.

SNMP MIB

MIB (Management Information Base) — это база данных, которая хранит информацию о параметрах устройства, управляемого через SNMP. Проще говоря, MIB — это каталог или таблица, где для каждого параметра устройства задан уникальный идентификатор.

Простыми словами:

MIB — это как список настроек и данных устройства, доступных для мониторинга и управления через SNMP. Например:

  • Температура устройства.

  • Скорость передачи данных через порт.

  • Состояние интерфейсов (включён/выключен).

  • Загрузка процессора или памяти.

    Пример на CMD snmpget -v:2c -c:public 192.168.1.1 1.3.6.1.2.1.1.5.0Пример на CMD snmpget -v:2c -c:public 192.168.1.1 1.3.6.1.2.1.1.5.0

Компоненты SNMP

  • Менеджер отправляет запрос (например, snmpget) с использованием OID.

  • Агент извлекает данные из MIB и возвращает ответ.

  • При событиях (например, сбое интерфейса) агент отправляет trap или inform уведомление менеджеру.

Основные операции в SNMP

  1. Уведомления (Notifications): устройства отправляют уведомления (например, traps) о событиях.

  2. Чтение (Read): NMS запрашивает информацию (например, загрузка процессора).

  3. Запись (Write): NMS изменяет конфигурацию устройств (например, смена IP-адреса).

Версии SNMP

  1. SNMPv1: базовая версия с ограниченными возможностями.

  2. SNMPv2: Почти нигде не увидите когда его создавали он был очень сложным как структура и поэтому его урезали и заменили SNMPv2c

  3. SNMPv2c: улучшенная версия с поддержкой community strings (строки аутентификации).

  4. SNMPv3: самая безопасная версия с шифрованием и аутентификацией.

Основные команды конфигурации SNMP на Cisco

Добавление информации о контакте и местоположении

R1(config)#snmp-server contact (mail)
R1(config)#snmp-server location (location srv)

Эти команды добавляют описание:

  • contact: указывает, кому писать в случае проблем.

  • location: указывает физическое местоположение устройства.

Настройка Community Strings

Community Strings — это строки аутентификации (пароли), предоставляющие доступ к устройству через SNMP.

  • Read-Only (RO): только для чтения.

  • Read-Write (RW): полный доступ (чтение + запись).

Примеры настройки:

R1(config)#snmp-server community MyReadOnly ro
R1(config)#snmp-server community MyReadWrite rw

Для дополнительной безопасности можно ограничить доступ по IP:

R1(config)#snmp-server community MyReadOnly ro 192.168.1.0 255.255.255.0

Почему это важно:

  • Защищает SNMP от несанкционированного доступа.

  • Позволяет задавать уровень доступа (RO или RW).

Указание сервера SNMP

R1(config)#snmp-server host 192.168.1.1 version 2c (Word)

Что делает команда:

  • Указывает IP-адрес сервера управления SNMP.

  • Задает используемую версию SNMP (в данном случае 2c).

  • Указывает строку аутентификации (Jeremy1).

Почему это важно:

  • Позволяет устройству отправлять данные только на указанный сервер.

Настройка уведомлений (Traps)

R1(config)#snmp-server enable traps snmp linkdown linkup
R1(config)#snmp-server enable traps config

Что делает команда:

  • linkdown/linkup: уведомляет о состоянии интерфейса (включение/отключение).

  • config: уведомляет об изменении конфигурации.

Почему это важно:

  • Позволяет администраторам быстро реагировать на события.

Типы сообщений SNMP

  1. Чтение:

    • Get: запрос данных.

    • GetNext: запрос следующего параметра.

    • GetBulk: запрос нескольких параметров сразу.

  2. Запись:

    • Set: изменение данных (например, IP-адреса).

  3. Уведомления:

    • Trap: уведомление без подтверждения.

    • Inform: уведомление с подтверждением.

  4. Ответы:

    • Ответ устройства на запросы Get, Set и Inform.

Рекомендации по безопасности

  1. Удалите строки аутентификации по умолчанию:

    R1(config)#no snmp-server community public
    R1(config)#no snmp-server community private
  2. Используйте SNMPv3 вместо SNMPv1 и SNMPv2c для шифрования данных.

Основные SNMP-команды в командной строке (cmd) на Windows и Linux, а также их описание

На Windows

Для работы с SNMP в Windows требуется утилита snmpwalk, snmpget, или другие из пакета Net-SNMP. Убедитесь, что SNMP утилиты установлены (Net-SNMP можно скачать отдельно).

Основные команды:

  1. snmpget
    Используется для получения конкретного значения из устройства.

    snmpget -v:2c -c:<community_string> <IP-адрес> <OID>

    Пример:

    snmpget -v:2c -c:public 192.168.1.1 1.3.6.1.2.1.1.5.0
    • -v:2c — версия SNMP (в данном случае SNMPv2c).

    • -c:public — community string.

    • 192.168.1.1 — IP устройства.

    • 1.3.6.1.2.1.1.5.0 — OID для имени хоста.

  2. snmpwalk
    Получает список всех доступных параметров на устройстве.

    snmpwalk -v:2c -c:<community_string> <IP-адрес>

    Пример:

    snmpwalk -v:2c -c:public 192.168.1.1
  3. snmpset
    Изменяет значение параметра на устройстве.

    snmpset -v:2c -c:<community_string> <IP-адрес> <OID> <тип данных> <значение>

    Пример:

    snmpset -v:2c -c:private 192.168.1.1 1.3.6.1.2.1.1.5.0 s "NewHostName"
    • s — строка (тип данных).

    • NewHostName — новое значение.

  4. snmptrap
    Отправляет trap-уведомление на SNMP-сервер.

    snmptrap -v:2c -c:<community_string> <IP сервера> <OID> <сообщение>

На Linux

В Linux SNMP-команды предоставляются пакетом Net-SNMP. Установите его через менеджер пакетов:

sudo apt install snmp  # Для Debian/Ubuntu
sudo yum install net-snmp-utils  # Для RedHat/CentOS

Основные команды:

  1. snmpget

    snmpget -v2c -c <community_string> <IP-адрес> <OID>

    Пример:

    snmpget -v2c -c public 192.168.1.1 1.3.6.1.2.1.1.5.0
  2. snmpwalk

    snmpwalk -v2c -c <community_string> <IP-адрес>

    Пример:

    snmpwalk -v2c -c public 192.168.1.1
  3. snmpset

    snmpset -v2c -c <community_string> <IP-адрес> <OID> <тип данных> <значение>

    Пример:

    snmpset -v2c -c private 192.168.1.1 1.3.6.1.2.1.1.5.0 s "NewDeviceName"
  4. snmptrap

    snmptrap -v2c -c <community_string> <IP сервера> <OID> <сообщение>

    Пример:

    snmptrap -v2c -c public 192.168.1.100 "" 1.3.6.1.6.3.1.1.5.3 "linkDown"

Полезные команды для диагностики:

  1. Проверить, открыт ли порт SNMP на устройстве (Windows):

    telnet <IP-адрес> 161
  2. Отобразить доступные службы (Linux):

    snmpstatus -v2c -c <community_string> <IP-адрес>