10.3.1 Zabbix5.0: 监控某台设备的UDP端口、监控NTP服务器UDP123端口(监控项类型:外部检查、访问权限 zabbix ALL=NOPASSW)、测试UDP端口通不通、nmap

10.3.1 Zabbix5.0: 监控某台设备的UDP端口、监控NTP服务器UDP123端口(监控项类型:外部检查、访问权限 zabbix ALL=NOPASSW)、测试UDP端口通不通

关于外部检查:

https://www.zabbix.com/documentation/5.0/zh/manual/config/items/itemtypes/external

zabbix server会再定义好的目录里面执行外部脚本(zabbix server中的配置extenalScripts),这个脚本将使用zabbix的运行用户身份运行。请注意权限以及只有指定目录中的命令才能够被执行。

zabbix脚本使用标准方式输出(完整输出但是会删除末尾的空白),标准错误和退出代码将会被丢弃

备注:请不要过度使用那个外部检测,这会严重降低zabbix系统性能

 

 

需要在本地zabbix服务器上监控NTP服务器(一台华为路由器)udp123的端口映射情况,需要配置合适的监控项和出发器,同时生成图形。为了满足这些条件,准备按照以下思路进行:

1、目前监测udp端口状态的程序只有nmap比较好

2、无法使用zabbix-agent的方式,决定使用外部检查的方式运行自定义脚本

3、外部检查需要编写脚本(由zabbix执行脚本),方法是用nmap监测公网udp端口,监测到open就返回值1,没有就返回值0

4、配置合适的监控项、触发器和图形,完成监控

NMap简介

NMap,也就是Network Mapper,是Linux下的网络扫描和嗅探工具包。

Nmap是一个网络连接端口扫描软件,用来扫描网上电脑开放的网络连接端口。确定哪些服务运行在哪些连接端口,并且推断计算机运行哪个操作系统,用以评估网络系统安全。

NMAP(Network Mapper)是一款开放源代码的网络探测和安全审核的工具。它的设计目标是快速地扫描大型网络,当然用它扫描单个主机也没有问题.Nmap以新颖的方式使用原始IP报文来发现网络上有一些主机,那些主机提供什么服务(应用程序名和版本),那些服务运行在什么操作系统(包括版本信息),它们使用什么类型的报文过滤器/防火墙,以及一堆其他功能。虽然Nmap通常用于安全审核,许多系统管理员和网络管理员也用它来做一些日常的工作,选择查看整个网络的信息,管理服务升级计划,以及监视主机和服务的运行。

Nmap所识别的6个端口状态

open(开放的)

closed(关闭的)

filtered(被过滤的)

unfiltered(未被过滤的)

open|filtered(开放或者被过滤的)

closed|filtered(关闭或者被过滤的)

Nmap所识别的6个端口状态。

 

安装nmap

yum install nmap -y

10.3.1 Zabbix5.0: 监控某台设备的UDP端口、监控NTP服务器UDP123端口(监控项类型:外部检查、访问权限 zabbix ALL=NOPASSW)(图1)

10.3.1 Zabbix5.0: 监控某台设备的UDP端口、监控NTP服务器UDP123端口(监控项类型:外部检查、访问权限 zabbix ALL=NOPASSW)(图2)

nmap -sU  10.11.1.4 -p 123 -Pn

10.3.1 Zabbix5.0: 监控某台设备的UDP端口、监控NTP服务器UDP123端口(监控项类型:外部检查、访问权限 zabbix ALL=NOPASSW)(图3)

[root@zh-cjh externalscripts]# pwd

/usr/lib/zabbix/externalscripts

[root@zh-cjh externalscripts]# vi nampudp123.sh

#! /bin/bash

nmap -sU 10.11.1.4 -p 123  -Pn|grep open -c

备注:用grep -c 统计匹配的行数

给予执行的权限:

[root@zh-cjh externalscripts]# chmod a+x nampudp123.sh

 

使用visudo提升zabbix用户权限(本次实验并不需要做此项,因为我使用的帐号是root

因为nmap这个的核心功能必须使用root用户的权限才能运行,所以我们必须使用visudo让zabbix用户能够以root权限运行nmap

在20行下添加

zabbix ALL=(root)/usr/bin/nmap

意思是让zabbix用户能在任何主机上以root的身份运行nmap

备注:/usr/bin/nmap为nmap的路径。

[root@zh-cjh externalscripts]# find / -name nmap

/etc/alternatives/nmap

/var/lib/alternatives/nmap

/usr/bin/nmap

/usr/share/nmap

[root@zh-cjh externalscripts]#

测试脚本:

[root@zh-cjh externalscripts]# /usr/lib/zabbix/externalscripts/nampudp123.sh

1

[root@zh-cjh externalscripts]#

NTP服务开启时的测试:

[root@zh-cjh externalscripts]# nmap -sU  10.11.1.4 -p 123 -Pn

Starting Nmap 6.40 ( http://nmap.org ) at 2021-07-10 16:49 CST

Nmap scan report for 10.11.1.4

Host is up (0.14s latency).

PORT    STATE SERVICE

123/udp open  ntp

MAC Address: 50:00:00:07:00:00 (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 0.61 seconds

[root@zh-cjh externalscripts]#

NTP服务关闭时的测试:

[root@zh-cjh externalscripts]# nmap -sU  10.11.1.4 -p 123 -Pn

Starting Nmap 6.40 ( http://nmap.org ) at 2021-07-10 16:50 CST

Nmap scan report for 10.11.1.4

Host is up (0.027s latency).

PORT    STATE         SERVICE

123/udp open|filtered ntp

MAC Address: 50:00:00:07:00:00 (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 0.41 seconds

[root@zh-cjh externalscripts]#

如果输出的结果包含open,则表示端口是通的,但是端口被关闭可能会输出为open|filtered,所以此方法有漏洞。

观察Nmap所识别的6个端口状态,如果端口不通时,一定包含closed或者filtered

所以实现的思路为如果输出结果包含closed或者filtered,则输出1,表示端口是不通的,否则输出0,则示端口通。

nmap -sU 10.11.1.4 -p 123  -Pn|grep -E 'closed|filtered' -c

备注:

Linux: grep多个关键字

1、或操作

grep -E '123|abc' filename  // 找出文件(filename)中包含123或者包含abc的行

egrep '123|abc' filename    // egrep同样可以实现

awk '/123|abc/' filename   // awk 的实现方式2、与操作

2、与操作

grep pattern1 files | grep pattern2 //显示既匹配 pattern1 又匹配 pattern2 的行。

3、其他操作

grep -i pattern files   //不区分大小写地搜索。默认情况区分大小写,

grep -l pattern files   //只列出匹配的文件名,

grep -L pattern files   //列出不匹配的文件名,

grep -w pattern files  //只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’),

grep -C number pattern files //匹配的上下文分别显示[number]行,

重新编辑脚本:

[root@zh-cjh externalscripts]# vi nampudp123.sh

#! /bin/bash

nmap -sU 10.11.1.4 -p 123  -Pn|grep -E 'closed|filtered' -c

[root@zh-cjh externalscripts]#

服务开启ntp服务测试:

[Huawei-AR1000V]ntp server enable

运行脚本测试:

[root@zh-cjh externalscripts]# pwd

/usr/lib/zabbix/externalscripts

[root@zh-cjh externalscripts]#

[root@zh-cjh externalscripts]#

[root@zh-cjh externalscripts]# /usr/lib/zabbix/externalscripts/nampudp123.sh

0

[root@zh-cjh externalscripts]#

服务半闭ntp服务测试:

[Huawei-AR1000V]undo ntp server enable

运行脚本 测试:

[root@zh-cjh externalscripts]# /usr/lib/zabbix/externalscripts/nampudp123.sh

1

[root@zh-cjh externalscripts]#

Zabbix配置监控项

10.3.1 Zabbix5.0: 监控某台设备的UDP端口、监控NTP服务器UDP123端口(监控项类型:外部检查、访问权限 zabbix ALL=NOPASSW)(图4)

注意,我测试将监控周期设定为5s,实际环境中尽量不要设置时间太短,减少nmap的扫描的影响。

监控NTP服务器10.11.1.4 UDP 123 端口状态(华为路由器)

nampudp123.sh

10.3.1 Zabbix5.0: 监控某台设备的UDP端口、监控NTP服务器UDP123端口(监控项类型:外部检查、访问权限 zabbix ALL=NOPASSW)(图5)

10.3.1 Zabbix5.0: 监控某台设备的UDP端口、监控NTP服务器UDP123端口(监控项类型:外部检查、访问权限 zabbix ALL=NOPASSW)(图6)

修改信息类型为文本

10.3.1 Zabbix5.0: 监控某台设备的UDP端口、监控NTP服务器UDP123端口(监控项类型:外部检查、访问权限 zabbix ALL=NOPASSW)(图7)

10.3.1 Zabbix5.0: 监控某台设备的UDP端口、监控NTP服务器UDP123端口(监控项类型:外部检查、访问权限 zabbix ALL=NOPASSW)(图8)

配置触发器

监控NTP服务器10.11.1.4 UDP 123 端口状态(华为路由器)

10.3.1 Zabbix5.0: 监控某台设备的UDP端口、监控NTP服务器UDP123端口(监控项类型:外部检查、访问权限 zabbix ALL=NOPASSW)(图9)

{Zabbix server:nampudp123.sh.last(,5)}=0

10.3.1 Zabbix5.0: 监控某台设备的UDP端口、监控NTP服务器UDP123端口(监控项类型:外部检查、访问权限 zabbix ALL=NOPASSW)(图10)

问题:直接在服务器上执行脚本时,结果为1,但是在监控项执行时,结果不是1

[root@zh-cjh externalscripts]# pwd

/usr/lib/zabbix/externalscripts

[root@zh-cjh externalscripts]# ls

a.sh  nampudp123.sh  ping2.sh

[root@zh-cjh externalscripts]#

[root@zh-cjh externalscripts]# /usr/lib/zabbix/externalscripts/nampudp123.sh

1

[root@zh-cjh externalscripts]#

10.3.1 Zabbix5.0: 监控某台设备的UDP端口、监控NTP服务器UDP123端口(监控项类型:外部检查、访问权限 zabbix ALL=NOPASSW)(图11)

You requested a scan type which requires root privileges. QUITTING! 0

您请求的扫描类型需要根权限。 退出! 0  

 

查看zabbix中的用户

 cut -d: -f1 /etc/passwd

10.3.1 Zabbix5.0: 监控某台设备的UDP端口、监控NTP服务器UDP123端口(监控项类型:外部检查、访问权限 zabbix ALL=NOPASSW)(图12)

[root@zh-cjh ~]# cat /etc/sudoers

 

[root@zh-cjh externalscripts]# find / -name nmap

/etc/alternatives/nmap

/var/lib/alternatives/nmap

/usr/bin/nmap

/usr/share/nmap

[root@zh-cjh externalscripts]#

 

[root@zh-cjh ~]# su zabbix

This account is currently not available.

用vi看看 apache的帐号信息

# cat /etc/passwd | grep zabbix

zabbix:x:990:985:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin

发现它的shell是“/sbin /nologin”,需要将起改成“/bin/bash”

zabbix:x:990:985:Zabbix Monitoring System:/var/lib/zabbix:/bin/bash

 

测试:

[root@zh-cjh ~]# su zabbix

bash-4.2$ pwd

/usr/lib/zabbix/externalscripts

bash-4.2$

bash-4.2$

bash-4.2$ /usr/lib/zabbix/externalscripts/nampudp123.sh

You requested a scan type which requires root privileges.

QUITTING!

0

bash-4.2$

bash-4.2$ sudo /usr/lib/zabbix/externalscripts/nampudp123.sh  

>>> /etc/sudoers: syntax error near line 95 <<<

sudo: parse error in /etc/sudoers near line 95

sudo: no valid sudoers sources found, quitting

sudo: unable to initialize policy plugin

bash-4.2$

 

没有意义的尝试

查看日志

[root@zh-cjh ~]# cat  /var/spool/mail/root

zh-cjh.local:2222 : Jul 10 21:07:53 : zabbix : parse error in /etc/sudoers near line 95 ; TTY=pts/0 ; PWD=/usr/lib/zabbix/externalscripts ; USER=root ;

 

[root@zh-cjh ~]# vi /etc/sudoers

 

查看命令的路径

[root@zh-cjh ~]# which nmap

/usr/bin/nmap

[root@zh-cjh ~]#

 

[root@zh-cjh ~]# getfacl /usr/bin/nmap

getfacl: Removing leading '/' from absolute path names

# file: usr/bin/nmap

# owner: root

# group: root

user::rwx

group::r-x

other::r-x

 

[root@zh-cjh ~]# setfacl -m u:zabbix:rwx /usr/bin/nmap

[root@zh-cjh ~]# getfacl /usr/bin/nmap               

getfacl: Removing leading '/' from absolute path names

# file: usr/bin/nmap

# owner: root

# group: root

user::rwx

user:zabbix:rwx

group::r-x

mask::rwx

other::r-x

[root@zh-cjh ~]#

 

root@zh-cjh ~]# cd /usr/lib/zabbix/externalscripts/

[root@zh-cjh externalscripts]# ls

a.sh  f.sh  nampudp123.sh  ok.sh  ping2.sh

[root@zh-cjh externalscripts]# getfacl nampudp123.sh

# file: nampudp123.sh

# owner: root

# group: root

user::rwx

group::r-x

other::r-x

 

[root@zh-cjh externalscripts]# setfacl -m u:zabbix:rwx nampudp123.sh

 

root@zh-cjh externalscripts]# chmod 777 nampudp123.sh

[root@zh-cjh externalscripts]# getfacl nampudp123.sh

# file: nampudp123.sh

# owner: root

# group: root

user::rwx

user:zabbix:rwx

group::r-x

mask::rwx

other::rwx

 

[root@zh-cjh externalscripts]# chown zabbix nampudp123.sh

[root@zh-cjh externalscripts]# getfacl nampudp123.sh     

# file: nampudp123.sh

# owner: zabbix

# group: root

user::rwx

user:zabbix:rwx

group::r-x

mask::rwx

other::rwx

 

[root@zh-cjh externalscripts]#

 

修改所属组

[root@zh-cjh externalscripts]# usermod -g root zabbix

[root@zh-cjh externalscripts]

查看zabbix所属组

[root@zh-cjh externalscripts]# groups zabbix

zabbix : root

[root@zh-cjh externalscripts]#

 

 

 

 

 

 

visudo

[root@zh-cjh ~]# vi /etc/sudoers

或者[root@zh-cjh ~]# visudo

zabbix  ALL=(ALL)       NOPASSWD:ALL

[root@zh-cjh externalscripts]# su zabbix        

bash-4.2$  sudo /usr/lib/zabbix/externalscripts/nampudp123.sh

1

bash-4.2$

bash-4.2$ /usr/lib/zabbix/externalscripts/nampudp123.sh

You requested a scan type which requires root privileges.

QUITTING!

0

bash-4.2$

[root@zh-cjh externalscripts]# cat nampudp123.sh

#! /bin/bash

nmap -sU 10.11.1.4 -p 123  -Pn|grep filtered -c

脚本中加上sudo

[root@zh-cjh externalscripts]# vi nampudp123.sh

#! /bin/bash

sudo nmap -sU 10.11.1.4 -p 123  -Pn|grep filtered -c

测试:结果成功获取相关的值

10.3.1 Zabbix5.0: 监控某台设备的UDP端口、监控NTP服务器UDP123端口(监控项类型:外部检查、访问权限 zabbix ALL=NOPASSW)(图13)

测试:关闭NTP服务器,查看报警结果

[Huawei-AR1000V]undo ntp server enable

10.3.1 Zabbix5.0: 监控某台设备的UDP端口、监控NTP服务器UDP123端口(监控项类型:外部检查、访问权限 zabbix ALL=NOPASSW)(图14)

测试:开启NTP服务器,查看报警结果

[Huawei-AR1000V]ntp server enable

10.3.1 Zabbix5.0: 监控某台设备的UDP端口、监控NTP服务器UDP123端口(监控项类型:外部检查、访问权限 zabbix ALL=NOPASSW)(图15)

查看历史记录

10.3.1 Zabbix5.0: 监控某台设备的UDP端口、监控NTP服务器UDP123端口(监控项类型:外部检查、访问权限 zabbix ALL=NOPASSW)(图16)

10.3.1 Zabbix5.0: 监控某台设备的UDP端口、监控NTP服务器UDP123端口(监控项类型:外部检查、访问权限 zabbix ALL=NOPASSW)(图17)

相关知识点:

访问权限

Make sure that the 'zabbix' user has execute permissions for configured commands. One may be interested in using sudo to give access to privileged commands. To configure access, execute as root: 确保'zabbix'用户对已配置的命令具有执行权限。 可能有人更乐于使用 sudo 来访问特权命令。 要配置访问权限,请以root身份执行:

# visudo

可以在 sudoers 文件中使用以下的示例代码:

# allows 'zabbix' user to run all commands without password.

zabbix ALL=NOPASSWD: ALL

# allows 'zabbix' user to restart apache without password.

zabbix ALL=NOPASSWD: /etc/init.d/apache restart

在某些系统中,sudoers 文件将阻止非本地用户执行命令。要更改此设置,请在 /etc/sudoers 文件中注释 requiretty 选项。



--------------------

[root@zh-cjh ~]# nmap -sU  time.windows.com -p 123 -Pn

Starting Nmap 6.40 ( http://nmap.org ) at 2023-04-15 15:48 CST
Nmap scan report for time.windows.com (20.189.79.72)
Host is up (0.097s latency).
PORT    STATE SERVICE
123/udp open  ntp
Nmap done: 1 IP address (1 host up) scanned in 0.21 seconds
[root@zh-cjh ~]# 

图片.png


[root@zh-cjh ~]# nmap -sU  172.16.7.80 -p 161 -Pn
Starting Nmap 6.40 ( http://nmap.org ) at 2023-04-15 15:50 CST
Nmap scan report for 172.16.7.80
Host is up (0.0064s latency).
PORT    STATE SERVICE
161/udp open  snmp
Nmap done: 1 IP address (1 host up) scanned in 0.11 seconds
[root@zh-cjh ~]#


Zabbix5(列表、list、全)zabbixlist
http://www.zh-cjh.com/wenzhangguilei/722.html
文章归类、所有文章列表、LISTLIST
http://www.zh-cjh.com/wangzhangonggao/2195.html

1、本站资源长期持续更新。
2、本资源基本为原创,部分来源其他付费资源平台或互联网收集,如有侵权请联系及时处理。
3、本站大部分文章的截图来源实验测试环境,请不要在生产环境中随意模仿,以免带来灾难性后果。

转载请保留出处:  www.zh-cjh.com珠海陈坚浩博客 » 10.3.1 Zabbix5.0: 监控某台设备的UDP端口、监控NTP服务器UDP123端口(监控项类型:外部检查、访问权限 zabbix ALL=NOPASSW)、测试UDP端口通不通、nmap

作者: cjh


手机扫一扫,手机上查看此文章:

一切源于价值!

其他 模板文件不存在: ./template/plugins/comment/pc/index.htm

未雨绸缪、居安思危!

数据安全、有备无患!

注意操作、数据无价!

一切源于价值!