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

打印 上一主题 下一主题

主题 676|帖子 676|积分 2028

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

作为系统管理员的重要工作之一是网络关于服务器和基础设施的准确信息。有许多工具和选项可用于网络和处理这种类型的信息。其中许多工具都是创建在一种叫做 SNMP 的技能之上。
SNMP 代表简朴网络管理协议。它是服务器可以共享关于其当前状态的信息的一种方式,也是管理员可以修改预定义值的通道。固然协议本身非常简朴,但实现 SNMP 的程序结构大概非常复杂。
在我们的上一篇指南中,我们了解了 SNMP 协议的基础知识。在本指南中,我们将开始演示如何设置使用 SNMP 举行通信的工具。我们将使用两台 Ubuntu 14.04 服务器举行演示,但大多数其他系统应该可以通过一些修改来跟随利用。
安装 SNMP 守护程序和实用工具

我们可以通过在一些 Ubuntu 系统上安装守护程序和工具来开始探索如何在系统上实现 SNMP。
我们将使用两台服务器,一台将包含管理器部门,而另一台服务器将拥有代理。我们也可以选择在管理器机器上安装代理,但保持它们分开可以更容易地演示每个组件提供的功能。
在第一台服务器上,更新 apt 数据库并安装管理器组件。除此之外,我们还将下载另一个名为 snmp-mibs-downloader 的软件包,其中包含一些关于尺度 MIB 的专有信息,这些信息允许我们通过名称访问大部门 MIB 树:
  1. sudo apt-get update
  2. sudo apt-get install snmp snmp-mibs-downloader
复制代码
在我们的第二台服务器上,也就是我们将要与之交互并运行守护程序的服务器,我们可以通过输入以下命令来安装必要的组件:
  1. sudo apt-get update
  2. sudo apt-get install snmpd
复制代码
安装了这些组件之后,我们必要设置我们的设置。
设置 SNMP 管理器

正如我们上面提到的,大部门工作都发生在代理组件中,因此我们在这台机器上的设置现实上非常简朴。我们只必要修改一个文件,以确保我们的客户端可以使用我们安装的额外 MIB 数据。
使用带有 sudo 权限的文本编辑器打开 /etc/snmp/snmp.conf 文件:
  1. sudo nano /etc/snmp/snmp.conf
复制代码
在这个文件中,有一些注释和一行未被注释的内容。为了允许管理器导入 MIB 文件,我们只必要注释掉 mibs : 行:
  1. #mibs :
复制代码
完成后保存并关闭文件。
我们现在已经完成了管理器部门的设置,但我们仍然必要使用这台服务器来帮助我们设置我们的代理盘算机。
设置 SNMP 代理机器

作为真正的客户端-服务器系统,代理盘算机没有设置其自己的 SNMP 设置所需的外部工具。我们可以修改一些设置文件来举行一些更改,但我们必要通过从管理服务器毗连到我们的代理服务器来完成大部门必要举行的更改。
起首,在我们的代理盘算机上,我们必要使用带有 sudo 权限的方式打开守护程序的设置文件:
  1. sudo nano /etc/snmp/snmpd.conf
复制代码
在文件内部,我们必要举行一些更改。这些更改主要用于引导我们的设置,以便我们可以从我们的其他服务器管理它。
起首,我们必要更改 agentAddress 指令。当前,它设置为仅允许来自本土地算机的毗连。我们必要注释掉当前行,并取消注释下面的行,该行允许全部毗连(我们将很快限制这个):
  1. #  仅监听来自本地系统的连接
  2. #agentAddress  udp:127.0.0.1:161
  3. #  在所有接口上监听连接(IPv4 和 IPv6)
  4. agentAddress udp:161,udp6:[::1]:161
复制代码
接下来,我们必要临时插入一个 createUser 行。这些指令通常不会保存在这个文件中,但我们很快会再次删除它,以是这并不太重要。
我们要创建的用户将被称为 bootstrap,并将用作创建我们的第一个“真实”用户的模板。SNMP 软件通过克隆用户的属性来完成这一过程。
在定义新用户时,您必须指定认证类型(MD5 或 SHA),并提供一个必须至少为 8 个字符的暗码。如果您计划对传输使用加密,就像我们一样,您还必须指定隐私协议(DES 或 AES),并可选地提供隐私协议暗码。如果未提供隐私协议暗码,则认证暗码也将用于隐私协议。
我们的用户创建行将如下所示:
  1. createUser bootstrap MD5 temp_password DES
复制代码
现在我们已经指定了一个新用户,我们必要设置此用户将拥有的访问级别。我们将为我们的 bootstrap 用户设置这一点,并为我们将要创建的新用户 demo 设置这一点。我们将使用 rwuser 指令允许它们读写访问(另一种选择是使用 rouser 举行只读访问)。
我们将通过在用户后面指定 priv 来逼迫使用加密。如果我们想将用户限制在 MIB 的特定部门,我们可以在行的末尾指定用户应该访问的最高级 OID。
对于我们的目标,我们的两行将非常简朴:
  1. rwuser bootstrap priv
  2. rwuser demo priv
复制代码
完成这些更改后,保存并关闭文件。
要实行这些更改,请重新启动 snmpd 服务:
  1. 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:此参数用于指定所使用的身份验证协议。大概的值是 MD5 或 SHA。这必须与创建用户时指定的信息相匹配。
  • -x PROTOCOL:此参数用于指定所使用的加密协议。大概的值是 DES 或 AES。这必须与创建用户时指定的信息相匹配。每当用户的特权规范在其后具有 priv 时,即要求加密时,就是必需的。
  • -A PASSPHRASE:用于提供创建用户时指定的身份验证暗码短语。
  • -X PASSPHRASE:用于提供创建用户时指定的加密暗码短语。如果未指定暗码短语但给出了加密算法,则将使用身份验证暗码短语。每当给出 -x 参数或每当用户的特权规范在其后具有 priv 时,即要求加密时,就是必需的。
有了这些信息,我们就可以开始构建我们的命令。根据我们设置的引导用户,我们将使用该帐户的命令如下:
  1. snmp_command -u bootstrap -l authPriv -a MD5 -x DES -A temp_password -X temp_password remote_host snmp_sub_command_or_options
复制代码
例如,从您的管理服务器,您可以通过键入以下内容来测试确保您的引导帐户可用:
  1. 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
复制代码
  1. 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 工具和以下一般语法从模板创建用户:
  1. snmpusm authentication_info remote_host create new_user existing_user
复制代码
因此,根据我们必要传递的身份验证标志以及使用我们已经拥有的用户帐户(bootstrap),我们可以创建一个符合我们已经定义的用户权限(demo)的用户。
命令将如下所示:
  1. snmpusm -u bootstrap -l authPriv -a MD5 -x DES -A temp_password -X temp_password remote_host create demo bootstrap
复制代码
您应该收到以下消息:
  1. 用户已成功创建。
复制代码
现在我们在长途服务器上有一个名为 demo 的完全功能用户。但是,它仍在使用与 bootstrap 帐户相同的身份验证信息。我们应该将暗码更改为其他内容。这次,我们将使用 demo 帐户举行身份验证。请记取,暗码必须至少为 8 个字符长:
  1. snmpusm -u demo -l authPriv -a MD5 -x DES -A temp_password -X temp_password remote_host passwd temp_password my_new_password
复制代码
您应该收到以下消息:
  1. SNMPv3 密钥已成功更改。
复制代码
我们可以通过询问长途服务器 SNMP 服务已运行多长时间来测试我们的新凭据和暗码。我们将使用 snmpget 命令从其他盘算机获取单个值。
这次,我们将使用我们下载的额外 MIB 定义。我们可以使用这些定义来按名称请求值,而不是使用 OID 数字 ID。
  1. snmpget -u demo -l authPriv -a MD5 -x DES -A my_new_password -X my_new_password remote_host sysUpTime.0
复制代码
您应该得到一个代表长途 SNMP 守护程序上次重新启动时间的值:
  1. DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (383018) 1:03:50.18
复制代码
创建客户端设置文件

到现在为止,您大概已经留意到全部 SNMP 命令的身份验证详细信息在每次请求时都是相对静态的。与其每次都手动输入这些信息,我们可以创建一个客户端设置文件,其中包含我们毗连所需的凭据。
客户端设置文件可以根据您希望共享的范围放置在两个不同的位置。
如果您希望与管理机器上的任何有用用户共享登录凭据,您可以将设置详细信息放入全局 snmp.conf 文件中。您必要以超级用户权限打开该文件:
  1. sudo nano /etc/snmp/snmp.conf
复制代码
然而,如果您只想为您自己定义用户的身份验证凭据,您可以在用户的主目次中创建一个隐藏的 .snmp 目次,并在其中创建文件:
  1. mkdir ~/.snmp
  2. cd ~/.snmp
  3. 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 文件。对于我们的指南,它将如下所示:
  1. defSecurityName demo
  2. defSecurityLevel authPriv
  3. defAuthType MD5
  4. defPrivType DES
  5. defAuthPassphrase my_new_password
  6. defPrivPassphrase my_new_password
复制代码
完成后,保存并关闭文件。
现在,您可以在不提供身份验证详细信息的情况下发出命令。您只必要 SNMP 命令、主机和命令参数。
与其输入:
  1. snmpget -u demo -l authPriv -a MD5 -x DES -A my_new_password -X my_new_password remote_host sysUpTime.0
复制代码
我们只需输入:
  1. snmpget remote_host sysUpTime.0
复制代码
如您所见,这明显淘汰了我们必要在每个请求中提供的信息量。
移除引导账户

现在您的常规账户已正确设置,我们可以移除 bootstrap 账户,由于它相当不安全。
在代理服务器上,再次以超级用户权限打开 /etc/snmp/snmpd.conf 文件。
找到并注释掉(或删除)我们先前添加的引用 bootstrap 用户的两行:
  1. #createUser bootstrap MD5 temp_password DES
  2. #rwuser bootstrap priv
复制代码
保存并关闭文件。
现在,重新启动 SNMP 守护程序:
  1. sudo service snmpd restart
复制代码
这将满意不在正常的 snmpd.conf 文件中具有 createUser 指令的发起。它还将从该临时用户中删除权限。
如果您想要完全从 usmUserTable 中删除 bootstrap 用户,您可以通过从管理服务器发出以下命令来执行:
  1. snmpusm remote_host delete bootstrap
复制代码
您将收到以下相应:
  1. User successfully deleted.
复制代码
结论

到现在为止,您应该已经拥有一个完全设置的客户端-服务器设置,可以使用 SNMP 协议举行安全通信。您可以轻松地在其他主机上添加额外的守护程序,并在整个基础架构中设置账户访问。
在下一个指南中,我们将先容我们一直在使用的 net-snmp 工具的一些基本用法。我们将演示如何逐个或批量检索值以及如何修改数据。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

用多少眼泪才能让你相信

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表