2022 年度 OSS リテラシー 3 : Linux におけるパスワード管理
パスワードの保管方法
登録されたユーザ情報は, /etc/passwd と /etc/shadow に登録される. /etc/shadow に暗号化されたパスワードが, それ以外の情報は /etc/passwd に 書かれる.
これらのファイルを確認してみよう. grep コマンドを使うことで, 第一引数に 与えた文字列が含まれている行だけを抜き出すことができる.
なお,ユーザ名 hogehoge は自分のアカウント名 (学生番号) に読み替えること.
$ sudo -s # less /etc/passwd ...(略)... # grep hogehoge /etc/passwd hogehoge:x:1001:1001:SUGIYAMA Ko-ichiro,,,:/home/hogehoge:/bin/bash # less /etc/shadow ...(略)... # grep hogehoge /etc/shadow hogehoge:$6$AAAAAA$XXXXXXXXXXXXXXXXXXXXXXXXX:17439:0:99999:7::: # less /etc/group ...(略)... # grep hogehoge /etc/group hogehoge:x:1001:
/etc/shadow はパスワード情報が含まれているので, 一般ユーザには読めない ファイルパーミッションになっている. /etc/passwd や /etc/group は一般ユー ザでも読める.
# ls -l /etc/passwd /etc/group /etc/shadow -rw-r--r-- 1 root root 814 10月 19 09:33 /etc/group -rw-r--r-- 1 root root 1718 10月 19 09:34 /etc/passwd -rw-r----- 1 root shadow 1097 10月 19 09:33 /etc/shadow
John The Ripper で脆弱性の高いパスワードの探索
John The Ripper で 簡単なパスワードを設定している人がいないか確認することもできる. John The Ripper のようなツールを悪用すると辞書式攻撃, ブルートフォース攻撃となるので法に触れます. あくまで「自分のサーバのユーザ管理」のためだけに使ってください (もちろん,ユーザに告知した上で).なお,使用は自己責任です.
試しに簡単なパスワードに変えてみる (hogehoge は自分のユーザ名に置き換えること)
# passwd hogehoge 新しい パスワード: <-- 入力しても表示されません 新しい パスワードを再入力してください:
/etc/passwd と /etc/shadow を 1 つのファイルにまとめる
# unshadow /etc/passwd /etc/shadow > hash.txt
hash.txt を編集して,簡単なパスワードをつけたユーザだけにする.
デフォルトの辞書を使って,暗号化されたパスワードから生のパスワードを推測する. 12345678 くらいのパスワードであれば,1 分半程度で推測されてしまう. また,Debian11 では yescrypt でパスワードがハッシュ化されているので, "--format=crypt" をオプションで付ける必要がある.
# apt install john # john --wordlist=/usr/share/john/password.lst --format=crypt hash.txt 12345678 (hogehoge) 1g 0:00:01:24 100% 2/3 0.01186g/s 61.97p/s 61.97c/s 61.97C/s 123456..pepper # john -show hash.txt
確認が終わったら,パスワードを元に戻す.
# passwd hogehoge 新しい パスワード: <-- 入力しても表示されません 新しい パスワードを再入力してください:
hash.txt を削除する
# rm hash.txt
ログアウト
# exit $ exit
課題
- 以下のファイルの書式を調べよ.
- /etc/passwd
- /etc/group
- /etc/shadow
- /etc/sudoers
- "%sudo ALL=(ALL:ALL) ALL" という記述があるが, 各 ALL の意味を調べなさい.