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

2024-06-24 09:12

本文主要是介绍在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 工具的一些基本用法。我们将演示如何逐个或批量检索值以及如何修改数据。

这篇关于在Ubuntu 14.04上安装和配置SNMP守护程序和客户端的方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1089724

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

Centos7安装Mongodb4

1、下载源码包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.1.tgz 2、解压 放到 /usr/local/ 目录下 tar -zxvf mongodb-linux-x86_64-rhel70-4.2.1.tgzmv mongodb-linux-x86_64-rhel70-4.2.1/

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

wolfSSL参数设置或配置项解释

1. wolfCrypt Only 解释:wolfCrypt是一个开源的、轻量级的、可移植的加密库,支持多种加密算法和协议。选择“wolfCrypt Only”意味着系统或应用将仅使用wolfCrypt库进行加密操作,而不依赖其他加密库。 2. DTLS Support 解释:DTLS(Datagram Transport Layer Security)是一种基于UDP的安全协议,提供类似于

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

Centos7安装JDK1.8保姆版

工欲善其事,必先利其器。这句话同样适用于学习Java编程。在开始Java的学习旅程之前,我们必须首先配置好适合的开发环境。 通过事先准备好这些工具和配置,我们可以避免在学习过程中遇到因环境问题导致的代码异常或错误。一个稳定、高效的开发环境能够让我们更加专注于代码的学习和编写,提升学习效率,减少不必要的困扰和挫折感。因此,在学习Java之初,投入一些时间和精力来配置好开发环境是非常值得的。这将为我

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal