繁体   English   中英

使用SNMP检查端口(net-snmp)

[英]Check ports with SNMP (net-snmp)

有没有一种方法可以使用SNMP监视服务器端口(我正在使用net-snmp-python来通过python进行检查)。 到目前为止,我已经使用“ nc”命令进行了非常简单的检查,但是我想看看是否可以使用SNMP进行此操作。

感谢您的回答和耐心等待。

好吧,如果您想使用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是否正在使用python net snmp绑定侦听主机192.168.10.1上的默认地址,则将具有以下内容。

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,因为我没有在python中做任何snmp东西,而我发现的一些示例中有,而有些则没有。 但是无论哪种方式都可以尝试。 在上面的查询中,如果服务器未在侦听,则它将返回一个没有这样的OID,如果服务器已打开并且侦听结果应为Integer(2)。

很难看到SNMP可能适合的地方。

监视的最佳方法是使用特定于协议的客户端(即,运行与MySQL的简单查询,使用FTP检索测试文件等)。

如果这不起作用,则可以打开端口的TCP或UDP套接字,看看是否有人在监听。

您可以尝试对要检查的端口运行nmap ,但这并不一定表示打开端口另一侧的服务器进程仍在运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM