如何正确配置snmpd?

如何正确配置snmpd?

snmp在 CentOS 上安装7.2,如下所示:

yum -y install net-snmp net-snmp-utils

snmpd.conf我对我的文件进行了备份:

cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.orig

然后我清除了文本,如下:

echo "" > /etc/snmp/snmpd.conf

并添加snmpd.conf以下内容:

rocommunity "#random$" monitoring_server_ip

monitoring_server_ip允许连接到该 snmpd 服务器的服务器。

重新启动 snmpd

/bin/systemctl restart snmpd

当我在 CentOS7.2服务器上运行 snmpwalk 时

snmpwalk -v2c -c public localhost system

然后我得到:

超时:本地主机没有响应

这是准确的,因为只有一个 IP 地址可以做到这一点,正如我们之前所定义的。

ps显示snmp正在运行

/usr/sbin/snmpd -LS0-6d -f

这是我第一次玩snmp,非常感谢任何帮助!

的输出iptables -L -n | grep udp显示:

...
Chain IN_public_allow (1 references)
   94  target     prot opt source               destination
   95  ACCEPT     udp  --  XX.XXX.XXX.XXX        0.0.0.0/0            udp dpt:161 ctstate NEW
...

所有的目的地都太0.0.0.0/0

Netstat 显示以下端口:

 netstat -ulnp | grep 161
udp        0      0 0.0.0.0:161             0.0.0.0:*                           19062/snmpd

还有这个:

netstat -lu | grep snmp
udp        0      0 0.0.0.0:snmp            0.0.0.0:*

另外,在我的防火墙中,添加只有一个 IP 地址可以访问我的 snmp 服务器:

firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="XX.XXX.XXX.XX" port protocol="udp" port="161" accept"

答案1

com2sec 安全模型不再是强制性的。

其中snmpd.conf应该足够做:

rocommunity "#randomsometinh$"  2.2.2.2

其中2.2.2.2是允许连接的监控IP地址。我通常更喜欢分配单个 IP,而不是授予对整个 /24 的访问权限。因此,此配置意味着 SNMP 服务将应答来自 2.2.2.2 地址的请求。

出于安全原因,您可能还必须注释将 snmpd 守护程序限制为本地主机的行。

# agentAddress  udp:127.0.0.1:161

更改配置文件后,执行以下操作:

service restart snmpd

确认是否在本地监听:

$ netstat -lu | grep snmp
udp        0      0 *:snmp                  *:* 

并从允许的网络/IP 中遍历整个 MIB 树。假设2.2.2.1是被监控的机器:

snmpwalk -c "#randomsometinh$" -v2c 2.2.2.1

或要求系统运行时间 OID:

snmpwalk -c "#randomsometinh$" -v2c 2.2.2.1 1.3.6.1.2.1.1.3
snmpget -c #randomsometinh$ -v2c 2.2.2.1 1.3.6.1.2.1.1.3.0

snmpget 必须为特定对象实例/索引指定 0。

PS:2.2.2.2是监控服务器,2.2.2.1是要监控的snmpd服务器/主机。

相关内容