2010-08-14 3 views
1

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

Благодарим вас за ответы и терпение.

+1

Что именно вы хотите контролировать? Какие порты прослушивают, и они принимают соединение? – Doon

+1

Я хочу проверить стандартные порты, такие как FTP, SSH, HTTP (S), BIND, MySQL – abiko

+1

Возможно, вы захотите попробовать этот вопрос на serverfault - там могут быть консервированные решения, которые будут лучше соответствовать вашим потребностям. – bstpierre

ответ

3

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

"1.3.6.1.2.1.6.13.1.1" tcpConnState 
    "1.3.6.1.2.1.7.5.1.1" udpLocalAddress 

Walking 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) 

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

Теперь, если вы просто хотите проверить, не прослушиваются ли определенные порты, которые вы указали в своем вопросе, вы можете использовать следующие 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, используя питон net snmp bindings у вас будет что-то вроде этого.

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 материала в питоне, и некоторые примеры, которые я нашел были, и некоторые из них не сделали. Но попробуйте в любом случае. в вышеприведенном запросе, если сервер не прослушивает, он вернет нет такого OID, если он открыт, а результат прослушивания должен быть целым (2).

0

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

Лучший способ мониторинга будет использовать конкретный клиент протокола (т.е. запустить простой запрос против MySQL, получить тестовый файл с помощью FTP и т.д.)

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

0

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

Смежные вопросы