最低限 UNIX / Linux [I]

利用者が守るセキュリティ (パスワードについて)

■ パスワードのお話し ■

たった一人のパスワードがばれるだけで世界中の人に迷惑がかかります.
まずは基本をお勉強.

こんなものをノゾいてみると…弱いパスワードはシステムを破られる原因の TOP10 に入っている!
FBI: The Twenty Most Critical Internet Security Vulnerabilities (October 7, 2002)

■ 危険なパスワード ■

パスワードは決して他人に教えてはいけないし, すぐにばれてしまうような安易なものもつけてはいけません. またときどき変えることも重要です. パスワードの管理は単に自分のアカウントの保護だけではなく, 他のユーザーやネットワーク管理者に迷惑をかけないためにも必要なのです. 以下のようなパスワードは絶対につけてはいけない です.
参考例:高山歌織, ログイン名 kaoruu, 札幌市台場在住, 電話 011-706-0000の場合.

  1. ログイン名, 自分の名前, 関係者の名前
    →kaoruu, takayama
  2. 電話番号や生年月日, 住所, 車種など個人情報から推測出来るもの.
    →011706-0, daiba-sap
  3. 上記から簡単に作れるもの
    →Kaoruu, Ktakayama
  4. 上記に数字や記号を追加しただけのもの
    →kaoruu01, 1takayama, kaoru!
  5. 上記の一部を「sを$に」「oを0に」「iを1に」「lを1に」などの単純な規則で変えたもの.
    ex)→ka0ruu, $app0r0
  6. 人名, 辞書にのっている単語 (英和問わず), コマンド, 固有名詞, それらの羅列
    →kuramoto, flower, aozora, sudo-s, salomon, canada
  7. 上記の繰り返しや逆綴
    →uuroak, rewolf
  8. 全部数字, 全部同じ文字
    →11111111,aaaaaaa

これらはすぐばれます. なぜなら上記の情報を手がかりに自動的にパスワードを 盗むソフトが出回っているからです. 暗号化されているパスワードの解読は難しいけど, 疑わしいパスワードを 片っ端から暗号化して一致するかどうか調べてみることは, 実は簡単なのです.

…こーんなパスワードつける人いないでしょ, と思うあなた.
いるんです. ほんとに.

■ 良いパスワードとは? ■

「無意味で, しかし自分は忘れないような」パスワード.
  1. 関連の無い単語同士を記号でつなげるのはかなり危険だが, 間に & や * などの非 ASCII 文字が入るならすこしだけましになる.
    dog and snow
    →dog%snow
  2. 気に入った文章や詩などの頭文字を並べてみる.
    Boys be ambitious ! -- W. S. Clark.
    →Bba!wsc
    Tokaino kojimano isono shirasunani warenakinurete kanito tawamuru
    →tkiswkta
  3. パスワードには出来る限り「大文字と小文字」「記号」「数字」を混在させる.
    Bba!wsc
    →B6a!*wsc
    tkiswkta
    →tK1$Wkta

■ 同じパスワードをつけてはいけない! ■

1人で複数のパスワードを保有する場合は珍しくありません.

例えば, 専攻ネットワークサーバーの利用者は, 少なくとも2つパスワードを設定します. それはメールサーバーおよび Web サーバーへのログイン用のパスワードです. また, アカウントとは別に, ホームページ用とメール読み出し用のパスワードも多くの利用者に必要となります.

このような, 2つ以上のパスワードは, 必ずそれぞれ異なるように設定しなくてはいけません. これは, 不幸にも何かの拍子にパスワードの1つが盗まれた際, 被害の拡散を食い止めるためです.

■ パスワードはどのようにばれるか ■

あるユーザーのパスワードを推測などして盗み取ることをパスワードクラックといいます.

表 1: 総当たりパスワードクラックにおける推測時間 (UNIX MAGAZINE 1995.2)

長さ小文字
26 文字
大文字
26 文字
数字
10 文字
記号
32 文字
推測時間
6   maspar1 分
6  ma83ar6 分
6  masPAR1 時間
6ma8:AR30 時間
8   stenbolt10 時間
8PL+16?as31 年

■ より知りたい方へのおまけ: ユーザー情報 ■

ユーザー情報は以下のファイルに書き込まれています.

[1] /etc/passwd ファイル

/etc/passwd には以下のような内容が書き込まれています.

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:100:sync:/bin:/bin/sync
games:x:5:100:games:/usr/games:/bin/sh
man:x:6:100:man:/var/catman:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
list:x:38:38:SmartList:/var/list:/bin/sh
keikei:x:1000:1000:Kuramoto Kiyoshi:/home/keikei:/bin/bash

1行に1ユーザーの情報が記述されています. 個々のユーザーの情報として, コロン(:)で区切られた7つのフィールドに, 次のような内容が左から順に書き込まれています.

  1. ユーザー名
    ユーザーの login 名. これはアカウント名とも呼ばれ, 8文字までの英小文字を用いて表されます.
    例)keikei

  2. パスワード
    かつて暗号化されたパスワードが書き込まれていた場所. このファイルと同名の passwd コマンドで各ユーザーがパスワードを登録すると, この部分に書き込まれました.
    現在はセキュリティを考慮し, パスワードの情報は, アカウントを持っているユーザーなら誰でも見ることの出来る passwd ファイルではなく, root のみ閲覧可能な shadow ファイルに書き込まれます.
    例)昔:ODmNoe3rpqcWE(暗号化されている), 今:x .

  3. ユーザー ID
    ユーザーの識別番号. 0 から 65535 までの値を選ぶことが出来ます. システムはこの数値を参照してユーザーを識別するので, 他のユーザーと重複しないように注意します. また 0 は root の番号なので一般ユーザーには使用しません. Linux のデフォルト(特に変更しなかった場合)では 501 番以降が与えられます.
    例)1000

  4. グループ ID
    ユーザーの所属するグループ番号. 複数のグループに属する場合は主たるグループを記述します. Linux のデフォルトでは 100 番(users)が与えられます. 登録方法によっては, ユーザー名と同じ名前のグループ名が作成されることもあります. 番号とグループ名の対応は /etc/group にリストアップされており, 新たにグループを作った場合, このファイルに追加します.
    例)1000

  5. gecos
    コメント用フィールド. ユーザーの本名等を書いておきます.
    例)Kuramoto Kiyoshi

  6. ホームディレクトリ
    ユーザーのホームディレクトリを絶対パスで記述します. 慣習として login 名と同じディレクトリ名が用いられます. ホームディレクトリに関しては後で学習します.
    例)/home/keikei

  7. ログインシェル
    ログイン時に起動されるシェル. SUN OS のデフォルトは /bin/sh . Linux では /bin/bash . シェルについては後で学習します.
    例)/bin/bash

[2] /etc/shadow ファイル

/etc/shadow には以下のような内容が書き込まれています. (因みに, 以下の暗号化されたパスワードは参考書から引用したものであり 復号化してもメリットはありません. )

addie:ODmNoe3rpqcWE:10886:0:99999:7:::0
adam:kHTsizRZqOpqE:10907:0:99999:7:::0
addison:iJMp94cZHbJ26:10910:0:99999:7:::0
adon:zK1kwbbc6.IeM:10905:0:99999:7:::0
samson:fM77gWFKHu4DU:10889:0:99999:7:::
bob:LOZNf7d9Xn6Rc:10910:0:99999:7:::0
david:YTpjdEsdAMFJ2:10928:0:99999:7:::0

1行に1ユーザーのパスワード情報が記述されています. 個々のユーザーのパスワード情報として, コロン(:)で区切られた9つのフィールドに, 次のような内容が左から順に書き込まれています. なお, このファイルは root の権限をなくして閲覧することはできません.

  1. ユーザー名
    ユーザーの login 名. 同じ物が /etc/passwd ファイルに記述されている必要があります.
    例)samson

  2. パスワード
    暗号化されたパスワードが書かれています.
    例)fM77gWFKHu4DU

  3. 最終パスワード変更日時
    1970年1月1日からパスワード最終変更日時迄の日数です.
    例)10889

  4. パスワード変更不能日数
    パスワード変更が出来る様になるまでの日数です.
    例)0

  5. パスワード変更要求迄の日数
    パスワードを変更しなくても良い日数です.
    例)99999

  6. パスワード期限満了警告日数
    パスワードが無効となるまでに, "ユーザにパスワードが無効となりかかっている"との警告を出す日数です.
    例)7

  7. アカウント無効までの日数
    パスワードが無効となってから, アカウントが不能となり使用できなくなるまでの日数です. 上のサンプルでは設定されていません.

  8. アカウント期限満了の日付
    1970年1月1日からアカウント使用不能となる迄の日数です. 上のサンプルでは設定されていません.

  9. 将来の使用に予約
    将来的に何か情報を追加するようシステムが変更された場合に, その新規情報を書き込むために空けてあります. 0 を指定します.

[3] /etc/group ファイル

/etc/group には以下のような内容が書き込まれています.

root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:lp
mail:x:8:
news:x:9:
uucp:x:10:
proxy:x:13:
kmem:x:15:
dialout:x:20:
fax:x:21:
voice:x:22:
cdrom:x:24:
floppy:x:25:
tape:x:26:
audio:x:29:
nogroup:x:65534:
keikei:x:1000:
sugiyama:x:1005:
dongury:x:1007:

/etc/passwd ファイル同様, 1行に1グループの情報が記述されています. 個々のグループの情報として, コロン(:)で区切られた4つのフィールドに, 左から順に, 「グループ名:グループのパスワード (現在は使われていない) :グループ ID の数値:グループに属するメンバー全員のユーザー名 (個々のユーザー名はコンマで区切られる)」の形で書かれています.


最終更新日: 2002/10/17(高山歌織) Copyright © 2002 inex