ルートパスワードを定期的に変更する方法

ルートパスワードを定期的に変更する方法

異なるルートパスワードを持つ60のシステムがあります。

3ヶ月ごとにパスワードを変更する必要があります。

現在、私は60のシステムに手動でログインし、60の異なるパスワードを考えなければなりません。

これを行う賢明な方法はありますか? Ansibleを使用してこの種の操作を実行できますか?

答え1

これを行う1つの方法は次のとおりです。

  1. ホスト名とプレーンテキストのルートパスワードを含むテキストファイル(*)を作成します。必要なフィールド区切り記号を使用してください。タブも大丈夫です。

    makepasswd理想的には、または同じプログラムを使用してpwgen十分な長さと複雑さのパスワードを生成することです。 IMOでは、今すぐ使用を検討する必要がある最小値は16文字です。長いほど良いです。

    たとえば、にホスト名のリスト(1行に1つ)がある場合は、hosts.txt次のように使用します。

     #!/bin/bash
    
     rm -f passwords.txt
     while read -r host ; do
       printf "%s\t%s\n" "$host" "$(pwgen -r \''`$' -y -c -n 32 1)" >> passwords.txt
     done < hosts.txt
    

    -r(以下に示す一重引用符、バックティック、および$をパスワードに使用するのを防ぐために使用されます。ssh以下に示す一重引用符で囲まれた文字列内の二重引用符コマンドでこれを処理することはPITAになるためです。

    例を実行してください:

     $ ./generate-passwords.sh
     $ cat passwords.txt
     host1   >?Mg^un=-Ipd8ZkY^TUC,_Gf/PAs%=9t
     host2   XS4?oZ@[+U\,(XeYOBcp{E^Q;!]2]ex<
     host3   SfupD}=a\J;}TJqqX.r}Kj;ab>Z|\=S2
    

    このリストが必要です。そうしないと、リモートコンピュータのパスワードが何であるかがわからないためです。

  2. ssh各ホストに移動してchpasswdパスワードを設定するために使用します。リモートシステムのプロセスリストにパスワードがプレーンテキストで表示されないようにするには、使用オプションを使用してopenssl passwdローカルchpasswdシステムのパスワードを事前に暗号化します-e(これは、システムの唯一のユーザーである場合にのみ「安全」です。という単語の定義はかなり制限されています。この例ではハッシュ-6オプションを使用していますSHA-512

     #!/bin/bash
    
     while IFS=$'\t' read -r host pass; do
       enc=$(printf "%s" "$pass" | openssl passwd -6 stdin)
       ssh "$host" "echo 'root:$enc' | chpasswd -e"
     done < passwords.txt
    

本当にシンプルで原始的です。エラーチェックはありません。または録音してください。ただしpwgen、、、opensslなどの既存のツールを使用してchpasswdパスワードを自動的に変更する方法に関する基本的なアイデアを示します。

私は大学の学期ごとに同様のスクリプトを使用して、特定のコンピュータ(メインネットワークから隔離された)へのシェルアクセスを必要とする特定のコースの新入生のためのパスワードを生成しました。リストは印刷され、切り捨てられ、各ユーザーにはIDが公開されたときにパスワードが与えられます。これは完璧ではありませんが、誰もが知っている基本的な「パスワード」を持つよりもはるかに優れています。

明らかに、ほとんどの場合、パスワードをまったく使用せずに認証されたSSHキーを使用してリモートシステムにログインします。ただし、rootパスワードはコンソールにログインするとき(またはBMCまたは他の使用にはまだ便利です)リモートログイン)。 - 施設管理)を通じて緊急状況に対処できます。


(*)このpasswords.txtファイルはプレーンテキストなので、権限とアクセス権限には非常に注意する必要があります。ただし、これは主にこのQ&Aの範囲外です。

chmod 600ファイルを暗号化するには、次の方法を使用することをお勧めします。GPG- 必要なときだけ復号化してください。またgit、何らかの理由で特定のホストでパスワードの更新が失敗した場合(たとえば、その時点でオフラインになった場合)、以前のパスワード履歴を失わないように、暗号化されたバージョンまたは他のリビジョン制御システムを維持することをお勧めします。努力する)

または使用渡すgpgとを組み合わせますgit

関連情報