(1/2)管理者として避けて通れないのが、一般ユーザーも含めたパスワードの管理と運用である。一般ユーザーのパスワードがセキュリティホールになる可能性もあるが、ユーザーに対して「適切なパスワードにしろ」というだけではうまくいくはずがない。管理者として何ができるのか、何をすべきなのかを再検討してみよう。});LinuxでTelnetやFTPなどのサービスを利用するには、システムからその利用を許可されている必要があります。「あるユーザーからの接続は認める」など接続ユーザーによって許可/拒否を決定する方法の2つが考えられます。通常はこれら2つの方法を組み合わせて、ユーザーにシステムを利用させるのですが、今回は後者のユーザーベースで認証する方法を取り上げます。パスワードの仕組みとウイークポイントLinuxは、ログインプロセスによって正当なユーザーであるかどうかを検証します。ユーザーがシステムにログインする際は、ユーザー名とパスワードの提示を行い、システムの利用の可否や割り当てられた権限での作業を行うことができます。そのため、パスワードは絶対に破られてはならないものになります。小まめに情報をチェックしてセキュリティを保っているつもりでも、簡単に破られるパスワードを設定していることがセキュリティホールになっている場合も多くあります。Linuxにおける認証の仕組み従来のUNIXの認証方式は、単純に/etc/passwdを参照するというものでした。現在のLinuxディストリビューションはセキュリティ確保のためMD5やシャドウパスワードなど、さまざまな認証方法を採用するようになっています。なってくると、ユーザー認証が必要なプログラムもそれぞれが多くの認証方式に対応しなければならなくなってきます。これでは開発の手間ばかりが増加してしまいます。Modules)が利用されています。現在では、ほとんどのディストリビューションがデフォルトで利用しています。従来の認証が必要な際も、PAMから呼び出されて利用されます。認証に必要なデータをローカルマシン以外から取得することも可能です。Switch:/etc/nsswitch.conf)の設定が必要になります。/etc/nsswitch.confこのファイルでは、アカウントやパスワードなどのデータをどこから検索するのかを定義します。何も意識しなければ、ローカルに存在する/etc/passwdや/etc/shadow、/etc/groupといったファイルが参照されます。この設定ファイルを編集することによって、ユーザーアカウントなどの情報の検索順序をLDAPデータベース→NISデータベース→ローカルファイルのように指定することができます。/etc/pam.dディレクトリこのディレクトリに各サービスの設定ファイルを作成します。設定ファイルでは、認証方法、パスワードの変更方法、認証後の動作などを設定できます。PAM、NSSと各種サーバの関係また、一言に「パスワード」といっても、さまざまなものが存在します。システムにアクセスするためのパスワードは基本的には/etc/passwd(最近は/etc/shadow)にありますが、SambaやApacheのベーシック認証、APOPなどを使用する場合は/etc/passwdとは別のファイルで独自に管理されます。パスワードへの攻撃と対策パスワードはどのようにして破られるのでしょうか。以下のようなことがその原因として考えられます。総当たり攻撃パスワードは文字の組み合わせです。その組み合わせをすべて試せば、どれかは正解になります。パスワードに設定できるASCII文字95種で、例えば4文字のパスワードを設定すると8000万以上の組み合わせが考えられます。8000万以上というと十分にみえるかもしれませんが、最新のコンピュータでは毎秒800万件近くの組み合わせを検証できるため、ものの十数秒でパスワードを破られてしまいます。パスワードを8文字まで増やすと、6600兆もの組み合わせになります。総当たりで正解を見つけようとすると、単純計算で20年以上の時間が必要になります。総当たり攻撃よりも効率よくパスワードを破る方法として、辞書攻撃があります。パスワードに使われそうな単語を集めた辞書をpasswdプログラムと同じ暗号化アルゴリズムで暗号化し、それらを比較することでパスワードを解析します。総当たりや辞書攻撃からパスワードを守るには、簡単に破られるパスワードを設定しないことが原則となります。具体的には、以下の項目について考える必要があるでしょう。辞書攻撃に弱い記憶できない文字列パスワードを長く、複雑にし過ぎると覚えられない。すると、逆にデスクトップ上にパスワードのメモを張り付けたりするユーザーが増え、危険になる定期的なパスワード変更パスワードを変更しないと総当たり攻撃に弱い盗聴ネットワークサービスの多くは、それ自身暗号化機能を持っていません。FTP、Telnet、POP3など、パスワード認証を伴うネットワークサービスは、アカウント/パスワードを平文のままネットワークに流してしまいます。平文のアカウント/パスワードは、盗聴ツールを使えば非常に簡単に見ることができます。盗聴からパスワードを守るには、ワンタイムパスワードの利用やデータの暗号化が考えられます。安易に他人にパスワードを教えてしまうことや、パスワードを覚えようとせず、メモをディスプレイに張っているユーザーの存在は悩みの種の1つです。パスワードの大切さをユーザーに認識させる必要があります。ユーザーに対してデータの大切さを教育する必要があります。パスワードの定期的な変更を強制する手段を提供しましょう。パスワード変更を強制する有効期限パスワードに有効期限を設定することもできます。これは、/etc/shadowで管理されています(LDAPなどで管理することも可能です)。/etc/shadowの各行には、「:」(コロン)で区切られた9つのフィールドが存在します。使用されていないこれらの値はvipwコマンドで編集するか、あるいはchageコマンドで設定可能です。Inactive(パスワード期限切れ後、アカウントをロックするまでの日数)を指定できます。[1969-12-31]:chageコマンド実行例また、以下のオプションを利用すると、対話形式ではなく直接設定変更が可能です。この書式が使えるのはrootユーザーのみです。パスワードを変更したくないユーザーが、パスワードを一時変更した後、もう一度元のパスワードを使用することを防ぐ効果がある。「0」を指定すると、ユーザーはいつでもパスワードを変更できる-Mパスワードの最大有効日数-d(1970年1月1日から)パスワード最終更新日までの日数。「YYYY/MM/DD」という書式でも指定できる-E(1970年1月1日から)アカウントがロックされて使用できなくなるまでの日数。「YYYY/MM/DD」という書式でも指定できる-I有効期限後、アカウントがロックされるまでの日数。「0」を指定すると、この機能が無効になる-Wパスワードの変更が必要になる前に警告を出す日数また、/etc/login.defsによって上記項目の一部のデフォルト値を設定できます。それぞれPASS_MIN_DAYS、PASS_MAX_DAYS、PASS_WARN_AGEに対応しています。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。