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デーモンで認証することです。 これには通常、かなりの数の情報を提供することが含まれます。 一般的なものは以下のとおりです。
- -v VERSION :このフラグは、使用するSNMPプロトコルのバージョンを指定するために使用されます。 このガイドではv3を使用します。
- -c COMMUNITY :このフラグは、認証にSNMPv1またはv2スタイルのコミュニティ文字列を使用している場合に使用されます。 v3スタイルのユーザーベースの認証を使用しているため、これは必要ありません。
- -u USER-NAME :このパラメーターは、認証するユーザー名を指定するために使用されます。 SNMPを使用して何かを読み取ったり変更したりするには、既知のユーザー名で認証する必要があります。
- -l LEVEL :これは接続しているセキュリティレベルを指定するために使用されます。 可能な値は次のとおりです。
noAuthNoPriv
認証も暗号化もなしの場合、authNoPriv
認証用ですが暗号化なし、およびauthPriv
認証と暗号化用。 使用しているユーザー名は、指定したセキュリティレベルで動作するように構成する必要があります。そうしないと、認証が成功しません。 - -プロトコル:このパラメーターは、使用される認証プロトコルを指定するために使用されます。 可能な値は次のとおりです。
MD5
またSHA
. これは、ユーザーの作成時に指定された情報と一致する必要があります。 - -x PROTOCOL :このパラメーターは、使用される暗号化プロトコルを指定するために使用されます。 可能な値は次のとおりです。
DES
またAES
. これは、ユーザーの作成時に指定された情報と一致する必要があります。 これは、ユーザーの特権仕様にpriv
その後、暗号化を必須にします。 - -パスフレーズ:これは、ユーザーの作成時に指定された認証パスフレーズを提供するために使用されます。
- -X PASSPHRASE :これは、ユーザーの作成時に指定された暗号化パスフレーズです。 何も指定されていないが暗号化アルゴリズムが指定されている場合は、認証パスフレーズが使用されます。 これは、
-x
パラメータが指定されているか、ユーザーの特権仕様にpriv
その後、暗号化が必要です。
この情報を使用して、コマンドの作成を開始できます。 ブートストラップユーザーの設定方法を考えると、そのアカウントで使用するコマンドは次のようになります。
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つずつまたは一括で取得する方法とデータを変更する方法を示します。