最近在做安全加固,snmp v1的验证方式被认为不安全,要求升级至v2c或者v3,所以趁机总结下。


一、先看下snmpwalk这个检测程序的几个参数:


-v 1|2c|3             指定要使用的SNMP版本

-c COMMUNITY          设置团体号

-u USER-NAME          设置snmp v3的用户名

-A PASSPHRASE         设置用户密码

-l LEVEL              设置安全级别:noAuthNoPriv|authNoPriv|authPriv

-a PROTOCOL           设置加密用户密码的散列算法:MD5(默认)或者SHA

-x PROTOCOL           设置给用户密码哈希值加密的算法:DES(默认)或者AES

-X PASSPHRASE         设置加密密码


说明:


1) 安全级别的解释:

noAuthNoPriv既没有密码也没有加密密码 v1/v2c/v3都支持

authNoPriv有密码没有混淆码 v3支持

authPriv既有密码也有混淆码 v3支持


2) snmp v1/v2c只支持团体号字符串(community string)方式验证,snmpv3使用用户/密码的方式验证,加密密码是可选的。


3) 示例:

/usr/bin/snmpwalk -v 3 -u username -l authPriv -a MD5 -A password -x DES -X passphrase 127.0.0.1


二、在RHEL6中添加snmp用户

1) 我们先用net-snmp-create-v3-user这个程序来创建一个只读的snmp v3用户

# service snmpd stop
# net-snmp-create-v3-user --help
Usage:
  net-snmp-create-v3-user [-ro] [-A authpass] [-X privpass]
                          [-a MD5|SHA] [-x DES|AES] [username]
# net-snmp-create-v3-user -ro -A password -x passphrase -a MD5 -x DES username
adding the following line to /var/lib/net-snmp/snmpd.conf:
   createUser username MD5 "password" DES passphrase
adding the following line to /etc/snmp/snmpd.conf:
   rouser username
# service snmpd start

2) 根据上面的内容我们可以看到添加的用户信息被两部分,分别存入/var/lib/net-snmp/snmpd.conf和/etc/snmp/snmpd.conf文件。所以在其它机器上我们只要同步这2个文件并重启snmpd守护进程就可以了。