requirettyを無効にしても大丈夫ですか?


39

Capistranoを使用してデプロイスクリプトを設定しようとしcap deploy:setupています ステップスクリプトでサーバーに接続し、ディレクトリを作成するコマンドを実行しようとしています。その後、エラーが表示されます:msudo: sorry, you must have a tty to run sudo

私のサーバーでrequirettyを無効にするための推奨される解決策があります。https://unix.stackexchange.com/a/49078/26271

私はそれが安全かどうか疑問に思っていますか?

回答:


40

requirettyサーバー上でのセキュリティ上の利点は非常に限られています。非ルートコード(PHPスクリプトなど)が悪用されたrequiretty場合、このオプションは、エクスプロイトコードがを実行して特権を直接アップグレードできないことを意味しますsudo

攻撃者がルートを獲得する別の方法があるかもしれません、そしてもちろん攻撃者はあなたのサイトを改ざんすることができますが、攻撃者にルートを獲得させないことは、異なるユーザーとして実行されている他のサービスが正常に実行し続け、攻撃者が勝つことを意味しますtシステムログを消去できる。ディレクトリの作成のような危険なsudoルールがルールにない場合、これは問題になりません。

さらに—そしてさらに酷いrequiretty— ttyを作成するために、例えばexpectで特権は必要ありません。したがって、オフrequirettyにすることもできます。それ自体では、セキュリティ上の利点はありません。ユーザーによって実行された場合、監査ログの利点は軽度になります(ログは、誰が呼び出したのかsudo、どこから来たのかがわかりやすいためです)。


1
ユーザーがexpect(またはscreen、たとえば)実行できる場合、requirettyセキュリティの観点からは役に立たないということですか?(私はあなたがその文の「
非難

@GeorgesDupéronはい、それだけです。誰でもttyを作成できるため、このrequirettyオプションはだれもsudoを使用することを妨げません。
ジル 'SO-悪であるのをやめる'

3
requirettyユーザーがssh経由でパスワードを要求するsudoコマンドを実行している場合、ユーザーがクリアテキストでパスワードを漏洩するのを防ぐことができます。ユーザーにssh -tを呼び出すように強制するためにあります。
クリスベティ

1
@Chris Betti-なぜssh -tを実施するのに良いことなのですか...?
Rop

当時の私の考えでは、この場合、パスワードの入力を求めるリモートsudoコマンドを実行する場合、コンソールを介してパスワードをクリアテキストで入力するよりも、リモートマシンのaskpassプログラムを活用する方が良いと考えていました。入力したときにパスワードが画面にエコーされる可能性を防ぐこと以外に、セキュリティを強化することができるかどうかは正直正直わかりません。askpassプログラムはttyまたはpseudo-ttyなしでは呼び出されないと考えていたと思います。
クリスベティ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.