我们的 Windows 2003 域中有一个打印服务器,上面有很多打印队列。我们发现该服务器发出了大量 SNMP 扫描,我们认为这些扫描是不必要的。与打印服务器本身相关的所有功能都运行良好,但网络团队希望停止扫描。
我们可以看到交换机上发生的扫描。我已经安装了 Wireshark,也可以看到扫描的发生。我可以看到通过 CurrPorts 等方式监听连接的程序。
多年来,该服务器有过几位维护人员。其中有残留的驱动程序和一些不需要的东西。不幸的是,我无法采取任何过于激烈的措施来清理或全新安装服务器,因为它是我们网络所依赖的主要打印服务器。我们计划在未来一两年内更换它。
所以我的问题是......
我如何才能确定 Windows 2003 服务器上的哪个程序/进程正在生成 SNMP 扫描?
答案1
我强烈怀疑打印后台处理程序服务 (spoolsv.exe) 正在执行此操作,因为它可能已配置为执行此操作。如果没有对流量(子网范围的探测或针对单个打印机设备的查询)的更深入描述,很难说。我的直觉是,如果您检查“打印机和传真”对话框的“服务器属性”的“端口”选项卡中任何“标准 TCP/IP 端口”条目的“配置端口”属性,您会发现“SNMP 状态已启用”已选中。
如果失败了,使用“netstat -b”或“netstat -o”是可行的方法,但由于 SNMP 的套接字可能会很快关闭,因此您将很难捕获它们。
编辑:
这是脚本。
@echo off
rem Query for all Standard TCP/IP Ports (skipping the first returned value, which
rem is the "/Ports" key
FOR /f "skip=1 usebackq delims=" %%i IN (`reg query "HKLM\System\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port\Ports" ^| find "HKEY_LOCAL_MACHINE"`) DO (
rem For each port, disable SNMP
REG ADD "%%i" /v "SNMP Enabled" /t REG_DWORD /d 0 /f >NUL 2>NUL
)
答案2
netstat -b 将显示所有连接以及生成该连接的进程。最有可能的是,它是打印机管理软件(基于家庭或基于企业)不断尝试查询打印机以了解其状态、墨粉量等。
答案3
Microsoft Network Monitor 3.3 使您能够按进程/进程 ID 过滤流量。
您还可以使用TCPView:
http://technet.microsoft.com/en-us/sysinternals/bb897437.aspx
打印服务器可能安装了 HP JetAdmin 或 WebJetAdmin。但正常运行时不需要安装该程序。
http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=c01718860