Проверьте порты с помощью SNMP (net-snmp) - PullRequest
1 голос
/ 15 августа 2010

Есть ли способ мониторинга портов сервера с использованием SNMP (я использую net-snmp-python, чтобы проверить это с помощью python).До сих пор я проверял довольно просто с помощью команды "nc", однако я хочу посмотреть, смогу ли я сделать это с помощью SNMP.

Спасибо за ваши ответы и терпение.

Ответы [ 3 ]

3 голосов
/ 16 августа 2010

Что ж, если вы хотите использовать SNMP, чтобы точно узнать, какие порты прослушиваются, вы должны иметь возможность использовать следующие OIDS и обойти таблицу

  "1.3.6.1.2.1.6.13.1.1" tcpConnState 
  "1.3.6.1.2.1.7.5.1.1"  udpLocalAddress

Пройдя UDP, вы получите что-то вроде этого:

snmpwalk -cpublic 192.168.1.13 1.3.6.1.2.1.7.5.1.1                                                    
   UDP-MIB::udpLocalAddress.0.0.0.0.68 = IpAddress: 0.0.0.0
   UDP-MIB::udpLocalAddress.0.0.0.0.161 = IpAddress: 0.0.0.0
   UDP-MIB::udpLocalAddress.0.0.0.0.32908 = IpAddress: 0.0.0.0
   UDP-MIB::udpLocalAddress.0.0.0.0.33281 = IpAddress: 0.0.0.0
   UDP-MIB::udpLocalAddress.0.0.0.0.33795 = IpAddress: 0.0.0.0
   UDP-MIB::udpLocalAddress.0.0.0.0.34822 = IpAddress: 0.0.0.0
   UDP-MIB::udpLocalAddress.0.0.0.0.44782 = IpAddress: 0.0.0.0
   UDP-MIB::udpLocalAddress.192.168.1.13.9950 = IpAddress: 192.168.1.13

и TCP как:

snmpwalk -cpublic 192.168.1.13 1.3.6.1.2.1.6.13.1.1                                                   
   TCP-MIB::tcpConnState.0.0.0.0.21.0.0.0.0.0 = INTEGER: listen(2)
   TCP-MIB::tcpConnState.0.0.0.0.23.0.0.0.0.0 = INTEGER: listen(2)
   TCP-MIB::tcpConnState.0.0.0.0.80.0.0.0.0.0 = INTEGER: listen(2)

Ходьба по столам покажет вам, какие порты прослушиваются, и может предоставить вам некоторую информацию.

Теперь, если вы просто хотите проверить, прослушивают ли конкретные порты, которые вы указали в своем вопросе, вы можете использовать следующие OIDS для проверки.

ftp -- 1.3.6.1.2.1.6.13.1.1.0.0.0.0.21.0.0.0.0.0
ssh -- 1.3.6.1.2.1.6.13.1.1.0.0.0.0.22.0.0.0.0.0
http --  1.3.6.1.2.1.6.13.1.1.0.0.0.0.80.0.0.0.0.0
https -- 1.3.6.1.2.1.6.13.1.1.0.0.0.0.443.0.0.0.0.0
bind -- 1.3.6.1.2.1.7.5.1.1.0.0.0.0.53 

вышеупомянутые OIDS предполагают, что сервер связан с адресом по умолчанию (0.0.0.0).Но они могут быть связаны только с IP-адресом сервера (зависит от конфигурации).В этом случае, предполагая, что ваш IP-адрес сервера 192.168.10.1, вы получите

1.3.6.1.2.1.7.5.1.1.192.168.10.1.53  for bind

, поэтому, учитывая все вышесказанное, я думаю, что если вы хотите узнать, прослушивает ли http адрес по умолчанию на хосте 192.168.10.1, используяПривязки Python Net Snmp у вас будет что-то вроде этого.

import netsnmp
oid = netsmp.Varbind('1.3.6.1.2.1.6.13.1.1.0.0.0.0.80.0.0.0.0.0')
result = netsnmp.snmp(oid,
                      Version = 2,
                      DestHost="192.168.10.1",
                      Community="public")

Я не уверен на 100%, требуется ли Varbind, так как я не делаю ничего snmp в Python, и некоторые примеры, которые я нашел, имелиэто, а некоторые нет.Но попробуйте это в любом случае.в приведенном выше запросе, если сервер не прослушивает, он не возвращает такой OID, если он открыт и результат прослушивания должен быть Integer (2).

0 голосов
/ 15 августа 2010

Вы можете попробовать запустить nmap с портами, которые вы хотите проверить, но это не обязательно даст вам представление о том, что серверный процесс на другой стороне открытого порта активен. 1004 *

0 голосов
/ 15 августа 2010

Трудно понять, где SNMP может вписаться.

Лучший способ для мониторинга - это использовать специфичный для протокола клиент (т. Е. Выполнить простой запрос к MySQL, получить тестовый файл с использованием FTP и т. Д..)

Если это не сработает, вы можете открыть сокет TCP или UDP для портов и посмотреть, слушает ли кто-либо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...