2014年6月28日土曜日

Linux パスワードのロック


AWSの登場ごろから、ユーザーにパスワードを設定せず
鍵認証でのアクセス方法がスタンダードになってきた気がします。

しかしOS上はsudo等で利用するためパスワードは設定しておきたい所です。
そんな環境でテストを行っているときに、少し怖かったこと。

テストを行う上で、きちんとパスワード認証が弾かれるか、
パスワードではなく鍵認証でログインできるかを確認するために、
パスワードを設定したり、空にしたりしたかったのですが。

いつもパスワードを空にする際には

# passwd -d hogehoge
とやっていたのですが、ふとシャドウファイルを見てみると

# view /etd/shadow
~省略
hogehoge::16248:0:99999:7:::
あれ?「!!」になっていない?

よくよく調べてみると


# man passwd
~省略
あるアカウントのパスワードを直ちに期限切れにしたい場合は、 -e オプションを用いればよい。するとそのユーザは次に
ログインする際にパスワードを変更するよう強制される。 -d オプションを使って、ユーザのパスワードを削除することも
できる (パスワードが空になる)。このオプションは注意して使うこと。これを使うと、そのアカウントはログインにパ ス
ワードを全く必要としなくなり、システムが侵入者に対してオープンになってしまう。


おいおい!
ためしにSSHやFTPしてみたらどんなパスワードでもログインできた!
じゃぁいったいどうしたらよいのか?

パスワードが設定されていない場合、シャドウファイルには「!!」と書かれている
確かに passwd -d では パスワードの項目が空にはなっていても、!!にはなっていない。
ん~あまり直接このファイルを弄るのはスマートでは無い気がする。というか駄目でしょ。

調べてみたら、そもそもパスワードの無効化とか、空にする、という考え方から違った
/etc/shadow のパスワード欄にある「!!」 は パスワードが空という意味ではなく
パスワードが無効化され「ロック」状態ですよという事だった。

確認

# passwd -d hogehoge
hogehoge::16248:0:99999:7:::


# passwd -l  hogehoge
hogehoge:!!:16248:0:99999:7:::

おお!確かに。



# man passwd
-l フラグと -u フラグを用いると、ユーザアカウントをロックしたり、そのロックを外したりできる。 -l オプションを
用いると、パスワードフィールドの値は暗号化された如何なる値ともマッチしなくなり、アカウントは使用不能にな る 。

改めてネット情報を鵜呑みにすることの怖さ、man という基本的なところの大切さを学びました。
今まで・・・考えないようにしておこう。


プロのための Linuxシステム構築・運用技術 (Software Design plus)
中井 悦司
技術評論社
売り上げランキング: 35,867

0 コメント:

コメントを投稿