まずは、このツールのヘルプを見てほしい。
Usage ./snmpcheck.pl -t <ip address> [-w] [-p] [-c] [-v] [-r] [-d] [-T] [-l] [-h]
-t : target host or ip address range;
-w : detect write access;
-p : snmp port; default port is 161;
-c : snmp community; default is public;
-v : snmp version; default is 1;
-r : request retries; default is 1;
-d : disable "TCP connections" enumeration!
-T : timeout; default is 45. Max is 60;
-l : enable logging;
-h : show help menu;
一番単純に実行するのであれば、
./snmpcheck -t ターゲットマシンのアドレス or アドレスレンジ
と指定するだけでよい。注目していただきたいところは、「-c」オプションの部分である。
-c snmp community; default is public;
デフォルトはpublicという文字列をSNMPコミュニティ名として指定する、という意味である。先ほど説明した単純な実行方法では、SNMPコミュニティ名「public」を使用し、情報取得を試みることになるのだが、ペネトレーションテストの現場では、残念ながら80%以上の確率(残りの20%については後述する)で情報の取得が可能であるというのが現状である。この記事をご覧になっており、セキュリティの検査を受けた経験のある方は思い当たる節があるのではないだろうか。
それでは、デフォルトのSNMPコミュニティ名を変更する方法と推奨される設定を紹介しよう。今回は、Linux系OSで使用されることの多い、NET-SNMPでの設定方法を紹介する。変更を加えるファイルはNET-SNMPの設定ファイルである「snmp.conf」(/etc/snmp/以下などに配置されている)が対象である。
com2secセクションでは、コミュニティ名およびSNMPにアクセスできるネットワークの範囲を設定することができる。記述方法としては、
com2sec [セキュリティ名] [アクセス許可範囲] [コミュニティ名]
といったものになる。
例えば、
とする場合には以下のように記述することとなる。
com2sec karo-net 10.0.0.0/24 k4RoY41v1A
このアクセス範囲なのだが、可能な限り絞ることをお勧めする。SNMPでの監視を行う場合、マネージャのアドレスはある程度限定されるためそのアドレスからのみの許可という設定にした方が、よりセキュアであると考えられる。
このほかにも、セキュリティに関連すると判断できる設定項目はあるのだが、今回は、SNMPコミュニティ名にとどめさせていただく。
ここまで読んでいただけた方であれば、コミュニティ名はもはやパスワードと同じであるという認識を持っていただけただろう。何かの情報、操作を行う際に必要な文字列に関しては、呼び名が何であれ、パスワードと同じレベルの重要性を持っているという認識をしていただいて問題ないだろう。
多くのSNMPエージェントではほとんどの場合、コミュニティ名のデフォルトは、「public」や「private」という文字列が使用されている。だが、中には例外もあり、例えば、シスコシステムズのネットワーク機器の中には「secret」や「ILMI」といった文字列をデフォルトでSNMPコミュニティ名に設定しているものもある。
各ベンダ、各製品、各プロトコル(HTTPSによる管理画面など)に対するアクセスを行うための文字列(ユーザー名、パスワード)のデフォルトの設定はさまざまである。システムの攻略を試みてくる悪意のあるユーザーも、ペネトレーションテストを行う私たちも「このベンダのこの製品のこのプロトコルには、この文字列」と頭で覚えているわけではない。
それでは、どうしているのだろうか。
便利ととらえるべきか、脅威ととらえるべきか判断に苦しむところだが、インターネットには、デフォルトのユーザーIDやパスワード、SNMPコミュニティ名を蓄積し、公開しているデータベースが数多く存在する。その一部を紹介しよう。
●Phenoelit Default Password List
Phenoelitというハッカーチームが運営しているサイトのコンテンツの1つでデフォルトのパスワードリストを公開している。サイト自体の更新は頻繁ではないようだが、この手のサイトでは老舗とも呼べるくらいの運営期間であるためか、掲載数も充実しており、更新もある程度定期的に行われているようである。
●Default Router Password Database/default password list
この2つのサイトは、更新自体は滞っているようだが、ベンダ別やプロダクト別に検索できたりといった面での使い勝手の良さと見やすさがあるため紹介させていただいた。
●VulnerabilityAssessment.co.uk - Default Oracle Passwords
こちらは少し変わり種の部類に入るかもしれないが、Oracleのデフォルトユーザー、デフォルトパスワードのリストを公開しているコンテンツである。
余談ではあるが、Oracleが稼働しているサーバのペネトレーションテストの際には、運用に必要がないにもかかわらず、デフォルトのユーザーが存在し、それが侵入可能と判断される原因になる場合がある。
その後、検査結果の報告会で侵入に成功した要因について解説すると、担当の方は、デフォルトのアカウントが削除されず残っていることに気付いていないといった場合が非常に多い。
また、サービスにおいても同様であり、意図しないサービスが稼働していたり、なんらかのアプリケーションのWebインターフェイスによる管理画面が公開されていたりする場合も珍しくない。
そして、その管理画面にアクセス可能な場合も、意図せず公開しているため、デフォルトのユーザー名、パスワードでログイン可能な場合も少なくない。
筆者が出合った例の中でインパクトの大きかったものとしては、データベースの管理画面にアクセス可能であり、個人情報に当たるデータを1万件近く取得することが可能であったものや、ファイアウォールの管理画面にログイン可能であり、ネットワークの制御(フィルタリング)のすべてを変更することが可能というものがあった。
SNMPではパスワードと呼ばずにコミュニティ名と呼んでいることから、そのものへの意識がしづらくなっていることもさることながら、そもそもそのサービスが存在し、稼働しているということ自体が意識できていない場合があるのではないかと推測できる。
デフォルトのアカウントにしても、SNMPコミュニティ名の問題にしても、存在、稼働が認識できておらず、かつ、運用に必要ないという判断からパスワードの変更、SNMPサービス自体の停止という対策を講じるユーザー企業も多い。
Copyright © ITmedia, Inc. All Rights Reserved.