Linux 서버의 원격 사용자로부터 명령 기록 가져오기

Linux 서버의 원격 사용자로부터 명령 기록 가져오기

Linux많은 사용자가 를 통해 액세스할 수 있는 서버(CentOS) 가 있습니다 ssh. 사용자로부터 모든 기록 명령을 받아야 합니다.

  • 날짜: 실행 시간
  • pwd: 실행 가능한 디렉터리
  • 원격 호스트 IP
  • 사용자
  • 주문하다

답변1

이 질문에 대한 대답은 귀하가 찾고 있는 정보와 많은 정보(Linux 배포판, 버전, 애플리케이션, 사용 사례)를 제공하지 않았기 때문에 매우 복잡합니다.

이 문제를 해결하려면 최소한 두 개의 로그 세트(그 이상은 아님)를 결합해야 하며, 이를 위해 사용자 정의 항목을 작성하지 않는 한 시스템을 매일, 매주 또는 매월 감사하는 데 많은 작업이 필요합니다. 이와 같이. 사후에 이 정보를 찾는 방법을 알아보는 것보다 sudoers 파일 관련 문제를 해결하고 사용자를 제어하고 감사하는 방법을 살펴보는 것이 더 나을 것입니다.

/var/log/secure (RHEL/CentOS, Debian의 경우 /var/log/auth.log, 배포 및 설정에 따라 변경)는 사람들이 SSH를 통해 연결할 때와 sudo를 사용하여 명령을 실행할 때 표시되어야 합니다. IP를 찾은 다음 거기에서 연결 기록을 얻을 수 있습니다.

grep '$USER_NAME' /var/log/secure

다음과 같은 출력이 표시됩니다(물론 수정됨).

Nov  1 22:38:41 $HOSTNAME sshd[26732]: Accepted publickey for $USERNAME from $IP_ADDRESS port 51203 ssh2: RSA $HASH
Nov  1 22:38:41 $HOSTNAME sshd[26732]: pam_unix(sshd:session): session opened for user $USERNAME by (uid=0)
Nov  1 22:38:41 $HOSTNAME systemd-logind[471]: New session 3427 of user $USERNAME.
Nov  1 22:38:41 $HOSTNAME systemd: pam_unix(systemd-user:session): session opened for user $USERNAME by (uid=0)
Nov  1 22:46:37 $HOSTNAME sudo:     $USERNAME : TTY=pts/0 ; PWD=$HOME ; USER=root ; COMMAND=/bin/grep $USERNAME /var/log/auth.log
Nov  1 22:46:37 $HOSTNAME sudo: pam_unix(sudo:session): session opened for user root by $USERNAME(uid=0)

따라서 보안/인증 로그에서 IP 주소, 사용자 이름, 연결 타임스탬프, 사용자가 실행한 모든 권한 있는 명령 및 해당 타임스탬프를 이미 볼 수 있습니다.

$USER_NAME을 사용자의 사용자 이름으로 바꾸고 이 명령을 실행하면 타임스탬프 없이 사용자 명령의 전체 기록을 볼 수 있습니다. 또한 실수로 해당 디렉터리가 표시됩니다.

su -c "history" $USER_NAME

사용자가 나에게 이것을 보여주었습니다.

500  exit
501  ls
502  cd Archive
503  ls
504  rm -rf *.NOTREAL
505  cd ../

나는 이 사람(실제로 이것에 대한 실제 예를 얻기 위해 나)이 SSH에 처음 연결할 때 명령 501을 실행했다는 것을 알고 있습니다. 왜냐하면 그 이전 명령은 종료이기 때문입니다(이것은 종료를 사용하는 대신 시간 초과가 발생하기 때문에 나쁜 지표입니다). 그러나 일단 연결되면 Archive 디렉터리로 이동하고 모든 .NOTREAL 파일을 삭제한 다음 상위 디렉터리로 이동합니다.

보안/인증 로그와 사용자 기록에서 찾은 내용을 기반으로 일반적으로 그들이 언제 무엇을 했는지 파악할 수 있지만 상관관계는 느슨합니다. 사용자가 ssh를 통해 연결하는 것과 같은 작업을 수행한 다음 sudo su - 또는 sudo -i를 수행하여 모든 것을 루트로 실행하게 하면 결국 기록이 병합되기 때문에 이것이 더 어려워집니다.

이와 같은 것을 모니터링하려면 권한 있는 사용자 계정, sudoers 파일, 로깅 및 애플리케이션을 설정하는 방법을 실제로 살펴봐야 합니다. 이 문제를 해결하기 위한 아주 기본적인 방법을 제시했지만 최선의 방법과는 거리가 멀고 실제 시나리오에서 정기적으로 사용되지도 않습니다.

관련 정보