しかし、もっと興味があるかもしれない解決策があります。それは、ターミナル ロギングです。

しかし、もっと興味があるかもしれない解決策があります。それは、ターミナル ロギングです。

質問を編集して、解決策の想定ではなく目標を伝えます。

  • RHELベースのディストリビューション
  • ルートユーザーは使用されず、パスワードは秘密に保たれます

で実行されるすべてのコマンドはsudoの下に記録されます/var/log/secure。 ユーザーが を使用して root に切り替えるとsudo su/sudo -i、セッションの下で実行されるすべてのコマンドは記録されません。

私の目標は、管理者が何をしているかを監視することです。


ユーザーが次の操作を実行した場合:

alexis$ sudo visudo   # this is logged
alexis$ sudo su       # this is logged
root# visudo          # this isn't logged since it's run under root

コマンドはvisudosuユーザーによって開始されalexis、root で実行されたものとしてログに記録されます。ただし、次のコマンドはすべて、root シェルで root として実行されるため、ログに記録されません。

11月1日 13:28:29 3020m sudo[6906]: アレクシス: TTY=pts/0; PWD=/home/alexis; USER=;コマンド=/bin/su


簡単に言うと、ユーザー(wheelの管理者)がルートシェルに切り替えられないようにしたい誰かがルート シェルを実行したい場合、その人はルートのパスワードを知っている必要があります。

答え1

それは不可能です。最後までお読みください。ユーザーが完全な sudo アクセス権を持っている場合は、いつでも、、を使用したり、いくつかのコマンドを使用して完全なシェル アクセスを取得する独自のスクリプト/プログラムを作成したりできますsudo -i -u rootsudo /usr/bin/bashこれsudo /usr/bin/{ANY_OTHER_SHELL}は簡単です。また、ユーザーが行った構成の変更を元に戻すこともできます。デフォルトのルート シェルを に変更すると、少しわかりにくくなる場合があります/sbin/nologin

[vagrant@eurolinux8-vbuilder ~]$ sudo chsh root -s  /sbin/nologin 
Changing shell for root.
chsh: Warning: "/sbin/nologin" is not listed in /etc/shells.
Shell changed.
[vagrant@eurolinux8-vbuilder ~]$ sudo -i
This account is currently not available.

しかし、パワーユーザーであれば誰でも、sudo を使用して「裸の」bash 呼び出しを使用できます。

[vagrant@eurolinux8-vbuilder ~]$ sudo /usr/bin/bash
[root@eurolinux8-vbuilder vagrant]# 

したがって、アクセスを隠蔽することは/usr/sbin/nologinあまり効果的ではありません。

bash またはその他のシェル構成にスクリプトを追加して、ユーザーが であるかどうかを確認し、や ログアウトなどのrootメッセージを出力することもできます。しかし、もう一度言いますが、パワーユーザーはやなどのものを使用したり、独自の構成を bash にポイントしたりすることができます。要約すると、私の知る限りではそれは不可能です。通常はデーモンのみであるユーザー (httpd など) を使用する場合は、例外的なケース (たとえば、PAM を使用) があるかどうかも確認します。ただし、 がインストールされている場合は も使用できます。おそらく PAM ベースのソリューションがあるのでしょうが、google-fu では見つけられませんでした。対話型アクセスを無効にすることに関心があるため、これも難しいです。別のケース (ルートへのアクセスを完全に無効にする) では、システムが壊れてしまい、リカバリモードで修正する必要があります。Please use sudo--norc--noprofilehttpdsudo -u apache /usr/bin/bash

しかし、もっと興味があるかもしれない解決策があります。それは、ターミナル ロギングです。

端末の履歴を知りたいのであって、アクセスを完全に制限したいのではありません。その間、完全な管理者アクセス権を持つユーザーはログを削除できることを知っておく必要があります。そのため、念のため、rsyslog またはその他のログ ソリューションを使用して、ログを別のサーバーに配置する必要があります。

RHEL ベースのディストリビューションを使用している場合は、次の内容を読んでください。 https://www.redhat.com/sysadmin/terminal-logging

答え2

PAM への変更を元に戻します。変更は必要ありません。

代わりに、 を使用してvisudoファイルを編集し、および/または/etc/sudoersで始まる行をコメント アウトします。これにより、それらのグループに属するユーザーは を使用できなくなります。%wheel%sudosudo

変更を書き出す前に、自分用の行を追加する必要があります。そうでない場合は、有効な root パスワード (suなしの場合sudo) があるか、または root 権限を取得するための他の手段があることを確認してくださいsudo

関連情報