このような方法でユーザーの存在を見つけられないように対策を行おう。最も単純な対策は、ユーザーディレクトリの機能を無効にすることである。もちろん、これはユーザーディレクトリ機能が運用上必要ないという前提ではあるが、無効にするには、前述した
UserDir public_html
を、
UserDir disabled
と変更し、Apacheを再起動する。
これで、どのユーザーディレクトリにアクセスしたとしても、すべて「Not Found」が返されることとなり、システム内のユーザーの有無で応答の変化がなくなるため、存在するユーザーの列挙を行うことはできない。ユーザーディレクトリを公開する必要がない場合は、この設定にすることが推奨される。
運用上ユーザーディレクトリを利用する必要がある場合は、「UserDir」の部分を特定のユーザーのみ許可、特定のユーザーのみ不許可といった設定を行うこともできる。
[特定のユーザーのみ許可]
UserDir disabled
UserDir enabled user1 user2 user3
ユーザーディレクトリを許可したいユーザーを「UserDir enabled」に続けてスペース区切りで列挙する。
[特定のユーザーのみ禁止]
UserDir enabled
UserDir disabled user4 user5 user6
ユーザーディレクトリを禁止したいユーザーを「UserDir disabled」に続けてスペース区切りで列挙する。
ユーザーディレクトリを公開する必要のないユーザーは、この機能を無効にしてしまうことで「Forbidden」を返さないようにすることが可能である。「特定ユーザーのみ許可」「特定ユーザーのみ禁止」のどちらを設定すべきかは、ユーザーの数などを考慮し、環境に合わせて記述すればよいだろう。
ユーザー名(ID)とパスワードは、当然のことながら2つそろって初めてログインできるものである。ということは、パスワードだけでなくユーザー名も知られない方がよい。むしろ、パスワードと同じように扱ってもよいくらいである。ユーザー名が分かることで認証を突破される確率を上げてしまうという結果を招くかもしれない。
現在、さまざまな事故が起きていることからか、世の中のセキュリティ意識が高まってきている。とはいえ、ユーザー名=パスワードとしているなど、容易に推測されてしまうようなパスワードのユーザーがまだ残っているのが現実である。
パスワードが分からなければ大丈夫じゃないか?と思われるかもしれないが、このような方法でユーザー名を列挙され、最悪の場合、システムが乗っ取られてしまう可能性もあるのである。
【参考】
ユーザー名とパスワードが一致しているアカウントは「ジョーアカウント」(ジョーパスワード)と呼ばれ、最も容易に破られてしまう。当然ながらこのようなアカウントを作成させてはいけない。
Copyright © ITmedia, Inc. All Rights Reserved.