在Ubuntu 14.04上安装和配置SNMP守护程序和客户端的方法

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

介绍

作为系统管理员的重要工作之一是收集关于服务器和基础设施的准确信息。有许多工具和选项可用于收集和处理这种类型的信息。其中许多工具都是建立在一种叫做 SNMP 的技术之上。

SNMP 代表简单网络管理协议。它是服务器可以共享关于其当前状态的信息的一种方式,也是管理员可以修改预定义值的通道。虽然协议本身非常简单,但实现 SNMP 的程序结构可能非常复杂。

在我们的上一篇指南中,我们了解了 SNMP 协议的基础知识。在本指南中,我们将开始演示如何设置使用 SNMP 进行通信的工具。我们将使用两台 Ubuntu 14.04 服务器进行演示,但大多数其他系统应该可以通过一些修改来跟随操作。

安装 SNMP 守护程序和实用工具

我们可以通过在一些 Ubuntu 系统上安装守护程序和工具来开始探索如何在系统上实现 SNMP。

我们将使用两台服务器,一台将包含管理器部分,而另一台服务器将拥有代理。我们也可以选择在管理器机器上安装代理,但保持它们分开可以更容易地演示每个组件提供的功能。

在第一台服务器上,更新 apt 数据库并安装管理器组件。除此之外,我们还将下载另一个名为 snmp-mibs-downloader 的软件包,其中包含一些关于标准 MIB 的专有信息,这些信息允许我们通过名称访问大部分 MIB 树:

sudo apt-get update
sudo apt-get install snmp snmp-mibs-downloader

在我们的第二台服务器上,也就是我们将要与之交互并运行守护程序的服务器,我们可以通过输入以下命令来安装必要的组件:

sudo apt-get update
sudo apt-get install snmpd

安装了这些组件之后,我们需要配置我们的设置。

配置 SNMP 管理器

正如我们上面提到的,大部分工作都发生在代理组件中,因此我们在这台机器上的配置实际上非常简单。我们只需要修改一个文件,以确保我们的客户端可以使用我们安装的额外 MIB 数据。

使用带有 sudo 权限的文本编辑器打开 /etc/snmp/snmp.conf 文件:

sudo nano /etc/snmp/snmp.conf

在这个文件中,有一些注释和一行未被注释的内容。为了允许管理器导入 MIB 文件,我们只需要注释掉 mibs : 行:

#mibs :

完成后保存并关闭文件。

我们现在已经完成了管理器部分的配置,但我们仍然需要使用这台服务器来帮助我们配置我们的代理计算机。

配置 SNMP 代理机器

作为真正的客户端-服务器系统,代理计算机没有配置其自己的 SNMP 设置所需的外部工具。我们可以修改一些配置文件来进行一些更改,但我们需要通过从管理服务器连接到我们的代理服务器来完成大部分需要进行的更改。

首先,在我们的代理计算机上,我们需要使用带有 sudo 权限的方式打开守护程序的配置文件:

sudo nano /etc/snmp/snmpd.conf

在文件内部,我们需要进行一些更改。这些更改主要用于引导我们的配置,以便我们可以从我们的其他服务器管理它。

首先,我们需要更改 agentAddress 指令。当前,它设置为仅允许来自本地计算机的连接。我们需要注释掉当前行,并取消注释下面的行,该行允许所有连接(我们将很快限制这个):

#  仅监听来自本地系统的连接
#agentAddress  udp:127.0.0.1:161
#  在所有接口上监听连接(IPv4 和 IPv6)
agentAddress udp:161,udp6:[::1]:161

接下来,我们需要临时插入一个 createUser 行。这些指令通常不会保存在这个文件中,但我们很快会再次删除它,所以这并不太重要。

我们要创建的用户将被称为 bootstrap,并将用作创建我们的第一个“真实”用户的模板。SNMP 软件通过克隆用户的属性来完成这一过程。

在定义新用户时,您必须指定认证类型(MD5 或 SHA),并提供一个必须至少为 8 个字符的密码。如果您计划对传输使用加密,就像我们一样,您还必须指定隐私协议(DES 或 AES),并可选地提供隐私协议密码。如果未提供隐私协议密码,则认证密码也将用于隐私协议。

我们的用户创建行将如下所示:

createUser bootstrap MD5 temp_password DES

现在我们已经指定了一个新用户,我们需要设置此用户将拥有的访问级别。我们将为我们的 bootstrap 用户设置这一点,并为我们将要创建的新用户 demo 设置这一点。我们将使用 rwuser 指令允许它们读写访问(另一种选择是使用 rouser 进行只读访问)。

我们将通过在用户后面指定 priv 来强制使用加密。如果我们想将用户限制在 MIB 的特定部分,我们可以在行的末尾指定用户应该访问的最高级 OID。

对于我们的目的,我们的两行将非常简单:

rwuser bootstrap priv
rwuser demo priv

完成这些更改后,保存并关闭文件。

要实施这些更改,请重新启动 snmpd 服务:

sudo service snmpd restart

现在,从您安装管理软件的机器,我们可以连接到我们的代理服务器以创建我们的常规用户。

我们将使用 snmpusm 工具来执行此操作,该工具用于用户管理。为了使其正常运行,您需要知道您的代理服务器的 IP 地址。

在开始之前,我们将稍微讨论一下发送 SNMP 命令的一般结构。

SNMP 命令的一般结构

在使用 snmp 软件包中包含的工具套件(net-snmp 软件套件)时,您会注意到在调用命令时有一些模式。

首先,您必须使用您希望通信的 SNMP 守护程序进行身份验证。这通常涉及提供相当多的信息。以下是常见的信息:

  • -v VERSION:此标志用于指定您希望使用的 SNMP 协议版本。在本指南中,我们将使用 v3。
  • -c COMMUNITY:如果您使用 SNMP v1 或 v2 风格的社区字符串进行身份验证,则使用此标志。由于我们使用 v3 风格的基于用户的身份验证,因此我们将不需要这个。
  • -u USER-NAME:此参数用于指定您希望进行身份验证的用户名。要使用 SNMP 读取或修改任何内容,您必须使用已知的用户名进行身份验证。
  • -l LEVEL:用于指定您正在连接的安全级别。可能的值是 noAuthNoPriv 表示无身份验证和无加密,authNoPriv 表示身份验证但无加密,以及 authPriv 表示身份验证和加密。您使用的用户名必须配置为以您指定的安全级别运行,否则身份验证将不会成功。
  • -a PROTOCOL:此参数用于指定所使用的身份验证协议。可能的值是 MD5SHA。这必须与创建用户时指定的信息相匹配。
  • -x PROTOCOL:此参数用于指定所使用的加密协议。可能的值是 DESAES。这必须与创建用户时指定的信息相匹配。每当用户的特权规范在其后具有 priv 时,即要求加密时,就是必需的。
  • -A PASSPHRASE:用于提供创建用户时指定的身份验证密码短语。
  • -X PASSPHRASE:用于提供创建用户时指定的加密密码短语。如果未指定密码短语但给出了加密算法,则将使用身份验证密码短语。每当给出 -x 参数或每当用户的特权规范在其后具有 priv 时,即要求加密时,就是必需的。

有了这些信息,我们就可以开始构建我们的命令。根据我们设置的引导用户,我们将使用该帐户的命令如下:

snmp_command -u bootstrap -l authPriv -a MD5 -x DES -A temp_password -X temp_password remote_host snmp_sub_command_or_options

例如,从您的管理服务器,您可以通过键入以下内容来测试确保您的引导帐户可用:

snmpget -u bootstrap -l authPriv -a MD5 -x DES -A temp_password -X temp_password remote_host 1.3.6.1.2.1.1.1.0
SNMPv2-MIB::sysDescr.0 = STRING: Linux target 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64

1.3.6.1.2.1.1.1.0 字符串是负责显示系统信息的 OID。它基本上会返回远程系统上 uname -a 命令的输出。

现在我们已经验证了我们可以正确地对运行 SNMP 守护程序的服务器进行身份验证,我们可以继续创建我们的常规用户帐户。

设置常规用户帐户

尽管我们已经在 snmpd.conf 文件中指定了 demo 用户帐户的权限,但我们实际上还没有创建这个用户。我们将使用 bootstrap 用户作为我们新用户的模板。

在管理服务器上,我们可以使用 snmpusm 工具和以下一般语法从模板创建用户:

snmpusm authentication_info remote_host create new_user existing_user

因此,根据我们需要传递的身份验证标志以及利用我们已经拥有的用户帐户(bootstrap),我们可以创建一个符合我们已经定义的用户权限(demo)的用户。

命令将如下所示:

snmpusm -u bootstrap -l authPriv -a MD5 -x DES -A temp_password -X temp_password remote_host create demo bootstrap

您应该收到以下消息:

用户已成功创建。

现在我们在远程服务器上有一个名为 demo 的完全功能用户。但是,它仍在使用与 bootstrap 帐户相同的身份验证信息。我们应该将密码更改为其他内容。这次,我们将使用 demo 帐户进行身份验证。请记住,密码必须至少为 8 个字符长:

snmpusm -u demo -l authPriv -a MD5 -x DES -A temp_password -X temp_password remote_host passwd temp_password my_new_password

您应该收到以下消息:

SNMPv3 密钥已成功更改。

我们可以通过询问远程服务器 SNMP 服务已运行多长时间来测试我们的新凭据和密码。我们将使用 snmpget 命令从其他计算机获取单个值。

这次,我们将利用我们下载的额外 MIB 定义。我们可以使用这些定义来按名称请求值,而不是使用 OID 数字 ID。

snmpget -u demo -l authPriv -a MD5 -x DES -A my_new_password -X my_new_password remote_host sysUpTime.0

您应该得到一个代表远程 SNMP 守护程序上次重新启动时间的值:

DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (383018) 1:03:50.18

创建客户端配置文件

到目前为止,您可能已经注意到所有 SNMP 命令的身份验证详细信息在每次请求时都是相对静态的。与其每次都手动输入这些信息,我们可以创建一个客户端配置文件,其中包含我们连接所需的凭据。

客户端配置文件可以根据您希望共享的范围放置在两个不同的位置。

如果您希望与管理机器上的任何有效用户共享登录凭据,您可以将配置详细信息放入全局 snmp.conf 文件中。您需要以超级用户权限打开该文件:

sudo nano /etc/snmp/snmp.conf

然而,如果您只想为您自己定义用户的身份验证凭据,您可以在用户的主目录中创建一个隐藏的 .snmp 目录,并在其中创建文件:

mkdir ~/.snmp
cd ~/.snmp
nano snmp.conf

无论您决定将配置放置在何处,其内容都将是相同的。

我们用于身份验证的命令如下表所示。在右侧列中,您可以看到应该在 snmp.conf 文件中使用的指令名称来设置这些配置详细信息:

命令标志描述翻译后的 snmp.conf 指令
-u USERNAME用于身份验证的 SNMPv3 用户名。defSecurityName USERNAME
-l authPriv用于身份验证的安全级别。defSecurityLevel authPriv
-a MD5要使用的身份验证协议。defAuthType MD5
-x DES要使用的隐私(加密)协议。defPrivType DES
-A PASSPHRASE提供的用户名的身份验证密码。defAuthPassphrase PASSPHRASE
-X PASSPHRASE提供的用户名的隐私密码。defPrivPassphrase PASSPHRASE

利用这些信息,您可以构建一个适当的 snmp.conf 文件。对于我们的指南,它将如下所示:

defSecurityName demo
defSecurityLevel authPriv
defAuthType MD5
defPrivType DES
defAuthPassphrase my_new_password
defPrivPassphrase my_new_password

完成后,保存并关闭文件。

现在,您可以在不提供身份验证详细信息的情况下发出命令。您只需要 SNMP 命令、主机和命令参数。

与其输入:

snmpget -u demo -l authPriv -a MD5 -x DES -A my_new_password -X my_new_password remote_host sysUpTime.0

我们只需输入:

snmpget remote_host sysUpTime.0

如您所见,这显著减少了我们需要在每个请求中提供的信息量。

移除引导账户

现在您的常规账户已正确配置,我们可以移除 bootstrap 账户,因为它相当不安全。

在代理服务器上,再次以超级用户权限打开 /etc/snmp/snmpd.conf 文件。

找到并注释掉(或删除)我们先前添加的引用 bootstrap 用户的两行:

#createUser bootstrap MD5 temp_password DES
#rwuser bootstrap priv

保存并关闭文件。

现在,重新启动 SNMP 守护程序:

sudo service snmpd restart

这将满足不在正常的 snmpd.conf 文件中具有 createUser 指令的建议。它还将从该临时用户中删除权限。

如果您想要完全从 usmUserTable 中删除 bootstrap 用户,您可以通过从管理服务器发出以下命令来执行:

snmpusm remote_host delete bootstrap

您将收到以下响应:

User successfully deleted.

结论

到目前为止,您应该已经拥有一个完全配置的客户端-服务器设置,可以使用 SNMP 协议进行安全通信。您可以轻松地在其他主机上添加额外的守护程序,并在整个基础架构中配置账户访问。

在下一个指南中,我们将介绍我们一直在使用的 net-snmp 工具的一些基本用法。我们将演示如何逐个或批量检索值以及如何修改数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/34090.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库期末复习知识点

A卷 1. 选择题(30) 2. 判断范式(10) 判断到第三范式 3. 程序填空(20) 4. 分析填空(15) 5. 写SQL(25) 5一题 恶性 B卷 1. 单选(30) 2. 填空 (20) 3. 程序填空(20) 4. 写SQL(30) 知识点 第一章 数据库管理系统(DBMS) 主要功能 数据定义功能 (DDL, 数据定义语言, …

linux 登录ftp报Received message too long 1416128883

在linux 登录ftp报Received message too long 1416128883 [rootlocalhost ~]# sftp oaftp172.20.xx.xx解决办法: [rootlocalhost ~]# usermod -s /bin/bash oaftp[rootlocalhost ~]# systemctl restart vsftpd.service[rootlocalhost ~]# sftp oaftp172.20.xx.xx完…

JavaWeb系列十六: jQuery初步入门

跟老韩-JavaScript开发利器之jQuery 1.1 原理示意图1.2 快速入门1.2 什么是jquery对象1.3 dom对象转jQuery对象1.4 jQuery对象转dom对象 jQuery是一个快速的, 简洁的javaScript库, 使用户能更方便地处理HTML, css, dom…提供方法, events, 选择器, 并且方便地为网站提供AJAX交互…

【ElasticSearch】ElasticSearch实战

初步检索 检索 ES 信息 1)、GET /_cat/nodes:查看所有节点 127.0.0.1 44 83 1 0.01 0.01 0.00 dilm * 1b06a843b8e3 *代表主节点 2)、GET /_cat/health:查看健康状况 1718265331 07:55:31 elasticsearch yellow 1 1 4 4 0 0…

ansible archive模块

用于创建归档文件的模块。它允许你在目标主机上创建tar、zip、gzip、bzip2、xz等类型的归档文件。解压使用unarchive模块。 path:要打包的源目录或文件的路径。(可以是单个文件或目录,也可以是包含多个文件和目录的列表。)dest&am…

告别单张OCR,Umi-OCR让你轻松实现批量识别!

大家好,今天我要给大家介绍一款强大的OCR识别软件——Umi-OCR。相信很多朋友都用过QQ、微信或天若OCR等应用来进行图片文字识别,但你是否遇到过需要批量识别图片文字时,这些软件却无法满足你的需求呢?今天,这个问题将迎…

LeetCode 算法:二叉树的中序遍历 c++

原题链接🔗:二叉树的中序遍历 难度:简单⭐️ 题目 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 示例 1: 输入:root [1,null,2,3] 输出:[1,3,2] 示例 2: 输入&…

Spring数据访问架构设计解析

一、Spring JDBC 数据访问 1、简化了jdbc操作,定义了模板类JdbcTemplate 2、提高开发效率,构建了嵌入式数据源EmbeddedDatabase 3、统一底层异常结构DataAccessException 二、Spring事物管理器 声明式事物,Aop原理简化开发 三、Spring …

go sync包(三) 读写锁(二)

读写锁 RWMutex 写锁 加锁 RWMetex 的写锁复用了 Mutex: // Lock locks rw for writing. // If the lock is already locked for reading or writing, // Lock blocks until the lock is available. func (rw *RWMutex) Lock() {if race.Enabled {_ rw.w.state…

Selenium 选择器定位元素方式详解

Selenium 选择器定位元素方式详解 在自动化测试中,定位网页元素是一个至关重要的步骤。Selenium 提供了多种选择器来帮助我们精确地找到页面上的元素。以下将详细介绍各种选择器的用法和区别,包括 ID、XPATH、LINK_TEXT、PARTIAL_LINK_TEXT、NAME、TAG_…

将Windows11右键菜单修改为Windows10风格

Windows11更新后,右键菜单很多功能隐藏起来了,使用时需要点击“显示更多选型”才能获取完整功能。为了能获得Windows10右键菜单丝滑的体验,我总结了以下方法。 方法一:控制台操作法 按住winR打开运行窗口 输入cmd,…

区间问题——905. 区间选点

目录 区间问题 定义 运用情况 注意事项 解题思路 AcWing 905. 区间选点 题目描述 运行代码 代码思路 改进思路 其它代码 代码思路 区间问题 定义 区间通常是指一个连续的范围,可以用数轴上的一段来表示。 运用情况 在数学中广泛用于表示变量的取值范…

未系安全带智能监测摄像机

未系安全带智能监测摄像机在现代安全管理中发挥着至关重要的作用。这些先进设备不仅仅是简单的监视工具,更是通过整合高级技术来提升工作效率和安全性,特别是在需要高度警惕的作业环境中尤为突出。 首先,这些智能监测摄像机配备了精准的视觉识…

SOLIDWORKS专业版2024价格

SOLIDWORKS Professional 专业版,带有 ECAD/MCAD 协作、自动成本估算、协作功能、设计和工程图检查、复杂的零部件库以及高级真实感渲染。 1. ECAD/MCAD协作:SOLIDWORKS专业版提供了强大的ECAD/MCAD协作功能,使得设计团队可以更高效地进行跨…

HTML(23)——垂直对齐方式

垂直对齐方式 属性名:vertical-align 属性值效果baseline基线对齐(默认)top顶部对齐middle居中对齐bottom底部对齐 默认情况下浏览器对行内块,行内标签都按文字处理,默认基线对齐 导致图片看起来会偏上,文字偏下。 示例&#…

帝国cms定时审核并更新的方法

比如你网站采集了成千上万篇文章,不可能一下子全部放出来的,所以为了模拟人工发布,那么就需要定时审核发布文章内容,本文内容核心解决了更加个性化的逼真模拟人工更新网站内容。 第一:首先要满足你的表中有未审核的数据 第二:到http://bbs.phome.net/showthread-31-19616…

谷歌浏览器截图

一 右击,然后点击检查; 二 然后ctrlshiftp,运行命令; 三 3.1搜索截图: 如果你设置为中文,搜索截图,选择你想要的截图类型; 如果你是在英文情况下: 输入capture full size 来过滤…

【Redis】如何保证缓存和数据库的一致性

目录 背景问题思路 三个经典的缓存模式Cache-Aside读缓存写缓存为什么是删除旧缓存而不是更新旧缓存?为什么不先删除旧的缓存,然后再更新数据库? 延迟双删如何确保原子性 Read-Through/Write-ThroughRead-ThroughWrite-Through Write Behind …

【九】【QT开发应用】WebRTC的sigslot源码和使用WebRTC的sigslot使用编写信号槽

WebRTC(Web Real-Time Communication) 是一个开源项目,提供实时通信能力,广泛应用于视频、音频和数据传输。在WebRTC的实现中,sigslot库用于信号和槽机制,以实现事件驱动的编程模型。 WebRTC的sigslot部分…

电子盖章怎么做_电子盖章软件

使用e-章宝(易友EU3000智能盖章软件)进行电子盖章的步骤如下: 一、准备阶段 软件获取: 访问e-章宝(易友EU3000智能盖章软件)的官方网站或相关渠道,下载并安装软件。账户注册与登录&#xff1a…