Сегодня я постараюсь рассказать немного о SNMP. Где и зачем применяется, как настроить, как обезопасить себя, какие версии SNMP бывают, чем отличаются и так далее.
SNMP это аббревиатура, которая расшифровывается как: Simple Network Management Protocol, что в переводе означает: простой протокол управления сетью.
Этот протокол основан на TCP/IP.
Призван он для того, что бы управлять сетевыми устройствами, а так же их мониторить.
Сегодня нас будет интересовать больше второе, тоесть мониторинг устройств.
Что мы будем понимать под этим?
Это снятие данных с устройств (девайс, device) о состоянии интерфейсов, о трафике, который проходит по ним, о загрузке CPU устройства, о процессах, и так далее и тому подобное, для дальнейшего отображения в удобном виде, например графиках (для этого мы будем использовать cacti, но об этом позже.)
SNMP делит устройства как бы на два вида:
- это управляющие устройства (тоесть по сути ПК, который будет собирать статистику.)
- сетевые агенты, которые будут отсылать свои данные, например о загрузке сетевого интерфейса управляющему устройству, за определенный промежуток времени. (агентом например может быть устройство, такое как cisco switch 2960, т.е. это непосредсвенно устройство, которым мы собираемся управлять/мониторить.).
Сейчас существует три версии SNMP. Рассмотрим коротко особенности каждой из них:
- SNMP Version 1. Аутентификация происходит по так называемой Community (просто строка.)С точки зрения безопасности, нет никакого шифрованная данных, чтоб подключиться к устройству, необходимо просто знать вышеописанную строку (community)
- SNMP Version 2. Все так же как и в SNMP Version 1, только теперь доступно шифрование трафика, который «ходит» между управляющей станцией и агентом snmp.
- SNMP Version 3. Здесь можно выделить три режима работы, но всех объеденяет то, что вместо Community String теперь используется имя пользователя.
Рассмотрим эти три режима:
- авторизация только по имени пользователя, больше ничего не требуется. Трафик не шифруется. Этот режим напоминает нам SNMP v1/2
- авторизация с помощью имени пользователя и пароля. Пароль шифруется с помощью md5 или sha (зависит от наших настроек). Трафик не шифруется.
- авторизация с помощью имени пользователя и пароля (пароль так же шифруется md5 или sha), но здесь травки уже шифруется по алгоритму DES-56bit.
В связи с этим, администратор может гибко настраивать те или иные права. Например создать группу пользователя, наделить ее какими-то правами, и в эту группу добавлять пользователей.
В нашем примере, в дальнейшем будет одна группа и один пользователь, принадлежащей ей.
Теперь, что нам необходимо уяснить, это как протокол может поддерживать множество вендоров, как он узнает как именно у разного оборудования можно снимать статистику.
Все очень просто. Существуют специальные библиотеки, MIB — Management Information Base. Здесь хранятся все параметры того или иного устройства.
База MIB состоит из объектов, которые называются OID — Object Identifier, которые определяют непосредственно тот или иной параметр.
Сушествуют некие общие базы MIB, но так же существует расширяемые базы, разных вендоров, таким образом можно сказать, что SNMP использует расширяемую модель.
Зная это, мы можем сформулировать, как все это работает на логическом уровне.
Допустим, у нас есть сеть, состоящая из нескольких свитчей, которые мы и хотим мониторить. А так же у нас есть специальная машина, которая будет собирать необходимую информацию с свитчей и строить соответствующие графики.
На каждом сетевом устройстве, настраивается агент snmp, на управляющей машине указываются данные, которые необходимы для подключения к сетевому устройству и снятия с него данных, к таким параметрам относится : хост/ip, community, user/pass, и так далее. Управляющая машина будет, например, каждые пять минут опрашивать наши агенты, получать данные, обрабатывать их, и строить графики.
Тем самым мы обеспечим наглядную картину дел, происходящей в нашей сети.
Теперь от философии перейдем к более конкретным вещам.
Есть свитч, cisco 3560, нам необходимо мониторить порт, g0/1 (в моем случае это транковый порт, который идет в distribution layer), анализировать мы будем загрузку данного интерфейса.
Перейдем к настройке устройства:
Сначала я создам access-list , где укажу, что доступ к снятию информации с коммутатора имеет только один хост (наша управляющая система, на которой установлен cacti).
access-list 1 remark ACCESS ACL SNMP
access-list 1 permit 10.0.100.254
где, 10.0.100.254 это наш cacti.
теперь нам необходимо определить, что мы разрешаем только чтение наших параметров с cisco устройства.
делается это с помощью view.
snmp-server group cactigroup v3 auth read readonly access 1
Сначала мы определяем view, с именем readonly, В качестве Mib Family мы указываем «internet» и дальше можно указать, включить эту gpoup mib (include) или наоборот исключить (exclude). В нашем случае необходимо включить.
Вот как целиком выглядит команда:
snmp-server view readonly internet included
Далее мы создадим группу, определим версию SNMP, укажим что будем использовать режим с авторизация по пользователю и паролю, укажим что можно делать вышеописанной view и пропишем access-list, который мы с вами создали ранее, под номером 1.
snmp-server group cactigroup v3 auth read readonly access 1
После того, как мы создали группу, теперь нам необходимо создать пользователя, принадлежащий нашей группе:
snmp-server user cactiuser cactigroup v3 auth md5 123456
Здесь мы указали что имя пользователя: cactiuser, используем 3-ю версию протокола SNMP, auth опять же указывает на то что аутентификация будет происходить по имени и паролю, шифруем пароль в md5, и далее указываем пароль.
Вот все необходимые минимальные действия по настройке cisco-устройства, для того чтоб мы могли снимать данные для перевода сухих цифр в графики 🙂
Все это относилось к версии 3 протокола SNMP.
Если брать версии 1 или 2, то там все просто. Рассмотрим кратко пример.
Как мы помним, аутентификация в этих версиях происходит по Community String.
Community String, будем использовать с хитрой последовательностей символов, например: FDSREfdsr32
Эта же строка, по сути является паролем, поэтому не будем использовать стандартные community, типа public и т.п.
snmp-server community FDSREfdsr32 ro 1
Здесь мы указали имя нашей community, далее «ro» означает, что доступ — read only, и «1» это наш список доступа.
Теперь перейдем к настройке cacti.
Я использую систему FreeBSD. Установка не должна вызвать никаких затруднений.
Все как обычно, установка из портов:
cd /usr/ports/net-mgmt/cacti
make install clean
После того как все необходимое будет скачано и установлено, в самом конце у вас будет список шагов, которые необходимо будет выполнить для заключительной настройки. Это такие шаги как, создание базы данных и пользователя в mysql, развертывания структуры БД, настройка apache, и так далее.
Cacti is now installed. If you intall it for the first time,
you may have to follow this steps to make it work correctly:1. Create the MySQL database:
# mysqladmin —user=root create cacti
2. Create a mysql user/password for cacti:
(change user and/or password if required)
# echo «GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY ‘cactiuser’; FLUSH PRIVILEGES;» | mysql
3. Import the default cacti database:
# mysql cacti < /usr/local/share/cacti/cacti.sql
4. Edit /usr/local/share/cacti/include/config.php.
5. Add a line to your /etc/crontab file similar to:
*/5 * * * * cacti /usr/local/bin/php /usr/local/share/cacti/poller.php > /dev/null 2>&1
6. Add alias in apache config for the cacti dir:
Alias /cacti «/usr/local/share/cacti/»
7. Be sure apache gives an access to the directory (‘Allow from’ keywords).
8. Open a cacti login page in your web browser and login with admin/admin.
После того как вы выполните все необходимые шаги, вы сможете заходить на cacti через веб интерфейс. Web-интерфейс состояит как бы из двух частей:
- консоль, где делаются все настройки касающиеся SNMP, отображения графиков, и так далее и тому подобное.
- графики, непосредственно то, где можно в удобном виде отобразить графики, для дальнейшего анализа.
Начнем нашу настройку.
Главная страница будет выглядеть примерно так:
Переходим в пункт меню — Devices. Далее нам необходимо добавить устройство, жмем на Add.
Заполняем необходимые нам поля:
- Description — описание устройства
- Hostname — DNS-имя, либо IP адрес устройства, по которому будет происходить обмен SNMP
- Host Template — выбрать из списка темплейт для устройства, например Cisco Router.
- SNMP Version — необходимо выбрать версию протокола SNMP, т.к. в нашем примере мы будем использовать третью версию, ее и выбираем. Появятся дополнительные поля для ввода имени пользователя, пароля, выбор алгоритма шифрованная имени и пароля, а так же можно выбрать алгоритм ширования данных. Вводим данные, алгоритм md5, privacy — выбираем none, т.е. данные шифровать не будут.
После всего этого жмем на Create.
Далее у нас появится список устройств, в данном случае устройство одно, выбираем его. Справа мы увидим действия, которые нам разрешаются сделать:
Выбираем Create Graphs for this Host
Тут выбирается список интерфейсов, которые вы хотите мониторить, так же можно выбрать что необходимо мониторить CPU, memory и так далее.
после того как все выбрали, вы жмете Create, и если все правильно, через пять минут (как только отработает crontab) у вас начнутся создаваться графики.
Темплейты для того или иного устройства можно найти на официальном сайте cacti, обычно на форуме их выкладывают, для свободного скачивания и применения.
p.s. Статья называется мониторинг устройств cisco, но на самом деле все делается так же и для других устройств, необходимо найти только нужные Вам темплейты, импортировать их.
Графики будут иметь примерно следующий вид:
Полезные ссылки:
forums.cacti.net — здесь можно почерпнуть много полезной информации, а так же найти темплейты на интересующее вас устройство.
http://www.cisco.com/en/US/docs/ios/12_0t/12_0t3/feature/guide/Snmp3.html — описание и настройка snmp v3 на cisco устройствах.http://docstore.mik.ua/orelly/networking_2ndEd/snmp/appf_02.htm — так же немного о snmp и настройке на cisco