하지만 여러분이 더 관심을 가질 수 있는 솔루션이 있습니다. 바로 터미널 로깅입니다.

하지만 여러분이 더 관심을 가질 수 있는 솔루션이 있습니다. 바로 터미널 로깅입니다.

솔루션에 대한 가정이 아닌 목표를 제공하기 위해 질문을 편집합니다.

  • RHEL 기반 배포판
  • 루트 사용자는 절대 사용되지 않으며 비밀번호는 비밀로 유지됩니다.

로 실행되는 모든 명령은 sudo아래에 기록됩니다 /var/log/secure. 사용자가 를 사용하여 루트로 전환하면 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루트로 실행됩니다. 그럼에도 불구하고 다음 명령은 모두 루트 셸에서 루트로 실행되기 때문에 기록되지 않습니다.

11월 1일 13:28:29 3020m sudo[6906]: 알렉시스: TTY=pts/0 ; PWD=/홈/알렉시스; 사용자=뿌리;명령=/bin/su


간단히 말해서,사용자(휠의 관리자)가 루트 쉘로 전환하는 것을 원하지 않습니다.. 누군가 루트 쉘을 실행하려면 루트의 비밀번호를 알아야 합니다.

답변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다음과 같은 메시지를 인쇄 Please use sudo하고 로그아웃하는지 확인할 수 있습니다. 그러나 다시 한 번 고급 사용자는 자신의 구성을 bash와 같은 방식으로 --norc사용할 수 있습니다 . --noprofile요약하자면, 제가 아는 바에 따르면 그것은 불가능합니다. 일반적으로 데몬 전용 사용자(예: httpd)를 사용할 때 예외적인 경우(예: PAM 사용)가 있는지도 확인합니다. 그러나 httpd설치된 경우에도 사용할 수 있습니다 sudo -u apache /usr/bin/bash. PAM 기반 솔루션이 있을 수도 있지만 google-fu로는 찾을 수 없었습니다. 또한 대화형 액세스를 비활성화하는 데 관심이 있기 때문에 어렵습니다. 또 다른 경우(루트에 대한 액세스를 완전히 비활성화하는 경우) 시스템이 차단되므로 복구 모드에서 수정해야 합니다.

하지만 여러분이 더 관심을 가질 수 있는 솔루션이 있습니다. 바로 터미널 로깅입니다.

액세스를 완전히 제한하는 것이 아니라 터미널 기록을 알고 싶습니다. 그동안 전체 관리 액세스 권한이 있는 사용자는 자신의 로그를 제거할 수 있다는 점을 알아야 합니다. 따라서 만일의 경우에 대비해 rsyslog 또는 기타 로깅 솔루션을 사용하여 로그를 다른 서버에 저장해야 합니다.

RHEL 기반 배포판을 사용하고 있으므로 다음 내용을 읽을 수 있습니다. https://www.redhat.com/sysadmin/terminal-logging

답변2

변경 사항을 PAM으로 되돌립니다. 당신은 그것들이 필요하지 않습니다.

대신 를 사용하여 visudo파일을 편집 하고 및/또는 /etc/sudoers로 시작하는 줄을 주석 처리하세요 . 그러면 해당 그룹에 속한 사용자는 을(를) 사용할 수 없게 됩니다 .%wheel%sudosudo

변경 사항을 기록하기 전에 직접 한 줄을 추가해야 합니다. 그렇지 않으면 작동하는 루트 비밀번호(with su없이 )가 있거나 루트 권한을 얻기 위해 sudo사용하는 다른 수단이 있는지 확인하십시오!sudo

관련 정보