Понимание протокола SNMP

Опубликовано: 24 Марта, 2023


Протокол SNMP


Протокол SNMP появился в конце 1980-х годов в связи с необходимостью управления постоянно растущими сетями и необходимостью проверки определенных условий, возникающих в этих сетях. Как я уже упоминал ранее, большинство протоколов, встречающихся в наборе TCP/IP, следуют модели клиент/сервер. Этот протокол ничем не отличается, за исключением небольшого отличия в синтаксисе; он следует модели клиент/менеджер.


Есть несколько хорошо известных программ, которые используют SNMP как часть пакета управления сетью. Например, IBM Tivoli, а также HP Openview, и это лишь некоторые из предложений. Что их всех объединяет, как уже упоминалось, так это использование простого протокола управления сетью. Именно благодаря использованию этого протокола и тому, как он был разработан, администраторы могут надежно перемещаться по иногда далеко разбросанным сетям, которыми они должны управлять.


SNMP и его варианты


В настоящее время существует три различных реализации протокола SNMP. А именно; SNMPv1, SNMPv2c и SNMPv3. Все различные версии основывались на успехе предыдущей и пытались встроить больше функциональности в каждую последующую версию. Хотя сначала вы можете подумать, что последняя версия SNMP используется наиболее широко, на самом деле это будет ошибкой. В основном самая первая версия SNMP по-прежнему наиболее часто встречается по разным причинам, таким как простота и человеческая склонность использовать то, что, как вы уже знаете, работает.


Из-за того, что существует три версии SNMP, между ними есть ключевые различия. Хотя SNMPv1 работал хорошо, у него были серьезные недостатки. Примечательно, что с ним практически не было безопасности. Все сообщения отправлялись в виде простого текста по сети, и их мог прочитать любой, у кого в сети был установлен анализатор пакетов. Это не очень хорошо по понятным причинам. Так появился SNMPv2, который попытался исправить некоторые недостатки своего предшественника. SNMPv2 содержал изменения в определениях MIB (базы управляющей информации), также были внесены изменения в PDU (блок данных протокола) и, наконец, улучшена безопасность. Улучшенная безопасность достигается за счет обеспечения целостности данных благодаря использованию MD5 и алгоритма шифрования DES. Наконец, существовала некоторая форма защиты от повторных атак благодаря использованию процедур аутентификации.


Вариации вариации!


На всякий случай, если SNMPv2 не был достаточно запутанным, вы должны знать, что на самом деле существует четыре его варианта. Они следующие; SNMPv2c, основанный на сообществе, SNMPv2* или также известный как «звезда» из-за метасимвола, который я предполагаю, SNMPv2u, основанный на пользователе, и исходный SNMPv2. Сложность, появившаяся в SNMPv2, является одной из основных причин того, что он не получил широкого распространения в сообществе в целом. Сложность не способствует удобству использования.


Учитывая сохраняющиеся проблемы безопасности в SNMPv1 и v2, а также проблемы сложности SNMPv2, было решено, что для устранения этих недостатков необходима новая версия. Это привело к SNMPv3, в котором были учтены недостатки его предшественников. Гораздо лучшая безопасность достигается за счет аутентификации с помощью хеширования, временных меток и конфиденциальности сообщений благодаря использованию шифрования. Эта версия также менее сложна, чем варианты SNMPv2, и намного превосходит первую версию с точки зрения безопасности. Несмотря на это, как упоминалось выше, во многих сетях по-прежнему используется SNMPv1 со всеми его недостатками.


С учетом всего сказанного, какие типы сообщений можно увидеть при просмотре SNMP-трафика? Что ж, это хороший вопрос, и мы действительно перечислим их. Для простоты мы перечислим типы PDU (протокольных блоков данных) в соответствии с SNMPv1. Это по-прежнему наиболее часто используемый, поэтому имеет смысл перечислить их. Они следующие;



GetRequest, GetNextRequest, GetResponse, SetRequest, Ловушка


В следующих версиях SNMPv2 и v3 были добавлены некоторые типы PDU, такие как GetBulkRequest и InformRequest. Что ж, с этим очень высокоуровневым объяснением различных версий SNMP пришло время поместить вещи в контекст, фактически взглянув на пакет SNMP. Теперь мы рассмотрим пакет SNMPv1 и пройдемся по некоторым его полям.


Давайте поместим вещи в контекст


Чем была бы сухая теория без практического применения? С этой целью мы рассмотрим пакет, показывающий использование SNMPv1. В этом пакете мы увидим, как SNMPv1 выполняет свою работу, т. е. информирует системного администратора о сети и любых потенциальных проблемах. В связи с этим взгляните на приведенный ниже пакет и давайте обсудим различные поля в нем.



01:31:26.631025 192.168.1.200.161 > 192.168.1.100.40274: { SNMPv1
C = testnet-pub { GetResponse (90) R = 1546751089
.1.3.6.1.2.1.2.2.1.10.24=3936973547.1.3.6.1.2.1.2.2.1.16.24=3178
267035.1.3.6.1.2.1.1.3.0=4268685032.1.3.6.1.2.1.1.5.0=”G”} } (ttl 255, id41656, длина 148)
0x0000 4500 0094 a2b8 0000 ff11 151c c0a8 01c8 E……………
0x0010 c0a8 0164 00a1 9d52 0080 3f43 3076 0201 ……..R..?C0v..
0x0020 0123 0123 0123 6574 2d70 7562 a266 0204..testnet-pub.f..
0x0030 5c31 8c71 0201 0002 0100 3058 3013 060a 1.q……0X0…
0x0040 2b06 0102 0102 0201 0a18 4105 00ea a972 +………A….r
0x0050 eb30 1306 0a2b 0601 0201 0202 0110 1841..0…+………А
0x0060 0500 bd70 819b 3011 0608 2b06 0102 0101 ….p..0…+…..
0x0070 0300 4305 00fe 6ef6 e830 1906 082b 0601 …C…n..0…+..
0x0080 0201 0105 0004 0d47 …….G


Я прокомментирую пакет выше, идущий с первой строки, а также справа налево. Наша обычная временная метка — это первое поле, за которым следует наш исходный IP-адрес и исходный порт. Вы заметите, что этот исходный порт — 161, который является известным портом для SNMP. Затем у нас есть IP-адрес назначения и порт назначения. Теперь мы видим в скобках, что пакет сообщает нам, что это SNMPv1. Далее следует «строка сообщества», и сейчас самое время узнать, что значение по умолчанию обычно устанавливается как «только для чтения». В нашем случае имя строки сообщества — «testnet-pub», как подчеркнуто в пакете выше.


Далее у нас есть тип PDU «GetResponse», который также подчеркнут в пакете выше. Далее следует наш «идентификационный номер запроса». Теперь мы видим ряд чисел, разделенных точками. Это OID или идентификаторы объектов. Они используются для определения фактических критериев, таких как, например, время безотказной работы системы, пропускная способность сетевой карты и нагрузка на сервер. Например, станция управления может выдать несколько «GetRequest» конкретному компьютеру, чтобы узнать, какова нагрузка на сервер в это конкретное время. Вот как администратор может использовать SNMP, чтобы помочь им управлять своими иногда разбросанными сетями.


С учетом сказанного, это один протокол, который вы действительно не можете полностью взломать вручную, и вам нужен анализатор протокола, такой как Ethereal, или, в идеале, программа, которая поставляется с вашим программным обеспечением для управления сетью. Это, в свою очередь, позволит вам понять OID, которые мы видим выше. Все, что было сказано, теперь мы понимаем, почему SNMPv1 действительно не лучший выбор для вашего протокола SNMP. Все четко! Даже минимально компетентный хакер может нанести ущерб с помощью информации, раскрытой в пакете выше. Если это возможно, вам следует перейти на SNMPv3. На этом мы подошли к концу нашего обзора SNMP на очень высоком уровне, и я надеюсь, что он вам понравился. До следующего раза!