はじめに
前回の記事では、Ciscoが古いSNMPの設定を廃止するという噂の裏側を解説しました。「SNMPv1/v2cや弱いアルゴリズムはもうダメですよ」という話でしたね。
「じゃあ、具体的にどう設定すればいいの?」という声が聞こえてきそうなので、今回は実践編です。Linuxで定番の Net-SNMP と、私が作っている TWSNMP FC/FK を使って、これからの標準になる「強いSNMPv3(SHA-256 + AES-256)」を設定する手順をまとめてみます。
1. まずはバージョンのチェックから
「最新のアルゴリズムを使おう!」と思っても、ソフトが古すぎると対応していません。
SHA-256(認証)やAES-256(暗号)をしっかり使うには、Net-SNMP 5.8以上 が必要です。
snmpd -v
これでバージョンを確認してみてください。古いOSだと5.7系だったりするので、その場合は泣きながらアップデートするか、新しいOSに乗り換えましょう。
実際に何が使えるか確認するには?
バージョン以外にも、snmpwalk --help(または -h)を叩けば、そのバイナリが具体的にどのアルゴリズムをサポートしているか教えてくれます。
snmpwalk -h
出力結果の終わりの方に、以下のような記述があるはずです。
-a PROTOCOL set authentication protocol (MD5|SHA|SHA-224|SHA-256|SHA-384|SHA-512)
-x PROTOCOL set privacy protocol (DES|AES)
カッコの中に SHA-256 や AES(または AES-256)が入っていればOK。逆に MD5 や SHA(SHA-1)しか入っていない場合は、残念ながらその環境では「強いSNMP」は使えません。
2. Net-SNMPエージェント(snmpd)を設定する
まずはサーバー側の設定です。SNMPv3のユーザーを作ります。
ユーザー作成はコマンド一発
net-snmp-config コマンドを使うのが簡単です。念のためサービスを止めてから実行します。
# サービスを停止
sudo systemctl stop snmpd
# SHA-256認証とAES-256暗号を指定して「myuser」を作成
sudo net-snmp-config --create-snmpv3-user -a SHA-256 -A authpass123 -x AES-256 -X privpass123 myuser
もっと手軽に、直接ファイルを書き換える方法
「コマンドはちょっと面倒…」という場合は、/etc/snmp/snmpd.conf に直接書いてしまう方法もあります。簡易的なテストならこちらが手っ取り早いです。
ファイルの末尾などに、以下の2行を追加してみてください。
# ユーザー「test」に読み書き(rwuser)権限を与える
rwuser test priv
# ユーザー作成:認証はSHA-256、暗号はAES、パスワードは両方 "test1234"
createUser test SHA-256 "test1234" AES "test1234"
※createUser の行は、snmpd を起動すると自動的にハッシュ化された暗号文に書き換わります。パスワードが生のまま残らないので、実はこれでも安全なんです。
アクセス許可も忘れずに
/etc/snmp/snmpd.conf を開いて、作ったユーザーに読み取り権限を与えます。
# authPriv(認証・暗号化あり)のアクセスのみを許可
rouser myuser authpriv
設定が終わったら、サービスを再起動して準備完了です。
sudo systemctl start snmpd
3. ちゃんと動くか確認してみる
snmpwalk でテストします。パラメータが少し長いですが、これが「安全の証」です。
snmpwalk -v 3 \
-l authPriv \
-u myuser \
-a SHA-256 -A authpass123 \
-x AES-256 -X privpass123 \
localhost system
ここでちゃんと情報が返ってくれば、強力な暗号化通信が成功しています!
4. TRAP送信だって「強い設定」で
トラップ(通知)を送る側も同じ強度に合わせる必要があります。
送信コマンドの例
snmptrap -v 3 \
-l authPriv \
-u myuser \
-a SHA-256 -A authpass123 \
-x AES-256 -X privpass123 \
<受信側のIP> \
'' \
1.3.6.1.4.1.8072.2.3.0.1
受信側のちょっとした罠
SNMPv3のトラップ受信には、送信側の EngineID が必要になります。受信側の設定ファイルに createUser -e <EngineID> ... と書く必要があるのですが、これが結構ハマりやすいポイントなので注意してくださいね。
5. TWSNMP FC/FKでの設定
TWSNMPなら、ややこしい設定も画面をポチポチするだけで終わります。
ノード設定
以下のようにSNMPモードに強いアルゴリズムをセットするだけです。
MIBブラウザでの確認例
正しく設定できれば、TWSNMPのMIBブラウザからもスッキリ情報が取れます。
下の画像は、Debian 11(Net-SNMP 5.9)に対してアクセスした時の様子です。
TRAP受信設定
マップ設定のSNMPモードを変更してユーザー名とパスワードを指定するだけです。
エンジンIDの処理は、TWSNMP FC/FKの中でなんとかしてくれます。
まとめ
「SNMPは不安全」なんて言われていたのはもう昔の話です。
SHA-256やAES-256を使いこなせば、今でも一線級の安全な監視プロトコルとして活躍できます。
Ciscoに「それ、もう古いよ!」と怒られる前に、皆さんの環境もモダンなSNMPv3にアップデートしてみてはいかがでしょうか。


