server-memo.net

net-snmpインストール

      2016/01/22

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については、ここで説明をすると長くなるので別途説明させて頂きます。

設定項目

基本的な設定項目は下記の通りとなります。

  • com2sec (ネットワーク範囲とコミュニティ名)
  • group (セキュリティについて設定)
  • view (snmpにて参照可能な情報範囲の指定)
  • access (アクセスコントロールの設定)
  • 設定変更

    設定ファイルである「/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が通信できるように設定変更を忘れずに行いましょう。

     - snmp