Введение

Для многих людей, увлекающихся исследованием сетей, рано или поздно
вставала проблема идентификации удаленной системы и получения как можно
больше информации о ней. На сегодняшний день существует множество способовидентификации систем. Не вдаваясь в подробности (все-таки тема немного
другая), можно выделить следующие:

- перечень открытых портов
- изучение маркеров сетевых сервисов (telnet, ftp, sendmail, pop, etc)
- использование программ, осуществляющих активное исследование стека TCP/IP (например queso)
- использование тестов на основе известных сигнатур различных операционных систем и сетевых устройств (такое исследование осуществляет утилита nmap от Fyodor при добавлении опции -O)
- пассивное исследование стека протокола TCP/IP
- использование HTTP команд (например при telnet подключении к 80 порту 
сервера)
- использование специализированных сканеров безопасности

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

SNMP

Как известно, SNMP переводится как Simple Network Management Protocol
(упрощенный протокол сетевого управления). Данный протокол использует
UDP-порты 161 и 162. SNMP был разработан с целью отправки запросов сетевым
элементам (хосты, гейтвеи, серверы и др.) для проверки и изменения их
настроек. Данный протокол близок к принципу "клиент-сервер". Роль сервера
выполняют агенты, то есть опрашиваемые сетевые устройства, а роль клиентов
выполняют системы управления, то есть сетевые приложения, которые, 
собственно, собирают информацию. На данный момент существуют три версии протокола, которые имеют общую
базисную архитектуру.

1. SNMPv1. Основная проблема безопасности этой версии
состояла в том, что единственным механизмом защиты являлись пароли
(community string), которые пересылались в незашифрованном виде. 

2. SNMPv2. В данной версии протокола вопросам 
безопасности было уделено больше внимания. В частности, были добавлены: функции
хэширования по алгоритму MD5, установка временных меток для избежания
повторения и ретрансляции сообщений, поддержка криптования по алгоритму
DES для сохранения конфиденциальности информации, новые возможности
администрирования, защита паролей и удаленной настройки конфигурации. 

3. SNMPv3. Этот стандарт является усовершенствованием
второй версии. Помимо всех особенностей присутствующих во второй
версии, упрощена схема установки и управления, без потери безопасности. 

Безопасность

Согласно RFC 2574, безопасность в SNMP осуществляется при помощи так
называемой пользовательской модели безопасности (user-based security
model, USM). Данная модель защищает от двух основных и двух второстепенных
типах угроз: 

- модификация информации
- маскарадинг
- изменения в потоке сообщений
- угроза раскрытия данных

В структуру USM входит алгоритм хэширования MD5 для обеспечения
целостности информации, который защищает от атак модификации данных.
Против изменений в потоке сообщений используется синхронизация с
выставлением временных меток. Как противодействие угрозе раскрытия
данных осуществляется шифрование по алгоритму DES. Следует отметить, что
использование данной опции является выборочным, т. е. на некоторых
системах она может быть не активирована.

Практика

После этого краткого обзора о принципах работы SNMP настало время
поговорить о том, как можно использовать достоинства и недостатки этого
протокола при взаимодействии с удаленными системами.
Вся информация о состоянии и настройках сетевых элементов находится в MIB
(Management Information Base), Базе Управляющей Информации, которая
представляет собой собрание модулей с данными. Обратиться к модулям можно
при помощи специальных запросов. Среди них можно выделить: GetRequest,
SetRequest, GetNextRequest и др. К сожалению, большинство модулей доступны
к чтению с них информации, а некоторые и для записи.
Правильная настройка предполагает работу с конфигурационными 
файлами и ядром, чего многие системные администраторы не любят.
По умолчанию, остаются две группы данных "private" и "public". 
Утилиты, которые используются для опроса сетевых элементов, как правило, 
уходят в стандартный дистрибутив операционной системы Linux. 
В Red Hat 7.2 входит пакет: ucd-snmp-utils-4.2.1-7.i386.rpm 

Устанавливаем пакет:

rpm -i ucd-snmp-utils-4.2.1-7.i386.rpm

После установки появляются программы:

/usr/bin/snmpbulkget
/usr/bin/snmpbulkwalk
/usr/bin/snmpcheck
/usr/bin/snmpconf
/usr/bin/snmpdelta
/usr/bin/snmpdf
/usr/bin/snmpget
/usr/bin/snmpgetnext
/usr/bin/snmpinform
/usr/bin/snmpnetstat
/usr/bin/snmpset
/usr/bin/snmpstatus
/usr/bin/snmptable
/usr/bin/snmptest
/usr/bin/snmptranslate
/usr/bin/snmptrap
/usr/bin/snmpusm
/usr/bin/snmpvacm
/usr/bin/snmpwalk

При помощи этих утилит можно узнать практически ВСЮ системную информацию
об удаленной системе (начиная от операционной системы и заканчивая
активными сетевыми интерфейсами). Главное -
RTFM! Например, утилита snmpget  посылает запросы хостам, snmpset-устанавливает значение в MIB (при наличии
прав записи) и т.д.

Пример:

#/usr/bin/snmpget target.com public system.sysDescr.0 
Linux hostname 2.4.7-10 #1 Thu Sep 6 17:27:27 EDT 2001 i686 
#/usr/bin/snmpget target.com public system.sysContact.0 
system.sysContact.0 = root@target.com
#/usr/bin/snmpget target.com public system.sysName.0
system.sysName.0 = target

Существует огромное количество параметров, которые хранятся в MIB. Если
вам понадобился весь список данных, то наилучшим выбором будет утилита
snmpwalk. 

#/usr/bin/snmpwalk target.com public

При использовании этой утилиты выводится огромная база информации о
системе: имя хоста, операционная система,
месторасположение компьютера, системные интерфейсы, активные сетевые интерфейсы, IP и MAC адреса, с
которыми устанавливались соединения недавно, информация о сети и
маршрутизации, информация о состоянии открытых портов (этот способ гораздо
надежнее сканирования, т.к. нет никаких препятствий в виде брандмауэров).

Надеюсь, эта статья окажется полезной для общественности. При
возникновении вопросов - читай man или RFC.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии