/ etc / passwdファイルでメールユーザーのシェルを/ usr / bin / passwdに設定することで、単にSSHで自分のパスワードを変更できるようにする安全な方法はありますか?


4

私は主にメールサーバーとして使われるマシンを持っています。

$ uname -a Linux myhost.com 2.6.32-279.19.1.el6.x86_64#1 SMP 12月水曜日   19 07:05:20 UTC 2012 x86_64 x86_64 x86_64 GNU / Linux

そして私は実際にはマシンにログインしていない(しかし認証とメールの取得のためにそれを使っている)ユーザーが自分のパスワードを変更できるようにしたいと思います。 / usr / bin / passwdを/ etc / shellsに入れて(したがってpasswdコマンドは有効なシェルになります)、次のようにユーザーのシェルエントリを変更します。

someuser:x:557:557:Some User:/home/someuser:/usr/bin/passwd

それから、もし彼らがホストにSSH接続すれば、彼らはこのような何かを得るでしょう:

$ ssh myhost.com
someuser@myhost.comのパスワード:< 現在のパスワードを入力してください >
最終ログイン:2013年9月25日水曜日16:07:35投稿者some-ip
ユーザーsomeuserのパスワードを変更します。
誰かのパスワードを変更する。
(現在の)UNIXパスワード:< 現在のパスワードをもう一度入力してください >
新しいパスワード:< 新しいパスワードを入力してください >
新しいパスワードを再入力してください:< 新しいパスワードをもう一度入力してください >
-passwd:すべての認証トークンが正常に更新されました。
myhost.comへの接続が閉じられました。

それは素晴らしい仕事をします...しかし、それは安全ですか?それを悪用して本物のシェルに侵入する方法はありますか?

ありがとう。

P.S私の環境では、ユーザーがすでにsshを持っていると仮定するのが合理的です - しかし、パスワード変更のための代替手段が単に「より良い」のであれば、私はそれを聞きたいです:)


1
彼らがコマンドを実行するとどうなりますか? ssh myhost.com '/ bin / bash'のように。
Nanzikambe

実行しようとするコマンドはすべてリモートシェルの引数として渡されます(この場合は/ usr / bin / passwd)ので、次のようになります。 passwd: bad argument -c: unknown option。言い換えれば、それは動作しません。
Turvalar

回答:


2

よく知られたプログラム(ssh)にsuidプログラムへのリモートアクセスを許可することは、原則として安全ではありません。 passwdはユーザーIDを設定します、すなわち権限を高めます。 Sshはファイアウォールの管理をリモートユーザーに委任するため(ポート転送など)、慎重に使用する必要があります。 sshdが唯一のリモートアクセスオプションである場合は、サーバーは1台しかなく、このサーバーをパスワードの変更およびメール配信の手段として使用することを主張し、sshdおよびmail onlyのすべてのオプションを制限しあなたが必要とする最低限のサービスを除くすべて:メールとパスワードの変更。

passwdのソースは精査されていますが、Ken Thompson(unixの作成者)がCコンパイラで作成した古典的なログインハックを知っていますか? Ken'sの記事を読む 信頼関係についての考察 誰を信頼するかを決定する。

http://cm.bell-labs.com/who/ken/trust.html


2
実際に質問に答えてみてください。
Daniel Beck

0

私は@ datasmidの答えが好きです、それはいくつかの良い点になります。

私には、あなたがしていることはユーザーにシェルプロンプトを許可して passwd コマンド。

あなたがそれをやって快適であれば、私はあなたがしていることをやるべきではない理由はありません。どちらかといえば、他のコマンドをユーザに簡単に実行させないようにしているので、少し安全です。

から抜け出す方法はないでしょう passwd 以下の場合を除き、コマンドを実行してシェルに passwd いくつかの規定をする exec シェルに入れます。なぜそうなるのかわかりません。あなたはおそらくのためのソースコードに対して検索することができます passwd それはかなり簡単です。

攻撃者が試みることができる1つのことは、彼らがすでにローカルパスワードを持っている場合、バッファオーバーフローすることです。 passwd めちゃくちゃ長い返信を入力して passwd のプロンプトその場合、何でも可能です(XD / NXをサポートし、ヒープアドレスのランダム化を行うCPU上で実行することでリスクを軽減できます)。私は何を知りません passwd その入力バッファを超えた場合はどうなりますが、それが私にとって頭に浮かぶ最初のことです。 passwd setuidプログラムですが、それが発見されると特権を落とすことを私は望んでいます euid 入力をチェックする前は0ではありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.