在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

相关文章

ESP32 esp-idf esp-adf环境安装及.a库创建与编译

简介 ESP32 功能丰富的 Wi-Fi & 蓝牙 MCU, 适用于多样的物联网应用。使用freertos操作系统。 ESP-IDF 官方物联网开发框架。 ESP-ADF 官方音频开发框架。 文档参照 https://espressif-docs.readthedocs-hosted.com/projects/esp-adf/zh-cn/latest/get-started/index

问题:第一次世界大战的起止时间是 #其他#学习方法#微信

问题:第一次世界大战的起止时间是 A.1913 ~1918 年 B.1913 ~1918 年 C.1914 ~1918 年 D.1914 ~1919 年 参考答案如图所示

[word] word设置上标快捷键 #学习方法#其他#媒体

word设置上标快捷键 办公中,少不了使用word,这个是大家必备的软件,今天给大家分享word设置上标快捷键,希望在办公中能帮到您! 1、添加上标 在录入一些公式,或者是化学产品时,需要添加上标内容,按下快捷键Ctrl+shift++就能将需要的内容设置为上标符号。 word设置上标快捷键的方法就是以上内容了,需要的小伙伴都可以试一试呢!

Linux 安装、配置Tomcat 的HTTPS

Linux 安装 、配置Tomcat的HTTPS 安装Tomcat 这里选择的是 tomcat 10.X ,需要Java 11及更高版本 Binary Distributions ->Core->选择 tar.gz包 下载、上传到内网服务器 /opt 目录tar -xzf 解压将解压的根目录改名为 tomat-10 并移动到 /opt 下, 形成个人习惯的路径 /opt/tomcat-10

大学湖北中医药大学法医学试题及答案,分享几个实用搜题和学习工具 #微信#学习方法#职场发展

今天分享拥有拍照搜题、文字搜题、语音搜题、多重搜题等搜题模式,可以快速查找问题解析,加深对题目答案的理解。 1.快练题 这是一个网站 找题的网站海量题库,在线搜题,快速刷题~为您提供百万优质题库,直接搜索题库名称,支持多种刷题模式:顺序练习、语音听题、本地搜题、顺序阅读、模拟考试、组卷考试、赶快下载吧! 2.彩虹搜题 这是个老公众号了 支持手写输入,截图搜题,详细步骤,解题必备

uniapp接入微信小程序原生代码配置方案(优化版)

uniapp项目需要把微信小程序原生语法的功能代码嵌套过来,无需把原生代码转换为uniapp,可以配置拷贝的方式集成过来 1、拷贝代码包到src目录 2、vue.config.js中配置原生代码包直接拷贝到编译目录中 3、pages.json中配置分包目录,原生入口组件的路径 4、manifest.json中配置分包,使用原生组件 5、需要把原生代码包里的页面修改成组件的方

Java面试八股之怎么通过Java程序判断JVM是32位还是64位

怎么通过Java程序判断JVM是32位还是64位 可以通过Java程序内部检查系统属性来判断当前运行的JVM是32位还是64位。以下是一个简单的方法: public class JvmBitCheck {public static void main(String[] args) {String arch = System.getProperty("os.arch");String dataM

电脑不小心删除的文件怎么恢复?4个必备恢复方法!

“刚刚在对电脑里的某些垃圾文件进行清理时,我一不小心误删了比较重要的数据。这些误删的数据还有机会恢复吗?希望大家帮帮我,非常感谢!” 在这个数字化飞速发展的时代,电脑早已成为我们日常生活和工作中不可或缺的一部分。然而,就像生活中的小插曲一样,有时我们可能会在不经意间犯下一些小错误,比如不小心删除了重要的文件。 当那份文件消失在眼前,仿佛被时间吞噬,我们不禁会心生焦虑。但别担心,就像每个问题

VMware9.0详细安装

双击VMware-workstation-full-9.0.0-812388.exe文件: 直接点Next; 这里,我选择了Typical(标准安装)。 因为服务器上只要C盘,所以我选择安装在C盘下的vmware文件夹下面,然后点击Next; 这里我把√取消了,每次启动不检查更新。然后Next; 点击Next; 创建快捷方式等,点击Next; 继续Cont

vcpkg安装opencv中的特殊问题记录(无法找到opencv_corexd.dll)

我是按照网上的vcpkg安装opencv方法进行的(比如这篇:从0开始在visual studio上安装opencv(超详细,针对小白)),但是中间出现了一些别人没有遇到的问题,虽然原因没有找到,但是本人给出一些暂时的解决办法: 问题1: 我在安装库命令行使用的是 .\vcpkg.exe install opencv 我的电脑是x64,vcpkg在这条命令后默认下载的也是opencv2:x6