web-dev-qa-db-ja.com

マシンのsuを無効にする

特定のユーザーのみにsuを許可する方法はありますか(Sudoにvisudoを使用するなど)。

この理由は、rootアカウントのシンプルな(弱い)パスワードを保持し、su/Sudoがpub/privateキーを使用してマシンにログインすることしかできないアカウントを持つことです。

そうすると、他のすべてのアカウントは、rootとして、またはsuを実行できるアカウントとしてsuすることができなくなります。

9
verhogen

うん、「ホイール」グループのトリックはLinuxでも利用できます。PAMを設定するだけで、ホイールメンバーだけがsuを実行できます。

Debianでは、/etc/pam.d/suのホイールラインのコメントを外す必要があります

これは間違いなくすべてのサーバーで最初に行うことです。そうでなければ、どのWebサーバー/ハッキングもルートハックにつながる可能性があります。

14
Benoît

「su」の制御に関係なく、rootの弱いパスワードはばかげています。ユーザー 'root'が制限されたマシンルームのコンソールでのみログインできる場合でも、ユーザー 'root'に弱いパスワードを設定することは許可しません。

「su」を完全に無効にし、すべてに「sudo」を使用することをお勧めします。無効化とは、次のいずれかを意味します。

  • 「su」へのアクセスを制限するシステム固有の手段(BSDのグループ「wheel」トリック、またはLinuxの同等のものなど)を悪用する。これには正式な基準がないことに注意してください。たとえば、POSIXは「su」の存在を義務付けていません。
  • それを除く (rm -f /bin/su)。
  • 実行許可ビット(chmod o-x /bin/suまたはchmod go-x /bin/su)。
  • Setuid許可ビット(chmod u-s /bin/su)。

'su'を削除するか、許可ビットを削除することによる 'su'の無効化に関する残りの問題は、一部のシステムスクリプトがsuの存在に依存している可能性があることです。そのための明確な解決策はありませんが、スクリプト環境では 'su'がパスワードの入力を求め、プロンプトが嫌われるため、それらは一般に数が少なく、はるかに少ないです。 「su」が使用されるもう1つの場合は、「root」がコマンドを実行して別のユーザーになるときです。これは、setuidビットを削除することでサポートされます(ユーザーrootはそれを実行できますが、他のユーザーはこれを有効に実行できません)。パブリックおよび場合によってはグループの実行権限も削除することで、これを強化できます(chmod u-s,go-rwx /bin/su)。

システム固有の手段を使用していない場合は、十分に注意してください。これを本番環境に入れる前にテストしてください。

6

システムがPAMを使用している場合は、/etc/pam.d/suに同様のものを挿入することにより、suを適切に無効にすることができます。

# This allows root to su without passwords (normal operation)
auth sufficient pam_rootok.so

# Disable all other uses of su
auth requisite  pam_deny.so

# [rest of file]
4
Sam Morris

FreeBSDでは、グループ「wheel」のユーザーのみがsuを許可されています。

どのOSを使用していますか?

3
mad_vs

/etc/sudoersファイルを編集して、Sudoを使用できるユーザーとそのユーザーが実行できる操作を制御できます。シェルを生成できるプログラム(シェルエスケープ)を許可すると、ユーザーは何でもできるようになります。

詳細については、mansudoersページを参照してください。

まず、suとSudoはまったく異なるコマンドです。

Sudoを使用すると、単一のコマンドをroot(または指定されている場合は別のユーザー)として実行でき、その動作は/ etc/sudoers

suは、シェルをルート(または指定されている場合は別のユーザー)として実行します。

私がお勧めできること-強力なrootパスワードを残し、root権限を必要とするすべてのユーザーを/ etc/sudoersに配置します( this の記事を確認してください)。

あまり推奨されないもう1つのアイデアは、suラッパースクリプトを使用することです。

0

マシンが使用する認証に応じて、/ etc/pam.d/suを編集できます。または、システムがpamを使用しない場合は、suへのアクセス権を持つユーザーまたはグループのルールを含むファイル/ etc/suauthを作成できます。ルートとして。

0
slibah

私はあなたが把握したことがよくわからないことを言っている他の人々のことを繰り返し述べたいと思います。すべてのユーザーに対してsuコマンドへのアクセスを無効にすると、ユーザーは自分のsuのコピーを持っている場合でも、別のユーザーアカウントに切り替えることができなくなります。これは、ユーザーがコマンドを実行してUIDを変更できるようにするには、suコマンドでroot suidビットを設定する必要があるためです。非常に強力なrootパスワードを設定し、すべてのユーザーに対してsuコマンドを無効にし、root権限を付与したいユーザーにSudoアクセスを付与する方がはるかに良いでしょう。

Sudoアクセス権を持つユーザーが他のユーザーとパスワードを共有し、rootアクセス権も与えられることを恐れているようですが、これは実際には解決できない問題です。公開鍵/秘密鍵もセットアップしている場合、特権ユーザーは常にコンピューターに座ることができます。それはあなたがそのユーザーを信頼しているときにのみ、ユーザーに管理者権限を与えることができるということになります。

0
bknobbs