방금 계정에 로그인한 사용자가 어떤 인증방식을 사용하고 있는지 확인할 수 있는 방법이 있나요?
누군가가 키 파일 대신 비밀번호를 사용하는 경우 로그인 후 경고를 인쇄하고 싶습니다.
물론 한 가지 해결책은 SSH 로그를 확인하는 것입니다. 하지만 이를 수행하는 더 좋은 방법이 있습니까? 로그 찾기는 로그 크기와 이 정보를 수집하는 데 사용하는 방법에 따라 성능에 영향을 미칠 수 있습니다.
우리는 SUSE와 Ubuntu를 사용하고 있습니다.
답변1
키 항목에 지시문을 추가하여 authorized_keys
해당 키를 사용하는 세션 환경에 값을 추가할 수 있습니다. 이것은에서 온 것입니다SSHD문서:
환경="이름=값"
이 키를 사용하여 로그인할 때 이 문자열이 환경에 추가되도록 지정합니다. 이러한 방식으로 설정된 환경 변수는 다른 기본 환경 값을 재정의합니다. 이 유형의 여러 옵션이 허용됩니다. 환경 처리는 기본적으로 비활성화되어 있으며 통과되었습니다.사용자 환경 허용옵션.
따라서authorized_keys 항목은 다음과 같습니다.
environment="SSHKEY=bob_key" ssh-rsa AAAAB3NzaC...iQ== bob@bobspc
사용자의 .bashrc가 실행될 때 SSHKEY 변수의 존재 여부는 해당 특정 키가 인증에 사용되는지 여부를 나타냅니다.
이것은 분명히 보편적인 해결책은 아닙니다. 이 지시문을 사용하여 모든 Authorized_keys 파일의 모든 키 항목을 주석 처리해야 합니다. 사용자에게 자신의 .bashrc
, authorized_keys
또는 .ssh/rc
파일을 변경할 수 있는 권한이 있는 경우 확인을 중단할 수 있습니다.
답변2
쉘은 사용자가 인증하는 방법을 모르거나 신경쓰지 않습니다. 및 를 sshd
통해 구성된 경우 메시지는 구성 가능한 위치(syslog/rsyslog)에 기록되므로 이러한 로그(있는 경우)를 확인하여 사용자 인증 방법을 확인해야 합니다.SyslogFacility
LogLevel
다음 로그를 살펴보세요.
... sshd[...]: Accepted keyboard-interactive/pam for $USER from ... port ...
또는
... sshd[...]: Accepted publickey for $USER from ... port ...
비밀번호(키보드 상호작용)를 사용할지, 키 인증을 사용할지 결정합니다.
sshd 로그를 집계하고 최근 비밀번호를 통해 로그인한 사용자에게 별도의 보고서(이메일을 통해?)를 보내는 것을 고려할 수 있습니다.
답변3
OpenSSH의 최신 버전(내 생각에는 7.6부터 시작)에서는 구성 옵션을 허용합니다 ExposeAuthenticationMethods
. 로 설정하면 pam-and-env
사용된 인증 방법에 대한 정보가 포함된 환경 변수 SSH_USER_AUTH 세트를 얻을 수 있습니다. 다단계 인증을 사용하는 경우 여기에는 여러 값이 포함될 수 있습니다. 기본 설정(이전 OpenSSH 버전과 일치)은 입니다 never
. 즉, sshd_config를 변경할 수 없거나 이전 OpenSSH 버전을 실행하는 경우 로그 스캔이나 다른 방법을 사용해야 합니다.