某社のメールサーバ兼ネームサーバが不正アクセスをうけ、 ろくでなしどものソウクツと化し、 あげくそこからよそに不正アクセスしようとしたのがよそのサイトにバレて、 そこから幾つかの機関を経由してお知らせの fax が その某社に届いた。
ちょっと調べてみると IRC さう゛ぁ などが起動している模様。 管理者の方に訊いてみると、そんなものを起動した憶えは無いとのことである。
いちいち障害をどけて、ろくでなしを追い出して元に戻すのは、 無駄というかアホクサイ事である。 代打のサーバを作るしかない。 やられちゃったサーバは、他の皆様に迷惑をかけるといけないので、 さっさと電線をひっこぬくことにする。 あとでイジって遊ぼう。
そのサーバには、 200人分のアカウントがある。 これを代打サーバにいっぺんに作成する。 /etc/passwd をもってきといて、 root とか今更追加する必要の無い奴はどけといてから、
for u in `sed -e 's/:.*//g' < ./passwd` do useradd -d /home/$u -p '*' -e 'ひづけ' $u; mkdir /home/$u chown $u /home/$u done
とりあえずこれでアカウントは全部できる。 ただし、パスワードんところに★なので、アカウントはロックされた状態だ。
パスワードを盗まれていると思われるので、 全員、パスワード変更を義務づけることにする。 それまでの一時的なパスワードとして、ランダムな文字列を使う。 これを初期設定パスワードとして、管理者の人に渡すのである。 ロックされたアカウントを作ったのはこのためである。
なんかうまい処理が思い付かなかったので、
cat /dev/urandom | uuencode
した文字列を使うことにする。もっと良い処理はないかねぇ。
passwd コマンドと自動的に対話してくれるプログラムで、初期設定パスワードを 入力することにする。 ただし、password 文字列に ":" は使えないらしいので、 文字列生成時に sed か何かで : をどけといた。
対話的なプログラムに勝手に対話してくれるのは expect というやつだ。 これをインストールすると、 autopasswd というサンプルプログラムがついてた。 ユーザ名とパスワード文字列を引数として与えると、勝手にパスワード変更処理をやってくれるやつである。 2回入力してくれるわけだ。
こいつをまたしてもユーザの数だけ for 文でまわして、パスワードの設定は完了。
パスワードのファイルを印刷して管理者に渡してできあがり。 管理者は、この紙をハサミで切ってユーザに渡すわけ。 expire date は3日ほどに しとくか。
Sat Mar 15 06:31:09 2003 追記:
この記事を公開したら、山田さんから
などのコマンドが存在する旨教わった。 mkpasswd は、ユーザとパスワードのリストを与えれば、 shadow 等のリストを生成してくれるもの。 pwgen は、パスワードジェネレータで、 オプションにより、生成されるパスワードの「憶えにくさ(笑)」をコントロールできる。