1、简单网络管理协议(SNMP)是TCP/IP协议簇的一个应用层协议,工作在UDP 161端口,用于监控目标设备的 *** 作系统、硬件设备、服务应用、软硬件配置、网络协议状态、设备性能及资源利用率、设备报错事件信息、应用程序状态等软硬件信息。
2、SNMP的通信字符串主要包含两类命令:GET命令,SET命令。
1)GET命令从设备读取数据,这些数据通常是 *** 作参数,例如连接状态、接口名称等。
2)SET命令允许设置设备的某些参数,这类功能一般有限制,例如关闭某个网络接口、修改路由器参数等功能。
3)但很显然,GET、SET命令都可能被用于拒绝服务攻击(DoS)和恶意修改网络参数。
由上面介绍的SNMP服务可以看出SNMP对于渗透测试者来说简直就是信息宝藏,一旦这个服务协议被利用,那么目标的大部分配置信息都会暴露无遗,对于企业来说这是致命的,而想要利用这个协议的弱点只需要服务器管理员缺乏安全意识做一些默认配置。
常见攻击场景:
1、snmp-check
A、snmp-check 支持对windows、类Unix、网络设备、打印机等安装SNMP服务的设备进行攻击。
B、攻击原理:snmp-check通过发送各种预定义的OID对目标进行探测,收集目标SNMP管理的信息。
C、基础语法:snmp-check 1921681109 -c public -v 2c
2、snmpwalk或snmpget
在kali下可以用snmpwalk或snmpget命令来和snmp主机进行交换数据。
说起网络管理,恐怕大部分人立刻就能想到局域网的组建、服务器的配置、美萍网管大师之类的软件使用以及软、硬件系统的安装、调试和维护等工作,而相当多的中小规模局域网管理员平日里的工作也就是不断地安装 *** 作系统和应用软件、查杀病毒、数据备份、计算机和网线、网卡的故障排除等等,在很多非专业人士的眼里似乎这些就是网络管理的全部,而在相当多的网管论坛上,这些也都是大家讨论的重点。然而,严格地说来,这类工作并不是真正意义上的网络管理,它们只能被称作系统管理或者系统维护,充其量它们只是网络管理中的一个很小的并且缺乏技术含量的部分,而真正的网络管理则离不开SNMP--简单网络管理协议。
由于SNMP网络管理的学习并不像普通的系统维护那么简单,它不但要求我们的网络管理员要深入了解网络中的交换和路由设备,还要求我们能够透彻认识SNMP协议原理,所以这种管理方式在大部分中小规模局域网中的运用并不多见。但因为SNMP是目前在计算机网络中用得最广泛的网络管理协议,所以我们可以肯定的说:一个连SNMP都不清楚的网络管理员就绝对不是一个好的网络管理员。本文中笔者将带领大家一步一步地去学习SNMP网络管理,尽量减少枯燥的理论知识、加大实践力度,将原本仿佛遥不可及的`SNMP拉到大家的身边,让大家切身体会到SNMP网络管理在日常工作中的重要意义。
初识SNMP网络管理
SNMP的英文全称是Simple Network Management Protocol,中文名为简单网络管理协议,是一个基于TCP/IP协议的网络管理标准。SNMP网络管理包含两个部分:网络管理站(也叫管理进程,manager)和被管的网络单元(也叫被管设备)。网络管理站通常是一台安装了网络管理软件的计算机,可以显示所有被管设备的状态,我们一般称之为网管工作站;而被管设备则种类繁多,包括交换机、路由器、防火墙、服务器以及打印机等等,被管设备上的管理软件我们称之为代理进程,用于回答管理进程(网管工作站)的查询。图1显示了一个使用两台SNMP网管工作站进行网络管理的拓扑结构。
在图1中,两台网管工作站上面分别安装了SNMP网络管理软件,以对局域网中的所有的被管设备(交换机、路由器、防火墙和服务器)进行管理和监控,而被管设备上面则运行着代理进程,因此整个网络的管理就可以集中在这两台网管工作站上面来进行了。
SNMP网络管理包括三个组成部分:管理信息库MIB、管理信息结构SMI和SNMP网络管理协议。管理信息库(MIB)中存放的是被管设备的所有信息,比方说被管设备的名称、运行时间、接口速度、接口进来/发出的报文等等,当前的管理信息库版本为MIB-II;管理信息结构SMI用于定义管理信息库MIB的结构和表示符号,限制在MIB变量中允许的变量类型,指定对这些变量命名的规则以及创建定义变量类型的规则;而SNMP网络管理协议则是管理进程(位于网管工作站上)和代理进程(位于被管设备上)之间的通信协议。
SNMP网络管理定义了5种报文 *** 作:
GetRequest *** 作:用于管理进程从代理进程上面提取一个或者多个MIB参数值,这些参数值均在管理信息库中被定义;
GetNextRequest *** 作:从代理进程上面提取一个或多个参数的下一个参数值;
SetRequest *** 作:设置代理进程的一个或多个MIB参数值;
GetResponse *** 作:代理进程返回一个或多个MIB参数值,它是前面三种 *** 作中的响应 *** 作;
Trap *** 作:这是代理进程主动向管理进程发出的报文,它标记出一个可能需要特殊注意的事件的发生,比方说重新启动可能就会触发一个Trap陷阱。
前面三个 *** 作是管理进程向代理进程发出的,后面两个 *** 作则是代理进程发给管理进程的,其中除了Trap *** 作使用UDP162端口外,其他4个 *** 作均使用UDP161端口。通过这五种报文 *** 作,管理进程和代理之间就能够进行相互之间的通信了。
在看完SNMP网络管理的三个组成部分和五个报文 *** 作的介绍后,可能还是有很多的读者仍然对SNMP感到比较抽象,没有关系,大家现在可以不用太追求对这些概念的感性认识,跟着我一步一步地往下看就行了,稍后我们会用实例来给大家提供感性的认识。
使用snmp远程调用获取设备信息注意点(使用前提):1 被管理设备上snmp服务正常,且可以被远程调用(修改/etc/snmp/snmpdconf配置文件,大概在15行,将下面一行注释掉:agentAddress udp:127001:161)>>>不要配置这个
2 SNMP默认只能查看两个设备节点,要想查看所有节点还需要进行一些配置。打开/etc/snmp/snmpdconf,配置mibs,使其所有设备信息都可以被获取到
3 保证被管理设备将161端口和162端口设置通过防火墙设置
经过对比,linux安装netsnmp,python使用Easysnmp包,
Net-snmp版本:rpm -qa|grep snmp 572
配置:
装好之后修改/etc/snmp/snmpdconf对其进行配置:
A、修改默认的“community” string com2sec notConfigUser default public 将public修改为你才知道的字符串; 另default字符串如果想指定特定的服务器采集数据的话,将此字段替换成允许采集服务器的IP地址。(默认的话跳过此步)
B、把下面的#号去掉 #view mib2 included isoorgdodinternetmgmtmib-2 fc
C、把下面的语句access notConfigGroup” ” any noauth exact systemview none none 改成: access notConfigGroup ” ” any noauth exact mib2 none none
D、service snmpd restart
E、48服务器snmp可以开机自启:设置snmp的开机启动项,运行vi /etc/rclocal,将以下写入,/usr/local/net-snmp/sbin/snmpd -c /usr/local/net-snmp/share/snmp/snmpdconf
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)