设为首页 收藏本站
查看: 980|回复: 0

[经验分享] zabbix3.4上使用外部检查的方式监测公网udp端口开放情况

[复制链接]
YunVN网友  发表于 2019-1-19 09:59:34 |阅读模式
  1、使用nmap程序可以监测公网udp开放情况,比较准确
2、zabbix服务器支持使用外部检查的方式定义监控项,需要自己编写脚本
3、脚本的思路使用nmap监测公网指定upd端口,使用grep统计是否有“open”的字段,有则返回1,无则返回0
4、nmap需要root权限才能使用,zabbix服务端则是以zabbix用户身份运行,会提示权限不够,需要使用visudo程序让zabbix用户能够运行nmap程序
5、通过脚本生成监控项返回值1或0,生成图形


1、思路
  公司需要在本地zabbix服务器上监控公网地址udp9002的端口映射情况,需要配置合适的监控项和出发器,同时生成图形。为了满足这些条件,准备按照以下思路进行:
1、目前监测udp端口状态的程序只有nmap比较好
2、无法使用zabbix-agent的方式,因为没有合适内网机器运行zabbix-agent,同时nat会影响直接使用zabbix-agent监控端口,决定使用外部检查的方式运行自定义脚本
3、外部检查需要编写脚本,方法是用nmap监测公网udp端口,监测到open就返回值1,没有就返回值0
4、配置合适的监控项、触发器和图形,完成监控

2、外部检查的方式说明
  外部检查是由Zabbix服务器通过运行shell脚本或二进制执行的检查。
  外部检查不需要在被监控的主机上运行任何代理。
监控项Key的语法是:

script[,,...]
  当:
  参数  定义
script  shell脚本或二进制文件的名称。
parameter(s)    可选的命令行参数。
如果你不想将任何参数传递给脚本,可以使用:
  script[] 或者
script
Zabbix服务器将查找定义为外部脚本的位置的目录(Zabbix服务器配置文件中的参数“ExternalScripts”),然后执行该命令。 该命令将以Zabbix用户执行,因此,任何访问权限或环境变量都应在包装器脚本中处理,并且该命令的权限应允许该用户执行它。只有指定目录中的命令才可执行。
  简单来说,就是zabbix可以使用一段自定义的脚本作为监控项,这段脚本必须放置在/usr/lib/zabbix/externalscripts/ExternalScripts下,脚本一般会以zabbix的用户身份运行。

3、nmap说明
  本次使用的nmap命令如下

nmap -sU x.x.x.x -p 9002  -Pn
  关于nmap,网上有很多教程,本文不再说明
监测到效果如下:

关于nmap监测状态说明:
Open:端口处于开放状态,例如:当nmap使用TCP SYN对目标主机某一范围的端口进行扫描时,我们知道 TCP SYN报文是TCP建立连接的第一步,所以,如果目标主机返回SYN+ACK的报文,我们就认为此端口开放了并且使用了TCP服务。
  Closed:端口处于关闭状态。例如:TCP SYN类型的扫描,如果返回RST类型的报文,则端口处于管理状态。这里我们值得注意的是关闭的端口也是可访问的,只是没有上层的服务在监听这个端口,而且,只是在我们扫描的这个时刻为关闭,当我们在另一个时间段进行扫描的时候,这些关闭的端口可能会处于open的状态。
  Filtered(过滤的):由于报文无法到达指定的端口,nmap不能够决定端口的开放状态,这主要是由于网络或者主机安装了一些防火墙所导致的。当nmap收到icmp报文主机不可达报文(例如:type为3,code为13(communication administratively prohibit)报文)或者目标主机无应答,常常会将目标主机的状态设置为filtered。
  Unfiltered(未被过滤的),当nmap不能确定端口是否开放的时候所打上的状态,这种状态和filtered的区别在于:unfiltered的端口能被nmap访问,但是nmap根据返回的报文无法确定端口的开放状态,而filtered的端口直接就没就没能够被nmap访问。端口被定义为Unfilterd只会发生在TCP ack扫描类型时当返回RST的报文。而端口被定义为filtered 状态的原因是是报文被防火墙设备,路由器规则,或者防火墙软件拦截,无法送达到端口,这通常表现为发送NMAP的主机收到ICMP报错报文,如:TYPE为3,code为13的报文(通信被认为的禁止 communication administratively prohibited),或者主机通过多次重复发送没有收到任何回应)。
  Open|filtered状态,这种状态主要是nmap无法区别端口处于open状态还是filtered状态。这种状态只会出现在open端口对报文不做回应的扫描类型中,如:udp,ip protocol ,TCP null,fin,和xmas扫描类型。
  Closed|filtered状态,这种状态主要出现在nmap无法区分端口处于closed还是filtered时。此状态只会出现在IP ID idle scan(这个类型我现在也不太理解,过段时间进行总结一些)中。
言而言之,因为防火墙的作用,所以nmap无法得到端口回应,但是如果看到service下有应用或者不是unknow,则说明udp端口开放。

4、脚本编写
  脚本命名为undp_9002,保存在/usr/lib/zabbix/externalscripts/ExternalScripts下,同时使用chmod +x命令赋予可执行权限。
脚本如下:

#! /bin/bash
nmap -sU x.x.x.x -p 9002  -Pn|grep open -c
5、使用visudo提升zabbix用户权限
  因为nmap这个的核心功能必须使用root用户的权限才能运行,所以我们必须使用visudo让zabbix用户能够以root权限运行nmap
首先确定nmap的路径,如下所示

确定为/usr/bin/nmap。
网上关于visudo的教程很多,本文不再说明
在20行下添加

zabbix ALL=(root)/usr/bin/nmap
  意思是说让zabbix用户能在任何主机上以root的身份运行nmap,然后保存退出

最后测试脚本可否运行,脚本成功后如下图所示:


6、配置zabbix

6、1配置监控项
  配置监控项如下图所示:

注意,我将监控周期设定为300s,默认是30s,减少nmap的扫描的影响。

6.2配置触发器
  配置触发器如下图所示:

注意,推荐使用触发器是平均5分钟监测

6.3配置图形
  配置图形如下图所示:

  最终的效果如下图所示:





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-665067-1-1.html 上篇帖子: Zabbix通过SNMP监控Linux主机 下篇帖子: zabbix学习(九)触发器相关
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表