пятница, 25 февраля 2011 г.

SNMPv3

Про SNMPv3
SNMP – протокол прикладного уровня. Он предназначен для обмена информацией между сетевыми устройствами. При помощи этого протокола, сетевой администратор может производить анализ сетевого оборудования, находить и решать множество сетевых проблем. В Декабре 1997 года с выходом SNMPv3, пользователям стали доступны новые службы, такие как: ограничение доступа, защита данных и аутентификация пользователя<* см. стандарты RFC 2271-2275>. Кроме этого, стоит отметить, что SNMPv3 перенял модульную архитектуру от своих предшественников. Это обеспечивает поддержку предыдущих версий SNMPи, не смотря на то, что SNMPv1 и SNMPv2 не поддерживают аутентификацию и шифрование, у Вас будет возможность управления устройствами, которые поддерживают эти версии.
      Для каждого сетевого устройства пароль преобразуется в некоторый уникальный ключ. Это обеспечивает дополнительную безопасность т.к. даже в том случае, если ключ будет перехвачен, злоумышленник получит доступ только к одному сетевому устройству. Для шифрования пароля используется алгоритм MD5, но разработчики видимо решили, что это не обеспечит достаточной сохранности пароля и поэтому блок данных (PDU) дважды хэшируется при помощи двух разных ключей, которые в свою очередь генерируются из закрытого ключа. Позже, первые 12 октетов используются как код аутентификации сообщения, который добавляется к сообщению. Такой же процесс приходится производить на другой стороне, но только в обратном порядке. Несмотря на всю сложность и энергоемкость процесса передачи данных между сущностями SNMP, по мнению разработчиков, алгоритм шифрования (DES) на самом деле не обеспечивает достаточной защиты информации, поэтому в дальнейшем предполагается использовать другие алгоритмы. Например, алгоритм Диффи-Хиллмана (Diffie-Hillman)

           Разработчиками предусмотрено 3 уровня безопасности:
- noAuthNoPriv – пароли передаются в открытом виде, конфиденциальность данных отсутствует.
- authNoPriv – аутентификация без конфиденциальности. Большинство пользователейиспользует именно этот уровень т.к уровень защищенности в нем уже достаточно высок, а сетевые устройства не перегружаются шифрованием данных.
- authPriv – аутентификация и шифрование. Максимальный уровень защищенности. Для начала нужно поставить net-snmp.

Дальше я опишу, как настроить SNMP3 на разных системах и умных свитчах.

FreeBSD (net-snmp)

cd /usr/ports/net-mgmt/net-snmp
make install clean
Для запуска snmp сервиса добавляем в /etc/rc.conf:

snmpd_enable="YES"
snmpd_conffile="/usr/local/etc/snmp/snmpd.conf"
Настройка snmpd.conf

createUser пользователь MD5 "ПАРОЛЬ"
rouser  пользователь
Добавляем пользователя в SNMP (аутентификация без конфиденциальности) Пароль должен быть минумум 8 символов, а процесс snmpd должен быть еще выключен. Примечание: пользователь добавляется в конфиги по умолчанию, придобавлении выводит куда именно. С этого конфига можно просто перенести строчку в свой конфиг

net-snmp-config --create-snmpv3-user -ro -x ПАРОЛЬ -a ПАРОЛЬ  имя_пользователя
Тест доступности (если Вы используете в имени или в пароле спецсимволы, то заключите из в одинарные кавычки)

snmpwalk -v 3 -u имя_пользователя -A ПАРОЛЬ -l authNoPriv хост

Добавляем пользователя в SNMP (аутентификация и шифрование, стандартные алгоритмы)
net-snmp-config --create-snmpv3-user -ro -A ПАРОЛЬ -X ПАРОЛЬ -a MD5 -x DES имя_пользователя

Настройка snmpd.conf
createUser пользователь MD5 "ПАРОЛЬ" DES ПАРОЛЬ
rouser  пользователь

Тест доступности
snmpwalk -v 3 -a MD5 -A ПАРОЛЬ -l authPriv -u имя_пользователя -x DES -X ПАРОЛЬ хост


Добавляем пользователя в SNMP (аутентификация и шифрование, использование других алгоритмов)

net-snmp-config --create-snmpv3-user -ro -A ПАРОЛЬ -X ПАРОЛЬ -a SHA -x AES имя_пользователя

Настройка snmpd.conf
createUser пользователь SHA "ПАРОЛЬ" AES ПАРОЛЬ
rouser  пользователь

Тест доступности
snmpwalk -v 3 -a MD5 -A ПАРОЛЬ -l authPriv -u имя_пользователя -x DES -X ПАРОЛЬ хост


Foxgate (должно подходить и для CISCO) 
Пример настройки на Foxgate s6224.

! Включаем сервер snmp
snmp-server enable
! Включение контроля подключающихся ip (по умолчанию)
snmp-server securityip enable 
! Настройка безопасных IP-адресов, которым разрешен доступ включaя NMS
snmp-server securityip x.x.x.x
! Создаем список SNMP3_RO, содержащий разрешенных/запрещенных OID
snmp-server view SNMP3_RO 1.3.6.1.2.1.1. include
snmp-server view SNMP3_RO 1.3.6.1.2.1.2. include
! Создаем группу SNMP3 для доступа в режиме authpriv, 
! с доступом на чтение списка OID SNMP3_RO
snmp-server group SNMP3 authpriv read SNMP3_RO
! Создаем пользователя
snmp-server user your_user SNMP3 authPriv auth md5 your_pass
! Отключаем rmon
no rmon enable

Dell 6024

! Указываем email
snmp-server contact admin@example.com
! Создаем группу snmp3 для доступа в режиме authpriv, 
! с доступом на чтение списка OID Default
snmp-server group snmp3 v3 priv context router read Default
snmp-server group snmp3 v3 priv context oob read Default
! Создаем пользователя 
snmp-server user your_user snmp3 auth-md5 $your_pass

Dlink DGS-3100

# config snmp engineID default
All SNMPv3 users will be deleted !
Are you sure? (Y/N)[N] Y
! Создаем группу snmp3 для доступа в режиме authpriv, 
! с доступом на чтение списка OID Default
# create snmp group snmp3 v3 auth_priv read_view Default
! Создаем пользователя 
# create snmp user your_user snmp3 encrypted by_password auth md5 $your_pass
! Указываем email 
# config snmp system_contact admin@example.com
! указываем данные по расположению
# config snmp system_location UA
! указываем snmp имя для свитча
# config snmp system_name sw-krn-dlink-3100

Памятка - Добавить основной список OID
iso.3.6.1.2.1.2.2.1.10.1

Данная заметка будет дописываться.

Полезные материалы:
Мониторинг серверов по SNMP v3 через Zabbix
БЕЗОПАСНОСТЬ ПРОТОКОЛА SNMPV3 
Wikipedia SNMP
Руководство по командам Net-SNMP (Очень хорошое руководство на Opennet) 

3 комментария:

  1. спасибо Вам за статейку! Полезная!

    ОтветитьУдалить
  2. привет, исправь ошибку
    snmpwalk -v 3 -a MD5 -A PASSPHRASE -l authPriv -u USER -x DES -X USER HOST
    иначе в варианте как в мане выдает ошибку, что юзер не найден, потому что ключ
    -A PASSPHRASE set authentication protocol pass phrase

    ОтветитьУдалить
  3. Ошибки нет. Команда отрабатывает именно так, как написана (Проверено на ОС FreeBSD 8.x и CentOS 5.x)
    Вот пример команды:
    # snmpwalk -v 3 -a MD5 -A 'password' -l authPriv -u 'user' -x DES -X 'password' ip.ad.dr.ess system
    SNMPv2-MIB::sysDescr.0 = STRING: Ethernet Routing Switch
    SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.674.10895.3000
    DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (191104518) 22 days, 2:50:45.18
    SNMPv2-MIB::sysContact.0 = STRING: admin@example.com
    SNMPv2-MIB::sysName.0 = STRING: USERS
    SNMPv2-MIB::sysLocation.0 = STRING:
    SNMPv2-MIB::sysServices.0 = INTEGER: 3
    SNMPv2-MIB::sysORLastChange.0 = Timeticks: (0) 0:00:00.00
    SNMPv2-MIB::sysORID.1 = OID: SNMPv2-SMI::enterprises.89.73
    SNMPv2-MIB::sysORDescr.1 = STRING: RS capabilities
    SNMPv2-MIB::sysORUpTime.1 = Timeticks: (0) 0:00:00.00

    # snmpwalk -V
    NET-SNMP version: 5.5

    P.S. Какая у Вас ОС, какая версия snmpwalk ?

    ОтветитьУдалить