CentOSへ「net-snmp」をインストールする方法です。
net-smnpインストール
まず「yum」を使って「net-snmp」をインストールしていきます。
また、「snmpwalk」等のコマンドを使用するために、「net-snmp-utils」も合わせてインストールします。
# yum -y install net-snmp # yum -y install net-snmp-utils
net-snmp設定(snmp v1 v2の設定)
「/etc/snmp/snmpd.conf」が「net-snmp」の設定ファイルとなりますので、こちらを編集していきます。
今回は、「snmp v1 v2」を対象としています。
snmp v3については、ここで説明をすると長くなるので別途説明させて頂きます。
設定項目
基本的な設定項目は下記の通りとなります。
設定変更
設定ファイルである「/etc/snmp/snmpd.conf」のバックアップを行ってから、編集作業を行っていきます。
# cp -p /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf_yyyymmdd # vi /etc/snmp/snmpd.conf
com2sec設定
「ソースアドレス(接続可能なネットワーク)」と「コミュニティ名(パスワードみたいなもの)」の組み合わせで、それに紐づく「セキュリティ名」を設定します。
com2sec書式
com2sec セキュリティ名 ソースアドレス コミュニティ名
デフォルト設定を例にすると、セキュリティ名「notConfigUser」は全てのアドレスから、「public」というコミュニティ名で接続を許可するという設定になります。
デフォルト設定
com2sec notConfigUser default public
※ソースアドレスの「default」というのは、全てのアドレスに該当となります
com2sec設定変更
デフォルト設定ではどこからでもsnmpでサーバの情報にアクセスできてしまい、セキュリティ的によろしくありません。なので、ソースアドレスの指定と新しいコミュニティ名を紐付けたセキュリティ名の変更を作成していきます。
デフォルトの設定を「#」でコメントとして、今回は「localhost(127.0.0.1)」からと、「192.168.1.0/24」のネットワークからのみ接続が可能で、コミュニティ名も「server-memo」に変更したセキュリティ名を作成しました。
設定変更後
# com2sec notConfigUser default public com2sec local localhost server-memo com2sec mynet 192.168.1.0/24 server-memo
※「セキュリティ名」「ソースアドレス」「コミュニティ名」は、環境に合わせて設定してください。
group設定
snmpの「セキュリティモデル(v1,v2,v3(usm)等)」と、com2secで設定した「セキュリティ名」を組み合わせて、それに紐づく「グループ名」を設定します。
※セキュリティモデルとは、SNMPプロトコルのバージョンのことです。
group書式
group グループ名 セキュリティモデル セキュリティ名
デフォルトの設定を例に取ると、「notConfigGroup」というグループ名は、「snmp v1,v2」にcom2secで設定してある「notConfigUser」からアクセス出来るという設定になります。
デフォルト設定
group notConfigGroup v1 notConfigUser group notConfigGroup v2c notConfigUser
設定変更
「com2sec」で新たに作成したセキュリティ名を使用した「group」を作成していきます。
デフォルト設定は「#」でコメントとして、「local_group 」「mynet_group」というグループを設定作成し、それぞれ「snmp v1,v2」と「com2sec」で設定した「local」「mynet」を紐付けています。
設定変更後
#group notConfigGroup v1 notConfigUser #group notConfigGroup v2c notConfigUser group local_group v1 local group local_group v2c local group mynet_group v1 mynet group mynet_group v2c mynet
view設定
どこまでのMIBツリーを参照許可させるかの設定をします。
view書式
view view名 incl/excl MIBツリー範囲 マスク(optional)
「incl/excl」は指定したMIBツリーを許可する(incl)か、許可しない(excl)かの設定となります。
マスクに関しては、ちょっと説明が大変になるのでここでは割愛しますが、通常は特に設定を行わなくても良いでしょう。
view設定変更
今回はデフォルトで設定されている「systemview」のほかに、全てのMIBツリーへのアクセスを許可した「all_view」という「view」を追加しています。
設定変更後
view systemview included .1.3.6.1.2.1.1 view systemview included .1.3.6.1.2.1.25.1.1 view all_view included .1
access設定
com2sec group view を組み合わせて、snmpへのアクセス制限を設定します。
access書式
access グループ名 context sec.model sec.level prefix read write notif
「context」 「sec.model」 「sec.level」 「prefix」はsnmp v3を使用する際に使いますので、snmp v1,v2を使用する際はそれぞれ、「""」「any」「noauth」「exact」を設定します。
設定変更
デフォルト設定は「#」でコメントとして、「grop」と「view」で作成したルールを使用して、設定を行っていきます。
設定変更後
#access notConfigGroup "" any noauth exact systemview none none access local_group "" any noauth exact all_view none none access mynet_group "" any noauth exact all_view none none
設定内容は「group」で設定した「local_group」と「mynet_group」は、「read」部分に「view」の項目でで作成した「all_view」を設定し、すべてのmibツリーのn読み込みのみ許可をするという設定になります。
設定反映
「net-snmp」を起動することで、設定を反映させます。
すでに「net-snmp」が起動している場合は、再起動を行うことで設定を反映させることができます。
net-snmp起動
CentOS7の場合
# systemctl start snmpd
CentOS6までの場合
# service start snmpd
net-snmp再起動
CentOS7の場合
# systemctl restart snmpd
CentOS6までの場合
# service restart snmpd
動作確認
設定が完了しましたら「snmpwalk」を使用して、「net-snmp」が動作している確認します。
snmpwalk書式
snmpwalk -v snmpバージョン -c コミュニティ名 対象サーバ
snmpwalk実行結果
localhost宛に、snmpのプロトコルは「v2」、コミュニティ名を「com2sec」で設定した「server-memo」を指定して、「snmpwalk」を実行しました。
# snmpwalk -v 2c -c server-memo localhost | head SNMPv2-MIB::sysDescr.0 = STRING: Linux test.server-memo.net 3.10.0-229.4.2.el7.x86_64 #1 SMP Wed May 13 10:06:09 UTC 2015 x86_64 SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (592) 0:00:05.92 SNMPv2-MIB::sysContact.0 = STRING: Root(configure /etc/snmp/snmp.local.conf) SNMPv2-MIB::sysName.0 = STRING: test.server-memo.net SNMPv2-MIB::sysLocation.0 = STRING: Unknown (edit /etc/snmp/snmpd.conf) SNMPv2-MIB::sysORLastChange.0 = Timeticks: (6) 0:00:00.06 SNMPv2-MIB::sysORID.1 = OID: SNMP-MPD-MIB::snmpMPDCompliance SNMPv2-MIB::sysORID.2 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance SNMPv2-MIB::sysORID.3 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
「net-snmp」が正常に動作していれば、上記のようにMIBの情報を取得することができます。
自動起動設定
自動起動の設定を忘れずにしておきしょう。
CentOS7の場合
# systemctl enable snmpd ln -s '/usr/lib/systemd/system/snmpd.service' '/etc/systemd/system/multi-user.target.wants/snmpd.service'
CentOS6の場合
# chkconfig on snmpd
その他注意点
ファイアウォールを設定している場合は、snmpが通信できるように設定変更を忘れずに行いましょう。
コメント