1、使用nmap程序可以监测公网tcp/udp开放情况,比较准确

2、zabbix服务器支持使用外部检查的方式定义监控项,需要自己编写脚本

3、脚本的思路使用nmap监测公网指定tcp/udp端口,使用grep统计是否有“open”的字段,有则返回1,无则返回0

4、nmap需要root权限才能使用,zabbix服务端则是以zabbix用户身份运行,会提示权限不够,需要使用visudo程序让zabbix用户能够运行nmap程序

5、通过脚本生成监控项返回值1或0,生成图形

1、思路

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

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

2、无法使用zabbix-agent的方式,因为没有合适内网机器运行zabbix-agent,同时nat会影响直接使用zabbix-agent监控端口,决定使用外部检查的方式运行自定义脚本

3、外部检查需要编写脚本,方法是用nmap监测公网tcp/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/下,脚本一般会以zabbix的用户身份运行。

3、nmap说明

本次使用的nmap命令如下

nmap -sT x.x.x.x -p 18000 -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、脚本编写

脚本命名为tcp_18000,保存在/usr/lib/zabbix/externalscripts/下,同时使用chmod +x命令赋予可执行权限。

脚本如下:

#! /bin/bash

nmap -sT x.x.x.x -p 18000 -Pn|grep open -c

5、使用visudo提升zabbix用户权限

因为nmap这个的核心功能必须使用root用户的权限才能运行,所以我们必须使用visudo让zabbix用户能够以root权限运行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配置图形

配置图形如下图所示:

最终的效果如下图所示:

python测试udp端口_zabbix上使用外部检查的方式监测公网tcp/udp端口开放情况相关推荐

  1. tcp udp区别优缺点_CCNA必懂篇,传输层协议TCP/UDP的区别和作用

    我们说会话层建立连接之后,就要建立传输层连接,那么为什么要建立这个传输层连接呢,我们先看一下传输层的作用是什么? 传输层的主要作用是处理我们的数据在发送的时候产生的数据包错误,数据包次序不对,数据丢失 ...

  2. xp系统简单tcpip服务器,Win XP系统下添加打印机的方式手工添加TCP/IP端口

    1.在安装TCP/IP打印机之前.先准备好打印机的相关驱动. 2.在安装的电脑上能用ping命令,测验打印服务器网络是否处于联通状态. 点开始 运行 ping 服务器的IP -t 或者键盘左下角微软键 ...

  3. 阿里云-默认封禁TCP 25端口出方向的访问流量,即您无法在阿里云上的云服务器通过TCP 25端口连接外部地址。

    TCP 25端口解封申请 本页目录 背景信息 操作步骤 出于安全考虑,阿里云默认封禁TCP 25端口出方向的访问流量,即您无法在阿里云上的云服务器通过TCP 25端口连接外部地址. 背景信息 TCP ...

  4. TCP/UDP常用端口及对应服务列表

     计算机之间依照互联网传输层TCP/IP协议不同的协议通信,都有不同的对应端口.所以,利用短信(datagram)的UDP,所采用的端口号码不一定和采用TCP的端口号码一样.以下为两种通信协议的端口 ...

  5. 渗透测试信息收集之域名信息、子域名信息、IP信息、端口信息

    域名信息收集 什么是信息收集 信息收集是指通过各种方式获取所需要的信息,以便我们在后续的渗透过程更好的进行 比如目标站点IP.中间件.脚本语言.端口.邮箱等等.信息收集包含资产收集但不限于资产收集 信 ...

  6. 网络编程(Tcp/Udp实现聊天、文件上传)

    网络编程 1.1 概述 计算机网络是指将位置不同的多台[计算机 通过通信线路连接起来,实现资源共享和信息传递的计算机系统 1.2 网络通信的要素 ip和端口 网络通信协议(tcp/udp) 1.3 I ...

  7. TCP/UDP常用端口列表

    前言 文章的表格中列举了Linux 中的服务.守护进程.和程序所使用的最常见的通信端口,该列表还可以在 /etc/services 文件中找到,更多详细信息推荐查看由互联网号码分派局(IANA)制定的 ...

  8. TCP UDP socket http webSocket 之间的关系

    阅读目录 OSI & TCP/IP 模型 几者之间的关系 HTTP Socket WebSocket webSocket 概念 webSocket 优点 Websocket 的作用 ajax轮 ...

  9. 简单的网络协议:TCP/UDP HTTP/HTTPS

    TCP TCP传输控制协议,是一种提供可靠数据传输的通用协议 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端机通过无线网络建立TCP连接.TCP协议可以对上层网络提供接口,使 ...

最新文章

  1. mysql 选择字符集 拉丁字符集_mysql的字符集
  2. python守护线程_Python守护线程用法实例
  3. cfile清空文件内容_编译-链接-加载 :ELF文件格式解析
  4. 史上最全 Python Re 模块讲解(三)
  5. 机器人导论知识点总结
  6. .NET+PostgreSQL实践与避坑指南
  7. try-with-resource语法
  8. 9岁女孩联合国演讲上热搜,网友:自愧不如
  9. linux HZ 值_Linux的serial串口控制台
  10. 基于Bootstrap的网站后台模板Metronic
  11. Java计算两日期相差天数源码
  12. 在线索二叉树中找前驱后继
  13. BUG(0):用某位表示特定属性
  14. Python中Socket粘包问题的解决
  15. 超酷网页 Message Box 样式集合
  16. windows下的mujoco环境搭建
  17. 产品经理岗位职责及面试指南
  18. QT 使用 qcustomplot 编译出错
  19. mps是什么意思 计算机网络,网络连接的半双工和全双工是啥意思 100MPS和10MPS又有啥区别...
  20. 解决win7下Realtek声卡有噪音的问题

热门文章

  1. sftp配置导致ssh连接闪断
  2. 后端CORS解决跨域问题
  3. the import XXXX cannot be resolved 解决方法
  4. MapperException: 无法获取实体类xxxxx对应的表名! 三种解决方法,总有一款适合你。
  5. Mysql容器启动失败-解决方案
  6. 3个方法解决百度网盘限速 (2018-07-20)
  7. Swift中的#pragma mark?
  8. win11华为的电脑管家错误怎么办 Windows11华为电脑管家错误的解决方法
  9. win11菜单栏的推荐项目怎么取消 windows11取消推荐项目的设置方法
  10. 数据库封装 sql server mysql_sqlserver数据库操作封装