/bin/su ファイルから SUID が誤って削除されました。

/bin/su ファイルから SUID が誤って削除されました。

本番サーバーです - CentOS 6.1

rootアクセス権を持っていた一部のユーザーは、サーバーにログインして/ bin / suファイルからSUIDビットを削除し、ルートで終了します。これでrootに戻すことはできません。さらに、ルートのSSHアクセスはサーバー上で無効になり、ルートがシステムに直接ログインすることはできません。 rootとしてsuまたはrootとしてsshを実行できないため、/ bin / suファイルにsuidビットを設定できません。 (そしてユーザー間の切り替えにsuを使用することはできません)

何だったのか?

$ ll /bin/su
-rwsr-xr-x. 1 root root 30092 Mar 10  2011 /bin/su

今はどうですか:

$ ll /bin/su
-rwxr-xr-x. 1 root root 30092 Mar 10  2011 /bin/su

ルートに戻すか、SUIDビットを設定する方法はありますか?

メモ:サーバーは年中無休として使用され、ダウンタイムが少し難しいため、ネットワークレスユーザーモードを再起動しないようにします。再起動が可能な場合は、シングルユーザーモードを使用してrootとしてログインし、このビットをリセットします。

創造的な答えを自由にお願いします。テスト環境であなたの答えをテストしてみてください。

答え1

いくつかのオプション:

  • sudo -i、これが最も確実な選択です。
  • sudo -l次に、問題を解決するために使用できるコマンドを見つけます。例:crontab、logrotate、executon yum / rpmなど、ルートで実行されているファイルの編集...
  • コンソールに移動してルートに接続します(これはSSHのみに制限されます)。
  • グラフィックセッションを開きます。一部のディストリビューションには、sudoに依存しないルートツールがあります。また、これらの多くにはアップデートマネージャがあります。提供されたパッケージを再インストールすることもできます。su
  • puppet/chef/ansible/faiなどの構成管理ツールがある場合は、構成をプッシュしてください。
  • アップグレードするファイルを編集できることを確認するには、crontabを確認してください。
  • サーバーが中央認証システム(特にLDAP / nis)に接続されている場合は、高い権限(グループホイールまたはユーザーuid = 0)を持つアカウントを作成します。
  • 仮想サーバーの場合は、シャットダウンしてファイルシステムをマウントして編集します。

いくつかの有用な情報:

  • シングルユーザーモード(red hat)または指定(Debianおよびrhel / CentOS 7)でサーバーを再起動し、init=/bin/sh権限を変更します。
  • サーバーを再起動し、CD/DVD/USB/NetBootでリカバリを有効にするか、インストールおよび編集するだけです。

そして一部は本当に醜いです。

  • システムを損傷する可能性がある脆弱性を見つけてください。

システム管理者が仕事をうまく実行すると、一般ユーザーはこれらの作業を実行できません(ただし、あなたはシステム管理者です)。

答え2

次のことができるグループに属しているとしますsudo

sudo -i

アクセスが許可され、root修理が許可されます/bin/su。使用するユーザーのパスワードはsudoroot パスワードではなく - であることを覚えておいてください。

答え3

質問は、SSH(または同等のもの)がアクセスできる唯一の方法であることを意味します。ユーザー権限を持つプロセスからroot権限を取得する唯一の方法は、または他のサイトローカル代替を使用することsuですsudo。回避策がないと、セキュリティの脆弱性の種類が表示されるため、運が悪くなる可能性があります。

つまり、アクセス権を取得するために再起動するという提案は、どのような形でもコンソールにアクセスできることを意味します。通常、rootはコンソールに直接ログインでき、最初に試すことです(IPMIまたはIP KVMを使用してリモートでログインしますか?)。グラフィックコンソールとシリアルポートの両方を試してみる価値があります。

別のアプローチは、マウントされたまたはマウント可能な外部ファイルシステムを見つけ、ユーザーが実行できるように静的setuid suバイナリを提供することです。

構成管理システム(パペット、シェフなど)がある場合は、まだ実行中であり、バイナリを変更または更新するために使用できます。

実行中のシステムが仮想マシンの場合は、ホスト環境から任意の形式でアクセスできます。 (代わりにホストの場合は、VMのルートアクセスを活用して制御権を取得できます)

次に、最初に再起動せずにシステムに再アクセスするのにどれくらいの時間がかかるかを評価します。それから時間が正しければ、どのコンテンツにアクセスできるか考えてみなければならない。これらのそれぞれを見て、set-uid ビットを修正するか、比較的ランダムな命令を実行する能力を評価します。

  • ユーザーはシステム内のすべてのset-uidバイナリにアクセスできます。
  • ルートとして実行されるすべてのプロセス(使用目的を参照)
  • 基本ストレージシステムと代替アクセス
  • ルートとして実行されるすべてのプロセス(非パッチローカルコード実行の脆弱性を見つける)
  • カーネルバージョン(パッチのないコード実行の脆弱性を探す)

ある時点では、実際にはセキュリティ監査に移行します。

答え4

次のコマンドを使用することもできます。

sudo-s

ルートアクセス権を付与します

関連情報