SNMP

読み:えすえぬえむぴー / 英語表記:Simple Network Management Protocol

ネットワーク機器の状態を監視・管理するためのプロトコル。管理する側のSNMPマネージャと、管理される機器で動くSNMPエージェントが、MIBという管理情報をやり取りする。

イマシルちゃんの解説

会社にたくさんあるルータやスイッチが、ちゃんと動いているか、1台ずつ見て回るのは大変だよね。

SNMPを使うと、監視用のサーバから、各機器に「調子はどう?」って聞いて回れるんだ。
それに、機器のほうから「大変!ケーブルが抜けたよ!」って知らせてくれることもできるんだよ。
ネットワークの健康診断をしてくれる、頼もしい仕組みなんだ!

より深い解説

定義

SNMP(Simple Network Management Protocol)は、IPネットワーク上の機器(ルータ、スイッチ、サーバ、プリンタなど)を監視・管理するためのプロトコルである。トランスポート層にはUDPを使う。

構成要素役割
SNMPマネージャ監視する側(監視サーバ)。エージェントに情報を要求し、通知を受け取る
SNMPエージェント監視される機器で動くプログラム。機器の情報を管理し、マネージャに応答・通知する
MIB(Management Information Base)エージェントが管理する情報の集まり。インタフェースの状態、通信量、CPU使用率などが、木構造の識別子(OID)で整理されている

主な操作

操作方向内容ポート番号
GetRequest / GetNextRequestマネージャ → エージェントMIBの値を読み出す161
SetRequestマネージャ → エージェントMIBの値を書き換える(設定を変更する)161
Responseエージェント → マネージャ要求への応答−
Trapエージェント → マネージャ機器でイベントが起きたことを、エージェントから自発的に通知する162
InformRequestエージェント → マネージャTrapと同様の通知だが、受信の確認応答を求める(v2c以降)162

マネージャが定期的に問い合わせる方式をポーリング、エージェントから通知する方式をトラップという。

バージョンとセキュリティ

バージョン認証暗号化
SNMPv1コミュニティ名(平文)なし
SNMPv2cコミュニティ名(平文)なし
SNMPv3利用者ごとの認証(ハッシュ)あり

SNMPv1とv2cのコミュニティ名は、パスワードに相当するが、平文で送られる。初期値の「public」のまま使っていると、第三者に機器の情報を読み取られたり、書き込み可能な設定であれば設定を変更されたりする。安全に使うには、SNMPv3を使うか、アクセスできるマネージャのアドレスを限定する。

攻撃への悪用

SNMPは、管理のための強力な機能を持つため、攻撃に悪用されることがある。

悪用の例内容
情報収集推測しやすいコミュニティ名でMIBを読み出し、ネットワークの構成を調べる
設定の改ざんSetRequestで、機器の設定や、トラップの送信先を変更する
リフレクション攻撃送信元を偽ったGetBulkRequestで、大きな応答を攻撃対象に送らせる(DRDoS攻撃)

これらを防ぐため、SNMPのアクセスは管理用のネットワークに限定し、不要な書き込み(Set)の権限は無効にしておく。

監視でよく使うMIBの例

情報内容
sysUpTime機器が起動してからの時間
ifOperStatusインタフェースが動いているか(up / down)
ifInOctets / ifOutOctetsインタフェースの受信・送信のオクテット数(通信量の計算に使う)

実際の試験ではここに出る!

この用語が出てくる記事

↑