공유 SSH 키에 대한 사용자 액세스 추적

공유 SSH 키에 대한 사용자 액세스 추적

두 사용자 사이에 공유 SSH 키/(사용자 이름 및 비밀번호)가 있다고 가정하고 이들을 Bob과 Alice라고 부르겠습니다.

Bob은 서버에 연결하고 일부 명령 체인을 실행하여 해당 호스트의 일부 중요한 데이터가 삭제되었습니다.

또한 Alice는 동일한 공유 자격 증명을 사용하여 동일한 호스트에 연결하여 일부 업데이트를 실행합니다.

sshd 인증 로그(/var/log/auth.log)가 있고 이벤트 중에 두 사용자가 모두 연결되었다는 것을 알고 있지만 어떤 사용자(사용자의 IP가 포함되어 있으므로 연결됨)가 해당 이벤트에 책임이 있는지 구별할 수 있는 방법이 있습니까? 이벤트 액션 체인?

답변1

이것이 바로 많은 회사가 인간 계정의 SSH 키 사용을 금지하는 정책을 가지고 있는 이유입니다. SSH 키를 공유하거나 암호를 설정하지 않아 키 자체가 본질적으로 파일의 암호가 되는 경향이 있습니다.

현명한 기업은 보안 제품을 사용하여 SSH 키를 사용할 수 있는 사용자, 해당 키를 사용할 수 있는 위치, 연결 시작 및 종료가 허용되는 위치를 제어합니다.

안전하지 않고 감사할 수 없는 것으로 알려진 행동을 허용하고 사후에 이를 포착하려고 합니다. 가장 좋은 대답은 행동을 완전히 중단하는 것입니다.

SSH 키 사용을 제어하는 ​​데 도움이 되는 동일한 보안 제품을 SSH 세션의 키 입력 로깅에도 사용할 수 있습니다. 이렇게 하면 고유한 로그 이벤트를 캡처하고, 연결의 소스와 대상을 표시하고, 사용자가 입력하는 모든 보기 흉한 키 입력을 결과 출력과 함께 볼 수 있습니다. 물론 이것은 상업적인 솔루션이지만 귀하의 요구에 확실히 부합할 것입니다.

한 가지 가능한 접근 방식은 계정에 로그인할 때마다 고유한 쉘 기록 파일을 사용하는 것입니다. 기본적으로 user.bashrc(또는 이에 상응하는 항목)에 다음과 같이 HISTFILE을 정의합니다.

TIMEST=`date +%Y.%m.%d-%H%M%S`
SOURCETERM=` who am i | awk '{print $5}'`
HISTFILE=.sh_history-$TIMEST"_"$SOURCETERM

이렇게 하면 각 세션에 대해 다음 이름을 가진 고유한 셸 기록 파일이 생성됩니다.

$HOME/.sh_history-2021.09.16-022345_(1.2.3.4)

이는 귀하의 필요에 적합할 수 있지만 사용자가 현명하다면 쉽게 파일을 변경 또는 삭제하거나 다른 기록 파일을 할당할 수 있습니다.

당신은 거의 불가능한 문제를 해결하려고 노력하고 있습니다. 시스템 관점에서 보면 동일한 사용자가 두 번 로그인한 것입니다. 명령, 프로세스, 메모리 등은 UID가 소유하며 동일한 유효한 UID를 가진 다른 사람이 조작할 수 있습니다.

다시 한번 말씀드리지만, 올바른 해결책은 우선 불안전한 행동을 방지하는 것입니다.

관련 정보