简介
本文档介绍对安全网络设备(SWA)中的简单网络监控协议(SNMP)进行故障排除的步骤。
先决条件
要求
建议掌握下列主题的相关知识:
使用的组件
本文档不限于特定的软件和硬件版本。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
SNMP工作原理
SNMP是一种应用层通信协议,允许网络设备在这些系统之间以及与网络外部的其他设备交换管理信息。
通过SNMP,网络管理员可以管理网络性能、查找和解决网络问题,以及规划网络增长。
SNMP使网络监控更具成本效益,并使您的网络更加可靠。(有关SNMP的详细信息,请参阅RFC 1065、1066和1067。)
SNMP管理的网络包括管理器、代理和受管设备。
- Manager提供以人为本的网络管理器和管理系统之间的接口。
- 代理提供管理器和受管设备之间的接口。
- 管理系统执行大多数管理流程,并提供用于网络管理的大量内存资源。
驻留在每个受管设备上的代理将软件陷阱中捕获的本地管理信息数据(如性能信息或事件和错误信息)转换为管理系统的可读形式。
SNMP代理从管理信息库(MIB)(设备参数和网络数据存储库)或错误或更改陷阱捕获数据。
MIB
MIB是一种数据结构,它将SNMP网络元素描述为数据对象的列表。SNMP管理器必须为网络中的每种设备类型编译MIB文件,以监控SNMP设备。
管理器和代理使用MIB和相对较少的命令集交换信息。MIB以树形结构组织,各个变量表示为分支上的叶。
长数字标记或对象标识符(OID)用于在MIB和SNMP消息中唯一区分每个变量。MIB将每个OID与一个可读标签以及与对象相关的各种其他参数相关联。然后,MIB用作用于汇编和解释SNMP消息的数据字典或代码本。
当SNMP管理器希望了解对象的值(例如警报点的状态、系统名称或元素正常运行时间)时,它会组合包含每个相关对象的OID的GET数据包。元素接收请求并查找其代码簿(MIB)中的每个OID。 如果找到OID(对象由元素管理),则组合并发送响应数据包,其中包含对象的当前值。如果未找到OID,将发送一个特殊的错误响应,用于标识非托管对象。
SNMP 陷阱
SNMP 陷阱支持代理以未经请求的 SNMP 消息的形式,向管理站发送关于重大事件的通知。SNMPv1和SNMPv2c,以及关联的MIB,鼓励陷阱定向通知。
如果一个管理器要负责大量的设备,而每台设备都包含大量的对象,要让管理器向每台设备上的每个对象都进行轮询或请求数据是不切实际的。陷阱定向的通知这一想法由此产生。
其解决办法是让受管设备上的每个代理不经请求就向管理器发送通知。它通过发送称为event trap的消息来完成此操作。
收到事件后,管理器会显示事件,并可以选择根据事件采取措施。例如,管理器可以直接轮询代理,也可以轮询其他关联的设备代理,以便更好地了解事件。
陷阱定向的通知可消除对轻量SNMP请求的需要,从而显着节省网络和代理资源。但是,不可能完全消除SNMP轮询。
网络发现和拓扑更改必须使用 SNMP 请求。另外,如果设备遭遇灾难性断电,受管设备代理将不能发送陷阱。
RFC 1157 中对 SNMPv1 陷阱进行了定义,包括以下字段:
SNMPv3
SNMPv3支持SNMP引擎ID标识符,用于唯一标识每个SNMP实体。如果两个SNMP实体具有重复的EngineID,则可能会发生冲突。
EngineID用于为经过身份验证的消息生成密钥。(有关SNMPv3的详细信息,请参阅RFC 2571-2575)。
许多SNMP产品在SNMPv3下基本保持不变,但因以下新功能而得到增强:
- 管理
- 授权和访问控制
- 逻辑情景
- 实体、标识和信息的命名
- 人员和策略
- 用户名和密钥管理
- 通知目标和代理关系
- 通过SNMP操作进行远程配置
SNMPv3安全模型主要有两种形式:身份验证和加密:
- 身份验证用于确保只有预期接收方读取陷阱。创建消息时,将根据实体EngineID为其提供特殊密钥。密钥与预定收件人共享并用于接收邮件。
- 加密,隐私对SNMP消息的负载进行加密,以确保未经授权的用户无法读取该消息。任何被拦截的陷阱中充满损坏的字符且无法读取。在必须通过Internet路由SNMP消息的应用程序中,隐私尤其有用。
SNMP组中有三个安全级别:
- noAuthnoPriv — 无身份验证和隐私的通信。
- authNoPriv -使用身份验证进行通信,且没有隐私。用于身份验证的协议是消息摘要算法5(MD5)和安全散列算法(SHA)。
- authPriv -与身份验证和隐私进行通信。用于身份验证的协议是MD5和SHA,并且对于隐私,可以使用数据加密标准(DES)和高级加密标准(AES)协议。
SWA中的SNMP
AsyncOS操作系统支持通过SNMP进行系统状态监控。
请注意:
-
默认情况下为SNMPisoffer。
-
未实施SNMPSET操作(配置)。
-
AsyncOS支持SNMPv1、v2和v3。
-
启用SNMPv3时,消息身份验证和加密是必需的。身份验证和加密的密码必须不同。
-
加密算法可以是AES(推荐)或DES。
-
身份验证算法可以是SHA-1(推荐)或MD5。
-
Thesnmpconfig命令“记住”您下次运行该命令的口令。
-
对于15.0之前的AsyncOS版本,SNMPv3用户名是:v3get。
- 对于AsyncOS版本15.0及更高版本,defaultSNMPv3用户名是:v3get。作为管理员,您可以选择任何其他用户名。
如果仅使用SNMPv1或SNMPv2,则必须设置社区字符串。社区字符串未默认设置为public。
注意:您可以使用主机名,但如果使用,则陷阱仅在DNS工作时起作用。
配置SNMPMonitor
要配置SNMP以收集设备的系统状态信息,请在CLI中使用thesnmpconfig命令。在选择并配置接口值后,设备将对SNMPv3 GET请求作出响应。
使用SNMP时,请考虑以下几点:
- 在SNMP第3版中,请求必须包含匹配的口令。
- 默认情况下,第1版和第2版请求被拒绝。
- 如果启用,版本1和版本2请求必须具有匹配的社区字符串。
SWA_CLI> snmpconfig
Current SNMP settings:
SNMP Disabled.
Choose the operation you want to perform:
- SETUP - Configure SNMP.
[]> SETUP
Do you want to enable SNMP? [Y]> Y
Please choose an IP interface for SNMP requests.
1. Management (10.48.48.184/24 on Management: wsa125to15-man.amojarra.calo)
2. P1 (192.168.13.184/24 on P1: wsa1255p1.amojarra.calo)
3. P2 (192.168.133.184/24 on P2: wsa1255p2.amojarra.calo)
[1]> 1
Which port shall the SNMP daemon listen on?
[161]> 161
Please select SNMPv3 authentication type:
1. MD5
2. SHA
[1]> 2
Please select SNMPv3 privacy protocol:
1. DES
2. AES
[1]> 2
Enter the SNMPv3 username or press return to leave it unchanged.
[v3get]> SNMPMUser
Enter the SNMPv3 authentication passphrase.
[]>
Please enter the SNMPv3 authentication passphrase again to confirm.
[]>
Enter the SNMPv3 privacy passphrase.
[]>
Please enter the SNMPv3 privacy passphrase again to confirm.
[]>
Service SNMP V1/V2c requests? [N]> N
Enter the Trap target as a host name, IP address or list of IP addresses
separated by commas (IP address preferred). Enter "None" to disable traps.
[10.48.48.192]>
Enter the Trap Community string.
[ironport]> swa_community
Enterprise Trap Status
1. CPUUtilizationExceeded Enabled
2. FIPSModeDisableFailure Enabled
3. FIPSModeEnableFailure Enabled
4. FailoverHealthy Enabled
5. FailoverUnhealthy Enabled
6. connectivityFailure Disabled
7. keyExpiration Enabled
8. linkUpDown Enabled
9. memoryUtilizationExceeded Enabled
10. updateFailure Enabled
11. upstreamProxyFailure Enabled
Do you want to change any of these settings? [N]> Y
Do you want to disable any of these traps? [Y]> N
Do you want to enable any of these traps? [Y]> Y
Enter number or numbers of traps to enable. Separate multiple numbers with
commas.
[]> 6
Please enter the URL to check for connectivity failure, followed by the
checking interval in seconds, separated by a comma:
[http://downloads.ironport.com,5]>
Enterprise Trap Status
1. CPUUtilizationExceeded Enabled
2. FIPSModeDisableFailure Enabled
3. FIPSModeEnableFailure Enabled
4. FailoverHealthy Enabled
5. FailoverUnhealthy Enabled
6. connectivityFailure Enabled
7. keyExpiration Enabled
8. linkUpDown Enabled
9. memoryUtilizationExceeded Enabled
10. updateFailure Enabled
11. upstreamProxyFailure Enabled
Do you want to change any of these settings? [N]>
Enter the System Location string.
[location]>
Enter the System Contact string.
[snmp@localhost]>
Current SNMP settings:
Listening on interface "Management" 10.48.48.184/24 port 161.
SNMP v3: Enabled.
SNMP v3 UserName: SNMPMUser
SNMP v3 Authentication type: SHA
SNMP v3 Privacy protocol: AES
SNMP v1/v2: Disabled.
Trap target: 10.48.48.192
Location: location
System Contact: snmp@localhost
Choose the operation you want to perform:
- SETUP - Configure SNMP.
[]>
SWA_CLI> commit
SWA MIB文件
MIB文件可从URL获得:
使用每个MIB文件的最新版本。
有多个MIB文件:
-
asyncoswebsecurityappliance-mib.txt是安全Web设备的企业MIB的SNMPv2兼容说明。
-
ASYNCOS-MAIL-MIB.txt是与邮件安全设备的企业MIB兼容的SNMPv2描述。
-
IRONPORT-SMI.txt此“管理信息结构”文件定义asyncoswebsecurityappliance-mib的角色。
此版本实现了RFC 1213和1907中定义的MIB-II的只读子集。
请参阅使用SNMP监控WSA设备上的CPU使用率以了解有关使用SNMP监控设备上的CPU使用率的详情。
SWA SNMP陷阱
SNMP能够在满足一个或多个条件时发送陷阱或通知,以通知管理应用程序。
陷阱是包含与发送陷阱的系统组件相关的数据的网络数据包。
当SNMPagent(在本例中为CiscoSecure Web设备)上满足条件时生成陷阱。 满足条件后,SNMPagent会形成SNMP数据包并将其发送到运行SNMP管理控制台软件的主机。
当为接口启用SNMP时,可以配置SNMP陷阱(启用或禁用特定陷阱)。
注意:要指定多个陷阱目标,请执行以下操作:当提示输入陷阱目标时,您可以输入最多10个逗号分隔的IP地址。
connectivityFailure陷阱用于监控设备与Internet的连接。它通过尝试连接并每5到7秒向单个外部服务器发送HTTP GET请求来达到此目的。默认情况下,端口80上的受监控URL是downloads.ironport.com。
要更改受监控URL或端口,请运行snmpconfig命令并启用connectivityFailure陷阱(即使它已启用)。您可以看到更改URL的提示。
提示:要模拟connectivityFailure陷阱,您可以使用dnsconfig CLI命令进入不工作的DNS服务器。查找downloads.ironport.com失败,并且每5-7秒发送一次陷阱。测试结束后,请务必将DNS服务器改回工作正常的服务器。
推荐的监控OID
以下是建议监控的MIB列表,而不是详尽列表:
硬件OID |
名称 |
1.3.6.1.4.1.15497.1.1.1.18.1.3 |
raidID |
1.3.6.1.4.1.15497.1.1.1.18.1.2 |
raid状态 |
1.3.6.1.4.1.15497.1.1.1.18.1.4 |
raidLastError |
1.3.6.1.4.1.15497.1.1.1.10 |
fanTable |
1.3.6.1.4.1.15497.1.1.1.9.1.2 |
摄氏度 |
这是OID直接映射到status detailCLI命令的输出:
OID |
名称 |
状态详细信息字段 |
系统资源 |
|
|
1.3.6.1.4.1.15497.1.1.1.2.0 |
百分比CPU利用率 |
CPU |
1.3.6.1.4.1.15497.1.1.1.1.0 |
percentMemoryUtilization |
RAM |
每秒事务数 |
|
|
1.3.6.1.4.1.15497.1.2.3.7.1.1.0 |
cacheThruNow |
最后一分钟内每秒平均事务数。 |
1.3.6.1.4.1.15497.1.2.3.7.1.2.0 |
cacheThruput1hrPeak |
过去一小时内每秒的最大事务数。 |
1.3.6.1.4.1.15497.1.2.3.7.1.3.0 |
cacheThruput1hrMean |
过去一小时内每秒平均事务数。 |
1.3.6.1.4.1.15497.1.2.3.7.1.8.0 |
cacheThruputLifePeak |
代理重新启动后每秒的最大事务数。 |
1.3.6.1.4.1.15497.1.2.3.7.1.9.0 |
cacheThruputLifeMean |
代理重新启动后每秒的平均事务数。 |
带宽 |
|
|
1.3.6.1.4.1.15497.1.2.3.7.4.1.0 |
cacheBwidthTotalNow |
最后一分钟的平均带宽。 |
1.3.6.1.4.1.15497.1.2.3.7.4.2.0 |
cacheBwidthTotal1hrPeak |
过去一小时内的最大带宽。 |
1.3.6.1.4.1.15497.1.2.3.7.4.3.0 |
cacheBwidthTotal1hrMean |
过去一小时内的平均带宽。 |
1.3.6.1.4.1.15497.1.2.3.7.4.8.0 |
cacheBwidthTotalLifePeak |
自代理重新启动以来的最大带宽。 |
1.3.6.1.4.1.15497.1.2.3.7.4.9.0 |
cacheBwidthTotalLifeMean |
自代理重新启动以来的平均带宽。 |
响应时间 |
|
|
1.3.6.1.4.1.15497.1.2.3.7.9.1.0 |
cacheHitsNow |
最后一分钟的平均缓存命中率。 |
1.3.6.1.4.1.15497.1.2.3.7.9.2.0 |
cacheHits1hrPeak |
上一小时的最大缓存命中率。 |
1.3.6.1.4.1.15497.1.2.3.7.9.3.0 |
cacheHits1hrMean |
过去一小时内的平均高速缓存命中率。 |
1.3.6.1.4.1.15497.1.2.3.7.9.8.0 |
cacheHitsLifePeak |
自代理重新启动以来的最大缓存命中率。 |
1.3.6.1.4.1.15497.1.2.3.7.9.9.0 |
cacheHitsLifeMean |
自代理重新启动以来的平均缓存命中率。 |
缓存命中率 |
|
|
1.3.6.1.4.1.15497.1.2.3.7.5.1.0 |
cacheHitsNow |
最后一分钟的平均缓存命中率。 |
1.3.6.1.4.1.15497.1.2.3.7.5.2.0 |
cacheHits1hrPeak |
上一小时的最大缓存命中率。 |
1.3.6.1.4.1.15497.1.2.3.7.5.3.0 |
cacheHits1hrMean |
过去一小时内的平均高速缓存命中率。 |
1.3.6.1.4.1.15497.1.2.3.7.5.8.0 |
cacheHitsLifePeak |
自代理重新启动以来的最大缓存命中率。 |
1.3.6.1.4.1.15497.1.2.3.7.5.9.0 |
cacheHitsLifeMean |
自代理重新启动以来的平均缓存命中率。 |
连接 |
|
|
1.3.6.1.4.1.15497.1.2.3.2.7.0 |
cacheClientIdleConns |
空闲客户端连接。 |
1.3.6.1.4.1.15497.1.2.3.3.7.0 |
cacheServerIdleConns |
空闲服务器连接。 |
1.3.6.1.4.1.15497.1.2.3.2.8.0 |
cacheClientTotalConns |
客户端连接总数。 |
1.3.6.1.4.1.15497.1.2.3.3.8.0 |
cacheServerTotalConns |
服务器连接总数。 |
排除SNMP故障
要查看SWA与SNMP管理器之间的连接,最好捕获数据包,您可以将数据包捕获过滤器设置为:(端口161或端口162)。
注意:此过滤器是由默认SNMP端口导致的。如果更改了端口,请将配置的端口号放入数据包捕获过滤器。
从SWA捕获数据包的步骤:
步骤1.登录到GUI。
步骤2.在右上角选择Support and Help。
步骤3.选择Packet Capture。
步骤4.选择Edit settings。
步骤5.确保已选择正确的接口。
步骤6.输入过滤条件。
映像 — 配置数据包捕获过滤器
步骤7.选择提交。
步骤8.选择Start Capture。
SNMPWALK
snmpwalk是自动运行多个GET-NEXT请求的SNMP应用的名称。SNMP GET-NEXT请求用于查询已启用的设备并从设备获取SNMP数据。之所以使用snmpwalk命令,是因为它允许用户将GET-NEXT请求链接在一起,而无需为子树中的每个OID或节点输入唯一的命令。
在Windows操作系统上安装SNMPWALK
对于Microsoft Windows用户,首先需要下载该工具。
在Linux内核上安装SNMPWALK
#For Redhat, Fedora, CentOs:
yum install net-snmp-utils
#For Ubuntu:
apt-get install snmp
在MacOS上安装SNMPWALK
默认情况下,snmpwalk安装在MacOS上。
要生成SNMP GET请求,可以从您的网络中与SWA连接的另一台计算机使用snmpwalk命令,下面是snmpwalk命令的一些示例:
snmpwalk -v2c -c
snmpwalk -v3 -l authPriv -u v3get -a SHA -A
-x AES -X
注意:您可以选择将安全级别设置为noAuthNoPriv、authNoPriv或authPriv,具体取决于您的SWA配置。
SNMPTRAP
snmptrap是隐藏的CLI命令,需要在SWA上启用SNMP。您可以通过选择对象和陷阱来生成SNMP陷阱,如下例所示:
SWA_CLI>snmptrap
1. CPUUtilizationExceeded
2. FIPSModeDisableFailure
3. FIPSModeEnableFailure
4. FailoverHealthy
5. FailoverUnhealthy
6. connectivityFailure
7. keyExpiration
8. linkUpDown
9. memoryUtilizationExceeded
10. updateFailure
11. upstreamProxyFailure
Enter the number of the trap you would like to send.
[]> 8
1. CPUUtilization
2. FIPSApplicationName
3. FailoverApplicationName
4. RAIDEvents
5. RAIDID
6. connectionURL
7. ifIndex
8. ip
9. keyDescription
10. memoryUtilization
11. raidStatus
12. updateServiceName
Enter the number of the object you would like to send.
[]> 8
Enter the trap value.
[]> 10.20.3.15
Enter the user name
[admin]> SNMPuser
Please select Trap Protocol version:
1. 2c
2. 3
[1]> 2
SWA中的SNMP日志
SWA有两个与SNMP相关的日志。与Web代理组件相关的某些日志类型未启用,但您可以从以下位置启用它们:
- 在GUI中:System Administration > Log subscriptions
- 在CLI中:logconfig > new
日志文件类型 |
描述 |
是否支持系统日志推送? |
默认启用? |
SNMP日志 |
记录与SNMP网络管理引擎相关的调试消息。 |
Yes |
Yes |
SNMP模块日志 |
记录与与SNMP监控系统交互相关的Web代理消息。 |
无 |
无 |
SNMP的常见问题
某些OID失败(无值或值错误)
此问题与SNMP拉取相关。以下是预期输出和错误输出的两个示例:
Sample Output without Error:
$ snmpwalk -O a -v 3 -M "/var/lib/mibs/" -m "ALL" -l authPriv -a MD5 -x DES -u v3get -A xxx -X xxx proxy 1.3.6.1.4.1.15497.1.1.1.9
iso.3.6.1.4.1.15497.1.1.1.9.1.1.1 = INTEGER: 1
iso.3.6.1.4.1.15497.1.1.1.9.1.2.1 = INTEGER: 22
iso.3.6.1.4.1.15497.1.1.1.9.1.3.1 = STRING: "Ambient"
Sample Output with Error:
$ snmpwalk -O a -v 3 -M "/var/lib/mibs/" -m "ALL" -l authPriv -a MD5 -x DES -u v3get -A xxx -X xxx proxy 1.3.6.1.4.1.15497.1.1.1.9
iso.3.6.1.4.1.15497.1.1.1.9 = No Such Instance currently exists at this OID
您可以在snmp_logs中检查Application Faults。
您可以通过输入SWA_CLI> grep命令,然后选择与snmp_logs关联的编号来检查snmp_logs:
SWA_CLI> grep
Currently configured logs:
1. "accesslogs" Type: "Access Logs" Retrieval: FTP Poll
2. "adc_logs" Type: "ADC Engine Logs" Retrieval: FTP Poll
...
37. "snmp_logs" Type: "SNMP Logs" Retrieval: FTP Poll
...
Enter the number of the log you wish to grep.
[]> 37
Enter the regular expression to grep.
[]>
Do you want this search to be case insensitive? [Y]>
Do you want to search for non-matching lines? [N]>
Do you want to tail the logs? [N]> y
Do you want to paginate the output? [N]>
参考