0

ssh を使用してログインするリモート サーバーがあります。新しいパスワードを含む passwd を使用して誰かがユーザー パスワードを変更したときに、(bash スクリプトを使用して) 電子メールで通知を受ける方法はありますか?

/etc/pam/passwd に関係していると推測していますが、トリガーとフラグがどうあるべきかは完全にはわかりません。

これは、たとえば、「友人」にアクセス権を与え、彼らが私のアカウントから私をロックアウトすることを決定した場合に役立ちます。もちろん、私はそれらのために新しいアカウントを作成することもできますが、これは実際的なものというよりも「可能であるべき」タスクです.

4

3 に答える 3

2

まずはドープスラップ

この質問で思い出すルールがあるのですが、それは何ですか?そうそう...

パスワードは絶対に誰とも共有しないでください。

これもルールとよく合います。

電子メールで何か秘密を送信しないでください。

怒鳴ってごめんなさい。秘密が漏洩する可能性は、それを知っている人の数の 2 乗であるというセキュリティのルールがあります。私の結果は次のとおりです。

if ( people_who_know_secret > 1 ) {
     It ain't a secret any more
}

Unix では、システム管理者であるすべての権限を持つ root でさえ、パスワードを知りません。

さらに悪いことに、パスワードをメールで送信したいと考えています。電子メールは決して安全ではありません。それは通常、少し興味のある人なら誰でも覗き見ることができる Aether を介して送信されるプレーンテキストです。

方法 1: ユーザーがパスワードを知らなくても SSH を使用できるようにする

SSH を使用しているため、SSH には秘密鍵/公開鍵と呼ばれる、ユーザーを検証するための代替メカニズムがあることを知っておく必要があります。システムによって異なりますが、公開鍵と秘密鍵のペアを作成します。ログインしたいシステムと公開鍵を共有しますが、秘密鍵は非公開にしておきます。

sshリモート マシンが公開鍵を取得すると、そのシステムのパスワードを知らなくても、そのシステムにログインできます。

正確なメカニズムはマシンごとに異なり、2 つの異なる ssh プロトコルがあることは役に立ちません。そのため、それを機能させる方法はシステムごとに異なります。Linux および Mac では、 ssh-keygenコマンドを使用して公開鍵と秘密鍵のペアを生成します。

デフォルトでは、 はandssh-keygenというファイルを生成します。最初のものはあなたの公開鍵です。自分のマシンとログインしたいマシンの両方で実行します。$HOME/.ssh/id_rsa.pub$HOME/.ssh/id_rsassh-keygen

ログインしているマシンで、 というファイルを作成し、$HOME/.ssh/authorized_keys公開鍵をコピーしてこのファイルに貼り付けます。友達にも公開鍵を送ってもらい、それもファイルに貼り付けます。各公開鍵は、ファイル内で 1 行を占めます。

すべてがうまくいけば、あなたとあなたの友人の両方がssh、パスワードを求められることなくそのリモート マシンにログインできるようになります。公開鍵は対応する秘密鍵と一致する必要があるため、これは非常に安全です。そうでない場合、ログインできません。つまり、他のユーザーが公開鍵を見つけたとしても、そのリモート システムにログインすることはできません。

あなたとあなたの友人は、パスワードを共有することを心配することなく、そのシステムにログインできます。

方法 2: より良い解決策: SUDO を使用する

これを行うもう 1 つの方法は、sudoを使用して、友人が特定の点であなたのように振る舞えるようにすることです。Sudo には、実際にアカウントを共有するよりもいくつかの利点があります。

  • SUDO の使用はすべてログに記録されるため、追跡可能です。何か問題が発生した場合、誰が責任を負うべきかを知っています。
  • ユーザーが SUDO としてできることを制限できます。たとえば、友達はあなたと同じように特定のコマンドを実行する必要があり、それ以外は何も実行する必要はありません。この場合、/etc/sudoers友人がその特定の 1 つのコマンドのみを実行できるようにファイルで指定できます。友達がコマンドを実行するだけでよいか、またはそのコマンドを実行するために友達にパスワードの入力を要求するかを指定することもできます。

Ubuntu Linux および Macintosh では、root パスワードがロックされているため、root としてログインできません。root として何かをする必要がある場合は、自分自身を管理者として設定し (自分自身をwheelグループに入れることであると思います)、sudo必要な管理者機能を実行するために使用します。

Sudo の大きな欠点は、セットアップがより複雑であり、マシンでの管理者アクセスが必要なことです。


SSH を使用して公開/秘密鍵を設定してみてください。機能させるには微調整が必​​要かもしれませんが、機能すると美しいです。さらに良いことに、リモート コマンドを実行sepして、あるマシンから別のマシンにファイルをコピーするために使用できます。すべてパスワード プロンプトを表示する必要はありません。これは、シェル スクリプトを記述して作業を実行できることを意味します。

ところで、リモート シェルを に設定するという卑劣なトリックがあります/bin/false。そうすれば、そのシステムにログインすることはできません -- を使用しても、と を使用しsshてリモート コマンドを実行し、システム間でファイルをやり取りすることができます。sshsep

于 2012-04-11T18:29:22.327 に答える
1

個人用パスワードは、ユーザー自身のみが知っていると想定されています。root ユーザーでさえそれらを知ることは想定されていないため、暗号化されて保存されます。もちろん、root ユーザーはそれらを復号化するための十分なアクセス権を持っていますが、原則は同じです。

「友達」にアクセス権を与える場合、彼らは適切な権限を割り当てます! 彼らを root ユーザーにしないでください。また、あなたも root ユーザーになるべきではありません。そうすれば、あなたの「友達」はあなたのパスワードを変更することができなくなります。

passwd ファイルと shadow ファイルを絶対に監視する必要がある場合は、 iwatchをインストールしてください。次に、/etc/passwd および /etc/shadow ファイルを監視するように設定します。それらが変更された場合、ファイルを復号化し、誰かに電子メールを送信するスクリプトを実行します。コピーを保存して比較すると、誰が変更したかさえわかります。電子メールには全員のパスワードが含まれているため、平文でインターネットを経由しないように、おそらく電子メールも gpg する必要があります。システム上の他のユーザーは、彼らがいるディストピアの世界に動揺することに注意してください.

根がその土地の法則だからといって、1984 年に生きたいというわけではありません。

于 2012-04-11T18:23:29.023 に答える
-1

いくつかの種類を試してください:

alias passwd='passwd && echo 'Alert! Alert! Alert!' | mail -s 'pass change' alert@example.com'

あなたには十分なはずです:)

それが主流すぎると考える人のための別の可能な解決策alias)):

/etc/shadow1)たとえば 1 分ごとにファイルをチェックする cron ジョブを作成できます。ファイルが変更されると、警告メールが送信されます。ここで最も簡単な方法は、md5 チェックサムを作成することだと思います

2) /usr/bin/passwd を /usr/bin/passwd.sys に移動し、/usr/bin/passwd.sys && echo 'Alert! Alert! Alert!' | mail -s 'pass change'その場所でスクリプトを作成できます。そして、はい、この方法もユーザーによって発見され、こすり洗いされる可能性があります:)

于 2012-04-11T16:31:33.000 に答える