Centos7 시스템에서 사용자 활동을 추적하고 싶습니다. 이를 위해 경영진은 다음을 사용하기로 결정했습니다.스크립트그리고스크립트 재생기본적으로 사용자 활동을 기록하고 재생합니다. 디자인 방법에 대해 몇 가지 조사를 했지만 auditd에 의존하는 솔루션은 여기 관리에서 거부되었으며 사용자의 .profile에 스크립트를 넣으면 아래 설명된 것처럼 몇 가지 문제가 발생합니다.
예상되는 동작은 다음과 같습니다.
- 사용자가 SSH를 통해 서버에 로그인하면 스크립트 명령이 생성되고 사용자 활동을 파일에 기록하기 시작합니다.
- 사용자가 서버 작업을 마치면 로그아웃합니다(보통 종료 또는 CTRLD를 입력).
- 스크립트 프로세스가 중지되고 파일이 닫힙니다.
이제 질문은 다음과 같습니다.
내 연구에 따르면 스크립트가 실제로 다른 쉘을 생성하는 것으로 나타났습니다. 따라서 스크립트 script.log를 각 사용자(또는 skel)의 .bash_profile에 넣으면 로그인 후 사용자를 위한 새 셸이 실행되고 사용자는 쉽게 프로세스를 중단하고 실행을 시작할 수 있습니다. 그의 평소 SSH 세션. 사용자가 스크립트 명령으로 생성된 셸을 종료할 때 스크립트가 실제로 사용자를 쫓아내도록 하려면 어떻게 해야 합니까?
스크립트 출력(즉, 사용자 명령)은 sudo가 아닌 사용자가 R/W/E 권한 없이 어떤 작업도 수행할 수 없는 개인 위치에 저장되어야 합니다.사용자 자신에게 권한이 없을 때 사용자가 로그인할 때 높은 권한으로 스크립트를 어떻게 실행합니까?
답변1
강제 명령에는 다음과 같은 옵션이 sshd
있습니다 ForceCommand
.
클라이언트 및 ~/.ssh/rc(있는 경우)에서 제공하는 모든 명령을 무시하고 ForceCommand에서 지정한 명령을 강제로 실행합니다. 명령은 사용자의 로그인 쉘과 -c 옵션을 사용하여 호출됩니다.
이는 쉘, 명령 또는 하위 시스템 실행에 적용됩니다. Match 블록 내에서 가장 유용합니다. 클라이언트가 원래 제공한 명령은 SSH_ORIGINAL_COMMAND 환경 변수에서 찾을 수 있습니다.
그래서 제가 읽은 바에 따르면, ForceCommand
로 설정하면 script
대략적으로 원하는 결과를 얻을 수 있을 것입니다.
감사 추적을 안전하게 유지하기 위한 다중 서버 시스템의 한 가지 솔루션은 시스템 로그에서 학습하고 네트워크를 통해 항목을 다른 물리적 호스트로 보내는 것입니다. 이는 로그가 생성된 후 사용자가 로그에 액세스하는 것을 거의 방지합니다. 다른 모든 것이 실패하면 데몬이 로그를 수집하고 저장하는 localhost의 다른 포트로 로그를 보내도록 무언가를 구성할 수 있습니다. (당연한 방법을 시도한 후에는 bash로 처리해야 하기 script -f /dev/tcp/localhost/8888
때문에 할 수 없으므로 다음과 같은 통신 경로가 직접 /dev/tcp/...
필요할 것 같습니다.mkfifo
맨페이지 예script -f
)