Bash 기록이 IP 및 사용자 데이터를 다시 쓰는 이유

Bash 기록이 IP 및 사용자 데이터를 다시 쓰는 이유

나는 다음과 같이 HISTTIMEFORMAT을 사용합니다.

HISTFILESIZE=4000
HISTSIZE=4000
USER_IP="`echo $SSH_CLIENT | awk '{ print $1}'`"
USER_FIO=($USER_RYBAV $USER_TROVL)
HISTTIMEFORMAT="%d/%m/%y %T $USER_IP:$USER_FIO | "
export HISTTIMEFORMAT

그리고 .ssh/authorized_keys에서

environment="USER_TROVL=torvalds.linux" ssh-rsa AAAAB3N....
environment="USER_RYBAV=rybafing.valing" ssh-rsa AAAAB3....

1 rsa로 로그인하면 기록에 들어갑니다.

  178  22/07/22 16:48:07 10.100.19.204:torvalds.linux exit
  179  22/07/22 16:48:12 10.100.19.204:torvalds.linux lsblk 
  180  22/07/22 16:48:14 10.100.19.204:torvalds.linux history

2 rsa로 로그인하면 :

  178  22/07/22 16:48:07 10.100.19.204:rybafing.valing exit
  179  22/07/22 16:48:12 10.100.19.204:rybafing.valing lsblk 
  180  22/07/22 16:48:14 10.100.19.204:rybafing.valing history
  181  22/07/22 16:48:18 10.100.19.204:rybafing.valing exit
  182  22/07/22 16:48:30 10.100.19.204:rybafing.valing lsblk 

.bash_profile의 $USER_FIO가 다른 키와 환경의 연결에서 다시 작성되는 것을 어떻게 볼 수 있습니까?

사용자 로그인이 다시 작성되지 않기를 바랍니다.

  178  22/07/22 16:48:07 10.100.19.204:**torvalds.linux** exit
  179  22/07/22 16:48:12 10.100.19.204:**torvalds.linux** lsblk 
  180  22/07/22 16:48:14 10.100.19.204:**torvalds.linux** history
  181  22/07/22 16:48:18 10.100.19.204:rybafing.valing exit
  182  22/07/22 16:48:30 10.100.19.204:rybafing.valing lsblk 

답변1

.bash_history감사 로그 파일 로 사용하려는 것 같습니다 .

기록 bash은 감사 로그가 아닙니다. 이는 사용자가 이전 명령을 기억하고 반복하는 데만 도움이 되도록 설계되었으며 단일 세션 내에서도 완료된 작업에 대한 신뢰할 수 있는 기록으로 사용되지 않습니다.

bash셸 세션이 시작되면 기록 파일을 읽습니다. 세션 중에 기록을 RAM에 보관하고 세션이 끝나면 파일에 다시 기록합니다. 쉘 옵션을 설정하지 않았기 때문에 histappend쉘은 각각의 새로운 명령에 대해 한 줄을 추가하는 대신 전체 파일을 다시 작성합니다. 모든 기록 타임스탬프는 기록 파일에 쓸 때 내부 Unix 타임스탬프 형식에서 사람이 읽을 수 있는 날짜로 변환되므로 변경으로 HISTTIMEFORMAT인해 과거 세션에 속한 기록 행을 포함하여 모든 기록 행에서 타임스탬프 형식이 변경됩니다.그렇기 때문에 귀하의 목적에 적합하지 않습니다 bash.HISTTIMEFORMAT

"좋은" SSH 세션을 사용하여 로그인한 다음 두 번째 "악" 세션을 사용하여 로그인하고 "악" 세션에서 작업을 수행한 다음 먼저 "악" 세션에서 로그아웃한 다음 "좋은" 세션에서 로그아웃하는 경우 , 결과 bash기록 파일 "악한" 세션에 대한 명령이 전혀 표시되지 않을 수도 있습니다. 쉘 설정에 따라 명령 앞에 공백 문자를 추가하여 기록 파일에서 명령을 생략할 수 있습니다.bash기록 파일이 감사 로그로 사용하기에 적합하지 않은 이유는 다음과 같습니다.

다른 셸에서는 다른 방식으로 이 작업을 수행하지만 셸 기록 파일을 감사 로그로 사용하는 것은 여전히 ​​좋지 않습니다.사용자는 기록 파일의 내용을 조작할 수 있습니다.

sudo공유 계정에서 누가 무엇을 했는지 추적해야 하는 경우 등을 통해 공유 계정에서 제한된 명령 세트만 허용하는 것이 더 안정적입니다. 사용자가 공유 계정에서 셸을 실행하도록 허용해야 하는 경우 세션 레코더를 설정해야 할 수도 있습니다. 최신 버전에서는 sudo이를 수행할 수 있습니다. log_inputlog_output에서 확인하고 네트워크를 통해 다른 호스트에서 해당 세션 기록을 수신할 man 5 sudoers수도 있습니다.man 8 sudo_logsrvd

계정에서 이 작업을 수행하려는 경우 root루트 액세스 권한이 있는 사용자가 로컬에 저장된 모든 로그를 조작할 수 있다고 가정해야 합니다. 감사 로그 메시지가 생성되면 첫 번째 호스트의 사용자가 액세스할 수 없는 다른 호스트(또는 다른 로깅 메커니즘)로 전송되도록 로깅을 설정해야 합니다.

만약 너라면필요하다신뢰할 수 있는 감사 로그를 위해서는 올바른 감사 로그가 필요합니다. 이렇게 하지 않으면 보안 감사자(또는 법정의 전문 증인)가 로그의 유효성을 쉽게 반박하여 증거로 사용할 수 없게 만들 수 있습니다.

관련 정보