質問を編集して、解決策の想定ではなく目標を伝えます。
- 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
コマンドはvisudo
、su
ユーザーによって開始され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 root
。sudo /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
--noprofile
httpd
sudo -u apache /usr/bin/bash
しかし、もっと興味があるかもしれない解決策があります。それは、ターミナル ロギングです。
端末の履歴を知りたいのであって、アクセスを完全に制限したいのではありません。その間、完全な管理者アクセス権を持つユーザーはログを削除できることを知っておく必要があります。そのため、念のため、rsyslog またはその他のログ ソリューションを使用して、ログを別のサーバーに配置する必要があります。
RHEL ベースのディストリビューションを使用している場合は、次の内容を読んでください。 https://www.redhat.com/sysadmin/terminal-logging
答え2
PAM への変更を元に戻します。変更は必要ありません。
代わりに、 を使用してvisudo
ファイルを編集し、および/または/etc/sudoers
で始まる行をコメント アウトします。これにより、それらのグループに属するユーザーは を使用できなくなります。%wheel
%sudo
sudo
変更を書き出す前に、自分用の行を追加する必要があります。そうでない場合は、有効な root パスワード (su
なしの場合sudo
) があるか、または root 権限を取得するための他の手段があることを確認してくださいsudo
。