SNMPにはバージョンが複数存在し、それぞれ機能やセキュリティの面で大きな違いがあります。
現在広く使われているのはSNMPv1・v2c・v3の3つであり、利用環境やセキュリティ要件に応じて適切なバージョンを選択することが重要です。
本記事では、各バージョンの特徴・セキュリティ対応状況・コミュニティ名の役割・認証・暗号化の違いを詳しく解説していきます。
バージョン選択に迷っている方や、より安全なSNMP運用を目指している方にとって参考になる内容です。
SNMPバージョンの違いを一覧で理解しよう
それではまず、SNMPの各バージョンを比較しながら基本的な違いを解説していきます。
v1からv3にかけて、機能とセキュリティが段階的に強化されてきた経緯があります。
SNMPv3は現在最もセキュリティが高いバージョンであり、認証と暗号化の両方をサポートしています。セキュリティが重要な環境では、v1やv2cではなく、SNMPv3を選択することを強く推奨します。
| 項目 | SNMPv1 | SNMPv2c | SNMPv3 |
|---|---|---|---|
| リリース年 | 1988年 | 1996年 | 1999年 |
| 認証方式 | コミュニティ名(平文) | コミュニティ名(平文) | ユーザー認証(SHA/MD5) |
| 暗号化 | なし | なし | AES・DES対応 |
| GetBulk | 非対応 | 対応 | 対応 |
| セキュリティレベル | 低 | 低 | 高 |
SNMPv1の特徴と限界
SNMPv1は1988年に登場した最初のバージョンです。
シンプルな設計であり、多くのネットワーク機器でサポートされていますが、認証はコミュニティ名のみで暗号化もないため、セキュリティ面での脆弱性が大きいバージョンです。
現在でも古い機器との互換性のために使われることはありますが、新規導入ではほとんど採用されません。
SNMPv2cの特徴と改善点
SNMPv2cはv1の機能を拡張したバージョンです。
GetBulkRequestコマンドの追加により、大量のデータをまとめて取得できる点が改善されました。
ただし、認証方式はv1と同じコミュニティ名による平文認証のままであり、暗号化も未対応です。
現在の実運用ではv2cが最もよく使われているバージョンですが、セキュリティ要件が厳しい場合はv3への移行が推奨されます。
SNMPv3の特徴とセキュリティ強化
SNMPv3は1999年に標準化された現在の最新バージョンです。
ユーザーベースのセキュリティモデル(USM)が導入され、以下の3段階のセキュリティレベルが選択できます。
・noAuthNoPriv:認証なし・暗号化なし(コミュニティ名に近い動作)
・authNoPriv:認証あり(SHA/MD5)・暗号化なし
・authPriv:認証あり・暗号化あり(AES/DES)
セキュリティが求められる環境ではauthPrivを選択し、通信内容の盗聴・改ざんを防ぐことが重要です。
コミュニティ名の仕組みとセキュリティリスク
続いては、SNMPv1・v2cで使われるコミュニティ名の仕組みと注意点を確認していきます。
コミュニティ名はSNMPにおける簡易的なアクセス制御の仕組みですが、その仕様には注意すべき点があります。
コミュニティ名の役割と初期設定
コミュニティ名は、SNMPマネージャとエージェント間での認証に使われる文字列です。
デフォルト設定では「public」(読み取り専用)や「private」(読み書き可能)が使われていることが多く、そのままにしておくとセキュリティリスクが高まります。
コミュニティ名は推測されにくいものに変更し、不要なアクセスを制限することが基本的な対策です。
コミュニティ名の平文送信の問題
コミュニティ名はUDPパケット内に平文(暗号化なし)で含まれて送信されます。
ネットワーク上でパケットキャプチャが行われると、コミュニティ名が簡単に盗み見られてしまう可能性があります。
インターネット経由や信頼できないネットワーク上でSNMP v1/v2cを使用することは、セキュリティ上避けるべきでしょう。
アクセス制御リスト(ACL)との組み合わせ
v1・v2cを使わざるを得ない環境では、ファイアウォールのACLやルーターのアクセスリストで、SNMPアクセス元のIPアドレスを制限することが有効な対策です。
特定の監視サーバーのIPアドレスからのみSNMPアクセスを許可することで、不正アクセスのリスクを大幅に低減できます。
SNMPv3の認証・暗号化の設定と実装
続いては、SNMPv3の認証・暗号化設定の具体的な内容を確認していきます。
SNMPv3を正しく設定することで、安全なネットワーク監視環境を構築できます。
SNMPv3ユーザーの作成
SNMPv3では、コミュニティ名の代わりにユーザー名・認証パスワード・暗号化パスワードを設定します。
Linuxのnet-snmpでユーザーを作成する場合、snmptrapd設定ファイルやnet-snmp設定ファイルにユーザー情報を記述します。
Ciscoルーターの場合は「snmp-server user [ユーザー名] [グループ名] v3 auth sha [認証PW] priv aes [暗号化PW]」のように設定します。
認証プロトコルの選択(MD5とSHA)
SNMPv3の認証プロトコルにはMD5とSHAが選択できますが、セキュリティ強度の高いSHAを使用することを推奨します。
MD5はすでに脆弱性が指摘されており、新規設定では積極的に選択しないほうがよいでしょう。
暗号化プロトコルの選択(DESとAES)
暗号化プロトコルはDESとAES(128/256ビット)から選択できます。
DESは鍵長が56ビットと短く、現在の基準では安全性が不十分です。
AES 128ビット以上を選択することで、現代の基準に沿った安全な暗号化通信が実現できます。
まとめ
本記事では、SNMPのv1・v2c・v3それぞれのバージョンの特徴・コミュニティ名の仕組み・認証・暗号化の違いについて解説しました。
セキュリティを重視するなら、認証・暗号化が揃ったSNMPv3を選択することがベストです。
既存環境でv2cを使用している場合も、ACLによるアクセス制限など最低限のセキュリティ対策は必須です。
バージョンの特性を正しく理解し、自社のネットワーク環境に最適なSNMP設定を実現してみてください。