配置 SNMP 连接的加密

2024年4月26日

ID 222536

第三方应用程序可以访问通过 SNMP 发送的数据或将该数据替换为自己的数据。为确保通过 SNMP 安全传输数据,建议配置 SNMP 连接加密。

要配置 SNMP 连接加密:

  1. 添加以下行到 /etc/snmp/snmpd.conf 文件:

    view systemview included .1

  2. 获取一个 EngineID,这是处理 SNMP 陷阱所必需的。为此,请在集群中的每台服务器上运行以下命令:

    snmpget -v2c -c<community name> 127.0.0.1 SNMP-FRAMEWORK-MIB::snmpEngineID.0 2>/dev/null | sed -ne 's/ //g; s/.*:/0x/p'

    指定您的组织中使用的社区名称。如有必要,创建一个新社区。出于数据传输安全的目的,不建议使用默认的“public”社区。

    在运行命令之前,请确保 snmpd 服务正在运行。

  3. 在集群中的每个服务器上配置 snmpd 服务。若要执行此操作:
    1. 停止 snmpd 服务。为此,请运行以下命令:

      systemctl stop snmpd

    2. 创建一个新用户。为此,请运行以下命令:

      net-snmp-create-v3-user -ro -a SHA -A <password> -x <password> -X AES <username>

    3. 将以下字符串添加到 /etc/snmp/snmpd.conf 配置文件:

      # accept KSMG statistics over unix socket

      master agentx

      agentXSocket unix:/var/run/agentx-master.socket

      agentXPerms 770 770 kluser klusers

      # accept incoming SNMP requests over UDP

      agentAddress udp:127.0.0.1:161

      rouser <username> priv .1.3.6.1

      # comment the following line if you don't need to forward SNMP traps over an SNMPv3 connection

      trapsess -e <EngineID> -v3 -l authPriv -u <username> -a SHA -A <password> -x AES -X <password> udp:<IP address>:162

      对于 <IP address>,指示将被 snmptrapd 服务用于接受网络连接的 IP 地址。如果要在服务器本地保存 SNMP 陷阱,请输入 127.0.0.1

    4. 将以下字符串添加到配置文件/etc/snmp/snmpn. conf:

      mibdirs +/opt/kaspersky/ksmg/share/snmp-mibs/

      mibs all

      如果指定目录中不存在 snmp.conf 配置文件,请创建该文件。

    5. 启动 snmpd 服务。为此,请运行以下命令:

      systemctl start snmpd

    6. 检查 SNMP 连接。为此,请执行以下命令:

      snmpwalk -mALL -v3 -l authPriv -u <username> -a SHA -A <password> -x AES -X <password> udp:127.0.0.1:161 .1.3.6.1.4.1.23668

      snmpget -v3 -l authPriv -u <username> -a SHA -A <password> -x AES -X <password> udp:127.0.0.1:161 KSMG-PRODUCTINFO-STATISTICS::applicationName.0

  4. 在想要接收 SNMP 陷阱的服务器上配置 snmptrapd 服务。若要执行此操作:
    1. 使用以下命令停止 snmptrapd 服务:

      systemctl stop snmptrapd

    2. 将以下行添加到 /var/lib/net-snmp/snmptrapd.conf 文件:

      createUser -e <EngineID> <username> SHA "<password>" AES "<password>"

      如果指定目录中不存在 snmptrapd.conf 配置文件,请创建该文件。

      snmpd 和 snmptrapd 服务的用户账户凭据(<username><password>)必须相同。

    3. 将以下字符串添加到 /etc/snmp/snmptrapd.conf 配置文件:

      snmpTrapdAddr udp:<IP address>:162

      authUser log <username> priv

      disableAuthorization no

      如果指定目录中不存在 snmptrapd.conf 配置文件,请创建该文件。

    4. 启动 snmptrapd 服务。为此,请运行以下命令:

      systemctl start snmptrapd

      确保 /var/lib/net-snmp/snmptrapd.conf 文件中以纯文本形式指示的密码已替换为混淆的字符序列。为此,您可能需要多次使用 systemctl restart snmptrapd 命令重新启动 snmptrapd 服务。

    5. 添加 snmptrapd 服务以自动启动。为此,请运行以下命令:

      systemctl enable snmptrapd

    6. 运行以下命令检查 SNMP 连接:

      snmptrap -e <EngineID> -v3 -l authPriv -u <username> -a SHA -A <password> -x AES -X <password> udp:<IP address>:162 0 KSMG-EVENTS-MIB::restartedBinary

      确保以下字符串出现在 /var/log/messages 文件中:

      <date and time> <hostname> snmptrapd[7503]: <date and time> localhost [UDP: [127.0.0.1]:26325->[<IP address>]:162]:#012DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (0) 0:00:00.00#011SNMPv2-MIB::snmpTrapOID.0 = OID: KSMG-EVENTS-MIB::restartedBinary

    对于 <IP address>,指示将被 snmptrapd 服务用于接受网络连接的 IP 地址。如果要在服务器本地保存 SNMP 陷阱,请输入 127.0.0.1

SNMP 连接加密现已配置。

Did you find this article helpful?
What can we do better?
Thank you for your feedback! You're helping us improve.
Thank you for your feedback! You're helping us improve.