Протокол SNMP Simple Network Management Protocol (простой протокол сетевого управления) был изначально разработан для мониторинга сетевых устройств, однако в последствии добавилась возможность получать данные с серверов, принтеров и других устройств имеющих сетевой интерфейс. Современные версии протокола допускает возможность внесения изменений в функционирование устройств.
При использовании протокола SNMP мы работаем с четырьмя сущностями:
Существует определенный набор команд обмена между агентом и менеджером:
Как сказано выше MIB это Management information base. Древовидная база данных в текстовом формате. Каждое сетевое устройство работающее с SNMP протоколом имеет в себе такую базу. Базы разных производителей оборудования отличаются друг от друга, но во всех базах есть общие структуры присущие всем сетевым устройствам, как например, ветка описывающая сетевой интерфейс. Это базовые структуры дерева. Все объекты древовидной структуры (базы данных) называются OID (Object Identifier). OID представляет собой числа разделенные точками. Что-то типа .1.3.6.1.2.1.2.2.1.7. Также имеется мнемонический, так называемый абстрактный синтаксис нотаций - ASN.1. для выше представленного IOD-а он будет таким: .iso.org.dod.internet.mgmt.mib-2.interfaces.ifTable.ifEntry.ifAdminStatus. При общении Агента и Менеджера передаются только числовые значения OID.
Существуют стандартные принципы формирования дерева MIB которые контролируются международными организациями. Каждый производитель сетевого оборудования "пристраивает" свою ветвь к базовой структуре дерева MIB, а также производитель публикует свои MIB-ы, для того, чтобы можно было использовать например MIB-браузеры используя нотацию ASN.1. Любая ветвь MIB заканчивается некоторой переменной в которую устройство записывает некоторое значение. Переменная также имеет свой OID (как один из объектов дерева). Значения этих переменных как раз и важны для организации мониторинга.
Всего существует 3 версии протокола, причем вторая версия подвергалась изменениям. Версии не совместимы между собой, от версии к версии улучшалась безопасность протокола. Пакеты первой версии протокола легко вылавливаются в сети и подделываются. Несмотря на это первая версия используется по настоящее время очень активно, на ряду со второй и третьей. Конечно все более менее серьезное оборудование поддерживает уже третью версию. С первой версией работает либо очень старое оборудование, либо всякие устройства типа датчиков температуры, источников бесперебойного питания и т.п.
Настроить SNMP на Cisco можно следующим образом (полагаю, что это старые команды для настройки SNMP v1 оставшиеся как, например, команда write. Версию протокола выбрать нельзя)
snmp-server community pa$$w0rd ro acl-Monitoring
pa$$w0rd - имя community
acl-Monitoring - access-list
Есть ещё один вариант настройки SNMP на Cisco, здесь уже можно выбрать версию протокола.
При использовании протокола SNMP мы работаем с четырьмя сущностями:
- Управляемое устройство - это роутер, коммутатор, сервер, устройство гарантированного электропитания со специальной платой и т.п.;
- SNMP менеджер - ПО мониторинга или SNMP браузер.
- SNMP агент - ПО, работающее на управляемом устройстве.
- SNMP MIB - (Management information base). По сути - это некая база данных в виде текстовых фалов записями из которой обмениваются Агент и Менеджер
Существует определенный набор команд обмена между агентом и менеджером:
- Trap – одностороннее уведомление от SNMP агента –> менеджеру о каком-либо событии.
- GetReponse – ответ от агента к менеджеру, возвращающий запрошенные значения переменных.
- GetRequest - запрос к агенту от менеджера, используемый для получения значения одной или нескольких переменных.
- GetNextRequest - запрос к агенту от менеджера, используемый для получения следующего в иерархии значения переменной.
- SetRequest - запрос к агенту на установку значения одной или нескольких переменных.
- GetBulkRequest – запрос к агенту на получение массива данных (тюнингованная GetNextRequest).
- InformRequest – одностороннее уведомление между менеджерами. Может использоваться, например для обмена информацией о MIB (соответствие символьных OID - цифровым). В ответ менеджер формирует аналогичный пакет в подтверждение того, что исходные данные получены.
SNMP MIB
Существуют стандартные принципы формирования дерева MIB которые контролируются международными организациями. Каждый производитель сетевого оборудования "пристраивает" свою ветвь к базовой структуре дерева MIB, а также производитель публикует свои MIB-ы, для того, чтобы можно было использовать например MIB-браузеры используя нотацию ASN.1. Любая ветвь MIB заканчивается некоторой переменной в которую устройство записывает некоторое значение. Переменная также имеет свой OID (как один из объектов дерева). Значения этих переменных как раз и важны для организации мониторинга.
Версии протокола SNMP
- SNMP v1 Безопасность протокола базировалась на модели безопасности на основе сообществ (т.н. Community-based Security Model), что подразумевало аутентификацию на основе единой текстовой строки - своеобразного пароля (т.н. community-sting), которая передавалась в открытом виде.
- SNMP v2 Последняя версия протокола вернулась Community-based Security и стала именоваться SNMPv2c и применяется по сей день. SNMPv2 была переписана чуть более чем полностью, в результате чего существенно повышено быстродействие протокола, безопасность.
- SNMP v3 Третья версия протокола была более удачно доработана и поддерживает как аутентификацию на основе имени пользователя (т.н. User-based Security Model), так и шифрование трафика. Хотя их можно и не использовать.
- v1 – никакой безопасности, кроме строки community, что-то типа пароля, который открыто хранится в конфиге.
- v2 – кроме community string можно шифровать трафик между сервером и агентом.
- v3 – помимо шифрования, используется имя пользователя, а не community. Пользователь может быть в разных группах, которым могут быть назначены разные права на чтение и запись различных MIB.
Конфигурирование SNMP
snmp-server community pa$$w0rd ro acl-Monitoring
pa$$w0rd - имя community
acl-Monitoring - access-list
SWG(config)# snmp-server community pa$$w0rd ?
<1-99> Std IP accesslist allowing access with this community string
<1300-1999> Expanded IP accesslist allowing access with this community string
WORD Access-list name
ipv6 Specify IPv6 Named Access-List
ro Read-only access with this community string
rw Read-write access with this community string
view Restrict this community to a named MIB view
<cr>
SWG(config)# snmp-server group GROUP1 v1 ?
access specify an access-list associated with this group
context specify a context to associate these views for the group1
notify specify a notify view for the group
read specify a read view for the group
write specify a write view for the group
<cr>
SWG(config)# snmp-server group GROUP1 v2c ?
access specify an access-list associated with this group
context specify a context to associate these views for the group
notify specify a notify view for the group
read specify a read view for the group
write specify a write view for the group
<cr>
SWG(config) #snmp-server group GROUP1 v3 ?Команды для версий SNMP 1 и 2c одинаковые. Если мы выбираем версию 3, то как видно выше, команды, которые можно вводить, меняются.
auth group using the authNoPriv Security Level
noauth group using the noAuthNoPriv Security Level
priv group using SNMPv3 authPriv security level
Настройка SNMPv3 на Cisco
Авторизация. Есть три варианта авторизации для SNMPv3:
- noauth – проверка только имени пользователя, при этом шифрование не работает
- auth – авторизация происходит через md5, но данные шифроваться не будут
- priv – авторизация будет через md5 + шифрование данных
- View
- Group
- User
Group – группа, которой разрешаем доступ к view.
User – пользователь, которого относим к нужной группе.
То есть мы можем на одной железке создавать несколько пользователей snmp, у которых могут быть разные права на чтение или запись для всяких mib и пр. То есть кому-то можно только снять статистику с интерфейсов, а кому-то только отправить устройство в ребут. (Хотя я бы предпочел перезагружать устройство вручную, а для разграничения прав доступа админов к устройству есть TACACS+)
Итак, синтаксис. Создаем view
#snmp-server view test_view system includedtest_view – название
system – ветка mib которые нам нужны, взял с выше упомянутого mib-навигатора
include – ну собственно что мы включаем во view, можно некоторые MIB-ы исключить параметром exclude
Добавим еще статистику интерфейсов к нашем view
#snmp-server view test_view mib-2 includedТеперь создаем группу:
#snmp-server group group_test v3 auth read test_viewgroup_test – название группы
v3 – версия snmp
auth – использовать md5 аутентификацию, но без шифрования данных
read – только чтение
И создаем пользователя.
#snmp-server user admin1 group_test v3 auth md5 password1 priv des password2 access acl-Monitoringgroup_test - уже созданная группа
password1 - пароль для пользователя
password2 - пароль для шифрования данных при передаче
acl-Monitoring - access-list кому можно присоединение
Следует заметить, что имя пользователя и пароль явно не отображаются в конфиге. Пользователей можно посмотреть командой:
SWG# sh snmp userЕщё одна полезная команда, которая напрямую к SNMP не относится, но она необходима при настройке мониторинга. Если посмотреть вывод следующей команды, то видно, что значению Ifindex соответствует некое число. Это число на оборудовании меняется при перезагрузке.
User name: User1
Engine ID: 800000090300001BD495EF00
storage-type: nonvolatile active access-list: 3
Authentication Protocol: MD5
Privacy Protocol: DES
Group-name: group-test
SWG#sh snmp mib ifmib ifindex FastEthernet0/24Чтобы значение не менялось применяется следующая команда:
Interface = FastEthernet0/24, Ifindex = 10024
SWG#(config)snmp-server ifindex persistТеперь берем snmpwalk или какой-то софт для мониторинга и проверяем. Я пользуюсь Manage Engine MIB Brouser, либо прямо с сервера мониторинга запускаю команды:
snmpwalk -v3 -l authPriv -u admin1 -a MD5 -A password1 -x DES -X password2 10.10.10.22:161 IF-MIB::ifIndexНа моих устройствах стоят следующие настройки:
snmpget -v3 -l authPriv -u admin1 -a MD5 -A password1 -x DES -X password2 10.10.10.22:161 .1.3.6.1.4.1.9.9.42.1.5.2.1.46.18
snmp-server group GROUP1 v3 auth read readview1 access acl-MonitoringДва раза прописана группа чтобы была возможность работать как с шифрованием данных, так и без него.
snmp-server group GROUP1 v3 priv read readview1 access acl-Monitoring
snmp-server view readview1 internet includedsnmp-server ifindex persist
snmp-server ip dscp 18
snmp-server user admin1 GROUP1 v3 auth md5 password1 priv des password2 access acl-Monitoring
Часть информации взято отсюда http://www.k-max.name/linux/snmp-protocol
Keine Kommentare:
Kommentar veröffentlichen