Про 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)
Добавляем пользователя в SNMP (аутентификация и шифрование, стандартные алгоритмы)
Настройка snmpd.conf
Тест доступности
Добавляем пользователя в SNMP (аутентификация и шифрование, использование других алгоритмов)
Настройка snmpd.conf
Тест доступности
Foxgate (должно подходить и для CISCO)
Пример настройки на Foxgate s6224.
Dell 6024
Dlink DGS-3100
Памятка - Добавить основной список OID
iso.3.6.1.2.1.2.2.1.10.1
Данная заметка будет дописываться.
Полезные материалы:
Мониторинг серверов по SNMP v3 через Zabbix
БЕЗОПАСНОСТЬ ПРОТОКОЛА SNMPV3
Wikipedia SNMPSNMP – протокол прикладного уровня. Он предназначен для обмена информацией между сетевыми устройствами. При помощи этого протокола, сетевой администратор может производить анализ сетевого оборудования, находить и решать множество сетевых проблем. В Декабре 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
Руководство по командам Net-SNMP (Очень хорошое руководство на Opennet)
спасибо Вам за статейку! Полезная!
ОтветитьУдалитьпривет, исправь ошибку
ОтветитьУдалитьsnmpwalk -v 3 -a MD5 -A PASSPHRASE -l authPriv -u USER -x DES -X USER HOST
иначе в варианте как в мане выдает ошибку, что юзер не найден, потому что ключ
-A PASSPHRASE set authentication protocol pass phrase
Ошибки нет. Команда отрабатывает именно так, как написана (Проверено на ОС 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 ?