Squeezeでsnmpトラップの送受信テスト

■今日はIPリッスンの制限と、コマンドによるトラップ送信するところまで。

■snmpdのリッスンIPを制限する
 localhost、自IP、vmnet8のIP

$ sudo grep ^agentAddress /etc/snmp/snmpd.conf
agentAddress  udp:127.0.0.1:161,udp:192.168.177.177:161,udp:192.168.164.1:161

$ sudo /etc/init.d/snmpd restart
$ netstat -an | grep 161
udp        0      0 192.168.164.1:161       0.0.0.0:*
udp        0      0 192.168.177.177:161        0.0.0.0:*
udp        0      0 127.0.0.1:161           0.0.0.0:*

■rocommunityを有効にする

$ sudo grep rocommunity /etc/snmp/snmpd.conf
rocommunity public  localhost
rocommunity public 192.168.177.177
rocommunity public 192.168.164.1
 rocommunity public  default    -V systemonly
#rocommunity secret  10.0.0.0/16

■SNMPv3について
 MD5/SHAでハッシュ化出来る。
 私の環境では特に必要ないので、すべてコメントアウト。

$ sudo grep "authOnlyUser" /etc/snmp/snmpd.conf
#rouser   authOnlyUser

■syslogには以下の行で警告が出るのでコメントアウト

$ sudo grep snmpd /var/log/syslog | awk -F\] '{print $2}'
: trigger OID: snmperrErrorFlag
: /etc/snmp/snmpd.conf: line 143: Error: unknown monitor OID

$ sudo grep defaultMonitor /etc/snmp/snmpd.conf
#defaultMonitors          yes

■これはSNMPv2のエラー。同様にコメントアウト

: /etc/snmp/snmpd.local.conf: line 87: Error: bad SUBTREE object id
: net-snmp: 1 error(s) in config file(s)

$ grep "^#view" /etc/snmp/snmpd.local.conf
#view system included  .iso.org.dod.internet.mgmt.mib-2.system

■正常リスタートログ

: Received TERM or STOP signal...  shutting down...
: Turning on AgentX master support.
: NET-SNMP version 5.4.3

■A:MIB検索がうまく機能しない
 ※mibs行をコメントアウト

$ cat /etc/snmp/snmp.conf
#
# As the snmp packages come without MIB files due to license reasons, loading
# of MIBs is disabled by default. If you added the MIBs you can reenable
# loaging them by commenting out the following line.
#mibs :

■B:MIBの検索端の関連の警告
 ※「/root/.snmp」は無くても問題なし。

$ sudo tail -f /var/log/syslog | awk -F\] '{print $2}' | sed s/"\:"/"&\n"/g
:
 Warning:
 no access control information configured.#012  (Config search path:
 /etc/snmp:
/usr/share/snmp:
/usr/lib/snmp:
/root/.snmp)#012This receiver will *NOT* accept any incoming notifications.

■snmptranslateが見れない場合の対処
 ※non-freeなので、「sources.list」を確認すること。
 ※A/B共にこれで解決するはず。

$ apt-cache show snmp-mibs-downloader | grep Filename
Filename: pool/non-free/s/snmp-mibs-downloader/snmp-mibs-downloader_1.1_all.deb

$ sudo apt-get install -y snmp-mibs-downloader
$ snmptranslate -Tp | head -5
+--iso(1)
   |
   +--org(3)
      |
      +--dod(6)

■この時点ではsnmptrapdは起動していない。

$ sudo /etc/init.d/snmpd status
snmpd is running.
snmptrapd is not running ... failed!

■snmptrapdの設定

$ sudo grep ^TRAPDRUN /etc/default/snmpd
TRAPDRUN=yes

$ sudo /etc/init.d/snmpd restart
Restarting network management services: snmpd snmptrapd.

■別サーバからのアクセスチェック

$ snmpwalk -v 1 -c public 192.168.177.177 | awk -F\: '{print $1}' | sort | uniq
"
DISMAN-EVENT-MIB
HOST-RESOURCES-MIB
IF-MIB
IP-FORWARD-MIB
IP-MIB
IPV6-MIB
NOTIFICATION-LOG-MIB
RFC1213-MIB
SNMPv2-MIB
TCP-MIB
UDP-MIB

■トラップ送信テスト

 参考:第8回 SNMPによる異常値検出テクニック (4/7)
 http://www.itmedia.co.jp/enterprise/articles/0705/31/news042_4.html

$ snmptrap -v 1 -c trapprivate localhost .1.3.6.1.4.1.8072.99999 localhost \
  6 1 '' .1.3.6.1.4.1.8072.99999.1 s "Test Message"
read_config_store open failure on /var/lib/snmp/snmpapp.conf
read_config_store open failure on /var/lib/snmp/snmpapp.conf
read_config_store open failure on /var/lib/snmp/snmpapp.conf

$ sudo tail -f /var/log/syslog | awk -F\] '{print $2}'
: No access configuration - dropping trap.

■「snmptrapd.conf」でsyslogに転送する為、一行追加

$ sudo grep -v "^#\|^\$" /etc/snmp/snmptrapd.conf
authCommunity log,execute,net trapprivate

$ sudo /etc/init.d/snmpd restart

■再確認「syslog」には載ったが、「open failure」は消えない。

$ snmptrap -v 1 -c trapprivate localhost .1.3.6.1.4.1.8072.99999 localhost \
  6 1 '' .1.3.6.1.4.1.8072.99999.1 s "Test Message"
read_config_store open failure on /var/lib/snmp/snmpapp.conf
read_config_store open failure on /var/lib/snmp/snmpapp.conf
read_config_store open failure on /var/lib/snmp/snmpapp.conf

$ sudo tail -f /var/log/syslog | sed s/" "/"\n"/g
:
2012-05-26
23:02:10
localhost
[127.0.0.1]
(via
UDP:
[127.0.0.1]:32826->[127.0.0.1])
TRAP,
SNMP
v1,
community
trapprivate#012#011iso.3.6.1.4.8072.99999
Enterprise
Specific
Trap
(1)
Uptime:
5:34:30.55#012#011iso.3.6.1.4.1.8072.99999.1
=
STRING:
"Test
Message"

■snmpユーザで空のファイルを作成してもダメ。

$ sudo -u snmp touch /var/lib/snmp/snmpapp.conf
$ snmptrap -v 1 -c trapprivate 192.168.1.88 .1.3.6.1.4.8072.99999 192.168.1.88 6 1 \
  '' .1.3.6.1.4.1.8072.99999.1 s "Test Message"
Cannot rename /var/lib/snmp/snmpapp.conf to /var/lib/snmp/snmpapp.0.conf
Cannot unlink /var/lib/snmp/snmpapp.conf

■sudoで実行したらエラーが出なくなった。

$ sudo snmptrap -v 1 -c trapprivate 192.168.1.88 .1.3.6.1.4.8072.99999 192.168.1.88 6 1 \
  '' .1.3.6.1.4.1.8072.99999.1 s "Test Message"

■iptablesの設定変更
 ※私のsfwを入れた方はnatのフラッシュもお忘れなく。。。

 https://github.com/labunix/smallfirewall

$ grep 161 /etc/iptables-save
[0:0] -A INPUT -i eth0 -p udp -m udp --dport 161:162 -j ACCEPT
[0:0] -A INPUT -i eth0 -p udp -m udp --sport 161:162 -j ACCEPT
[0:0] -A OUTPUT -o eth0 -p udp -m udp --dport 161:162 -j ACCEPT
[0:0] -A OUTPUT -o eth0 -p udp -m udp --sport 161:162 -j ACCEPT

$ sudo /etc/init.d/iptables stop
$ sudo iptables -t nat -F
$ sudo /sbin/iptables-restore -c /etc/iptables-save