開発者ドキュメント

Ubuntu14.04にSNMPデーモンとクライアントをインストールして構成する方法

序章

システム管理者であることの大部分は、サーバーとインフラストラクチャに関する正確な情報を収集することです。 このタイプの情報を収集および処理するためのツールとオプションは多数あります。 それらの多くは、SNMPと呼ばれるテクノロジーに基づいて構築されています。

SNMPは、簡易ネットワーク管理プロトコルの略です。 これは、サーバーが現在の状態に関する情報を共有できる方法であり、管理者が事前定義された値を変更できるチャネルでもあります。 プロトコル自体は非常に単純ですが、SNMPを実装するプログラムの構造は非常に複雑になる可能性があります。

前回のガイドでは、SNMPプロトコルの基本について学びました。 このガイドでは、SNMPを使用して通信するためのツールをセットアップする方法のデモンストレーションを開始します。 デモには2台のUbuntu14.04サーバーを使用しますが、他のほとんどのシステムは、いくつかの変更を加えて従うことができるはずです。

SNMPデーモンとユーティリティをインストールします

一部のUbuntuシステムにデーモンとツールをインストールすることで、SNMPをシステムに実装する方法を探り始めることができます。

2つのサーバーを使用します。1つはマネージャー部分を含み、もう1つのサーバーはエージェントを含みます。 エージェントをマネージャーマシンにインストールすることもできますが、エージェントを分離しておくと、各コンポーネントが提供する機能を簡単に示すことができます。

最初のサーバーで、aptデータベースを更新し、マネージャーコンポーネントをインストールします。 これに伴い、別のパッケージもダウンロードします。 snmp-mibs-downloader これには、ほとんどのMIBツリーに名前でアクセスできるようにする標準MIBに関する独自の情報が含まれています。

sudo apt-get update
sudo apt-get install snmp snmp-mibs-downloader

2番目のサーバー(デーモンを実行するサーバーと対話するサーバー)では、次のように入力して必要なコンポーネントをインストールできます。

sudo apt-get update
sudo apt-get install snmpd

これらのコンポーネントをインストールしたので、セットアップを構成する必要があります。

SNMPマネージャーの構成

上で述べたように、作業の大部分はエージェントコンポーネントで行われるため、このマシンでの構成は実際には非常に簡単です。 インストールした追加のMIBデータをクライアントが使用できるようにするには、1つのファイルを変更するだけです。

を開きます /etc/snmp/snmp.conf sudo権限を持つテキストエディタのファイル:

sudo nano /etc/snmp/snmp.conf

このファイルには、いくつかのコメントとコメントされていない1行があります。 マネージャがMIBファイルをインポートできるようにするには、コメントアウトする必要があります。 mibs : ライン:

#mibs :

終了したら、ファイルを保存して閉じます。

これでマネージャー部分の構成は完了しましたが、エージェントコンピューターの構成を支援するためにこのサーバーを使用する必要があります。

SNMPエージェントマシンの構成

真のクライアントサーバーシステムであるため、エージェントコンピューターには、独自のSNMPセットアップを構成するために必要な外部ツールはありません。 一部の構成ファイルを変更して変更を加えることができますが、必要な変更のほとんどは、管理サーバーからエージェントサーバーに接続することによって行われます。

開始するには、エージェントコンピューターで、sudo特権を使用してデーモンの構成ファイルを開く必要があります。

sudo nano /etc/snmp/snmpd.conf

内部では、いくつかの変更を加える必要があります。 これらは主に、他のサーバーから構成を管理できるように、構成をブートストラップするために使用されます。

まず、変更する必要があります agentAddress 指令。 現在、ローカルコンピューターからの接続のみを許可するように設定されています。 現在の行をコメントアウトし、下の行のコメントを解除する必要があります。これにより、すべての接続が可能になります(これはまもなくロックダウンされます)。

#  Listen for connections from the local system only
#agentAddress  udp:127.0.0.1:161
#  Listen for connections on all interfaces (both IPv4 *and* IPv6)
agentAddress udp:161,udp6:[::1]:161

次に、一時的に挿入する必要があります createUser ライン。 これらのディレクティブは通常このファイルに保持されませんが、すぐに再び削除されるので、それほど重要ではありません。

作成するユーザーは bootstrap そして、最初の「実際の」ユーザーを作成するためのテンプレートとして使用されます。 SNMPパッケージは、ユーザーのプロパティのクローンを作成するプロセスを通じてこれを実行します。

新しいユーザーを定義するときは、認証タイプ(MD5またはSHA)を指定するとともに、少なくとも8文字である必要があるパスフレーズを指定する必要があります。 私たちのように、転送に暗号化を使用することを計画している場合は、プライバシープロトコル(DESまたはAES)と、オプションでプライバシープロトコルパスフレーズも指定する必要があります。 プライバシープロトコルパスフレーズが指定されていない場合、認証パスフレーズはプライバシープロトコルにも使用されます。

ユーザー作成ラインは次のようになります。

createUser bootstrap MD5 temp_password DES

新しいユーザーを指定したので、このユーザーが持つアクセスのレベルを設定する必要があります。 これを設定します bootstrap ユーザー、および作成する新しいユーザーの場合は、 demo. を使用して、読み取りおよび書き込みアクセスを許可します rwuser ディレクティブ(代替は rouser 読み取り専用アクセスの場合)。

指定することで暗号化の使用を強制します priv 私たちのユーザーの後。 ユーザーをMIBの特定の部分に制限したい場合は、行の最後でユーザーがアクセスできる最高レベルのOIDを指定できます。

私たちの目的のために、私たちの両方の行はかなり単純になります:

rwuser bootstrap priv
rwuser demo priv

これらの変更が終了したら、ファイルを保存して閉じます。

これらの変更を実装するには、 snmpd サービス:

sudo service snmpd restart

これで、管理ソフトウェアをインストールしたマシンから、エージェントサーバーに接続して通常のユーザーを作成できます。

これを使用してこれを行います snmpusm ユーザー管理に使用されるツール。 これが正しく機能するには、エージェントサーバーのIPアドレスを知っている必要があります。

始める前に、SNMPコマンドを送信する一般的な構造について少し説明します。

SNMPコマンドの一般的な構造

に含まれているツールスイートを使用する場合 snmp パッケージ( net-snmp ソフトウェアスイート)、コマンドを呼び出さなければならない方法にいくつかのパターンがあります。

最初に行う必要があるのは、通信するSNMPデーモンで認証することです。 これには通常、かなりの数の情報を提供することが含まれます。 一般的なものは以下のとおりです。

この情報を使用して、コマンドの作成を開始できます。 ブートストラップユーザーの設定方法を考えると、そのアカウントで使用するコマンドは次のようになります。

snmp_command -u bootstrap -l authPriv -a MD5 -x DES -A temp_password -X temp_password remote_host snmp_sub_command_or_options

たとえば、管理サーバーから、次のように入力して、ブートストラップアカウントが使用可能であることを確認できます。

snmpget -u bootstrap -l authPriv -a MD5 -x DES -A temp_password -X temp_password remote_host 1.3.6.1.2.1.1.1.0
SNMPv2-MIB::sysDescr.0 = STRING: Linux target 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64

The 1.3.6.1.2.1.1.1.0 文字列は、システム情報の表示を担当するOIDです。 基本的にの出力を返します uname -a リモートシステム上。

SNMPデーモンを実行しているサーバーに対して正しく認証できることを確認したので、引き続き通常のユーザーアカウントを作成できます。

通常のユーザーアカウントを設定する

の権限を指定しましたが demo 私たちのユーザーアカウント snmpd.conf ファイル、実際にはまだこのユーザーを作成していません。 を使用します bootstrap 新しいユーザーのテンプレートとしてのユーザー。

管理サーバーでは、テンプレートからユーザーを作成できます。 snmpusm ツールと次の一般的な構文:

snmpusm authentication_info remote_host create new_user existing_user

したがって、渡す必要のある認証フラグについてわかっていることを使用し、すでに持っているユーザーアカウントを活用します(bootstrap)、すでに定義したユーザー権限に適合するユーザーを作成できます(demo).

コマンドは次のようになります。

snmpusm -u bootstrap -l authPriv -a MD5 -x DES -A temp_password -X temp_password remote_host create demo bootstrap

次のメッセージが表示されます。

User successfully created.

これで、完全に機能するユーザーが demo リモートサーバー上。 ただし、それでも同じ認証情報を使用しています bootstrap アカウント。 パスワードを別のものに変更する必要があります。 今回は、 demo 認証するアカウント。 パスワードは少なくとも8文字の長さである必要があります

snmpusm -u demo -l authPriv -a MD5 -x DES -A temp_password -X temp_password remote_host passwd temp_password my_new_password

次のメッセージが返されます。

SNMPv3 Key(s) successfully changed.

SNMPサービスの実行時間をリモートサーバーに問い合わせることで、新しい資格情報とパスワードをテストできます。 を使用します snmpget 他のマシンから単一の値を取得するコマンド。

今回は、ダウンロードした追加のMIB定義を利用します。 これらを使用して、OID数値IDの代わりに名前で値を要求できます。

snmpget -u demo -l authPriv -a MD5 -x DES -A my_new_password -X my_new_password remote_host sysUpTime.0

リモートSNMPデーモンが最後に再起動された時刻を表す値を取得する必要があります。

DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (383018) 1:03:50.18

クライアント構成ファイルの作成

この時点で、すべてのSNMPコマンドの認証の詳細が各要求でかなり静的になることに気付いたと思います。 毎回これらを入力するのではなく、接続先の資格情報を含むクライアント側の構成ファイルを作成できます。

クライアント構成ファイルは、共有する範囲に応じて2つの異なる場所に配置できます。

ログイン資格情報を管理マシンの有効なユーザーと共有する場合は、構成の詳細をグローバルに配置できます。 snmp.conf ファイル。 そのファイルをsudo権限で開く必要があります。

sudo nano /etc/snmp/snmp.conf

ただし、ユーザーのみの認証クレデンシャルを定義する場合は、非表示の認証資格を作成できます .snmp ユーザーのホームディレクトリ内のディレクトリを作成し、そこにファイルを作成します。

mkdir ~/.snmp
cd ~/.snmp
nano snmp.conf

構成を配置する場所の決定に関係なく、内容は同じになります。

認証に使用しているコマンドは、次の表にあります。 右側の列には、これらの構成の詳細を設定するために使用する必要があるディレクティブ名が表示されます。 snmp.conf ファイル:

コマンドフラグ 説明 翻訳済み snmp.conf 指令
-uユーザー名 認証するSNMPv3ユーザー名。 defSecurityName USERNAME
-l authPriv 認証に使用するセキュリティレベル。 defSecurityLevel authPriv
-MD5 使用する認証プロトコル。 defAuthType MD5
-x DES 使用するプライバシー(暗号化)プロトコル。 defPrivType DES
パスフレーズ 指定されたユーザー名の認証パスフレーズ。 defAuthPassphrase PASSPHRASE
-X PASSPHRASE 提供されたユーザー名のプライバシーパスフレーズ。 defPrivPassphrase PASSPHRASE

この情報を使用して、適切なものを作成できます snmp.conf ファイル。 ガイドの場合、これは次のようになります。

defSecurityName demo
defSecurityLevel authPriv
defAuthType MD5
defPrivType DES
defAuthPassphrase my_new_password
defPrivPassphrase my_new_password

終了したら、ファイルを保存して閉じます。

これで、認証の詳細を指定せずにコマンドを発行できます。 必要なのは、SNMPコマンド、ホスト、およびコマンド引数だけです。

入力する代わりに:

snmpget -u demo -l authPriv -a MD5 -x DES -A my_new_password -X my_new_password remote_host sysUpTime.0

簡単に入力できます。

snmpget remote_host sysUpTime.0

ご覧のとおり、これにより、各リクエストで提供する必要のある情報の量が大幅に削減されます。

ブートストラップアカウントの削除

通常のアカウントが正しく構成されたので、 bootstrap アカウント、それはかなり安全ではないので。

エージェントサーバーで、 /etc/snmp/snmpd.conf sudo権限で再度ファイルします。

以前に追加した、 bootstrap ユーザー:

#createUser bootstrap MD5 temp_password DES
#rwuser bootstrap priv

ファイルを保存して閉じます。

ここで、SNMPデーモンを再起動します。

sudo service snmpd restart

これは、持っていないという推奨事項を満たします createUser 通常のディレクティブ snmpd.conf ファイル。 また、その一時ユーザーから特権を削除します。

完全に削除したい場合 bootstrap usmUserTableのユーザーの場合、管理サーバーから次のコマンドを発行することでこれを行うことができます。

snmpusm remote_host delete bootstrap

次の応答が返されます。

User successfully deleted.

結論

この時点で、SNMPプロトコルを使用して安全に通信できる完全に構成されたクライアントサーバーセットアップが必要です。 他のホストにデーモンを簡単に追加し、インフラストラクチャ全体でアカウントアクセスを構成できます。

次のガイドでは、これまで使用してきたnet-snmpツールの基本的な使用法について説明します。 値を1つずつまたは一括で取得する方法とデータを変更する方法を示します。

モバイルバージョンを終了