키를 사용하여 SSH 로그인을 구성했는데 제대로 작동합니다. 문제는 키와 포함된 비밀번호를 사용하여 서버에 연결할 때 잘못된 비밀번호를 입력해도 실패한 로그인 시도가 표시되지 않는다는 것입니다. 다음 키 입력을 사용한 로그인 시도 실패가 없습니다.
/var/log/audit/audit.log
또는
/var/log/secure
즉, 별다른 조치 없이 죽을 때까지 비밀번호를 입력할 수 있다는 뜻이다. 키와 비밀번호를 사용하여 실패한 SSH 로그인 시도를 기록하는 방법에 대한 아이디어가 있습니까?
운영 체제는 Red Hat Enterprise Linux Server 버전 7.3(Maipo)입니다.
미리 감사드립니다.
잘못된 비밀번호를 여러 번 입력했을 때 서버에서 발생한 로그는 다음과 같습니다.
Connection from my_ip port 51115 on server_ip port 22
sshd[3639]: Found matching RSA key: 00:12:23 ...
sshd[3639]: Postponed publickey for some_user from ip_address port 51115 ssh2 [preauth]
답변1
서버에 연결하기 전에 키를 열려면 비밀번호를 요구하도록 클라이언트 키를 구성한 것 같습니다. 이는 클라이언트 시스템에서 발생하므로 서버에 기록되지 않습니다.
답변2
기본적으로 SSH 키를 보호하는 비밀번호는 전적으로 클라이언트 문제입니다. ssh-keygen
서버에 연결하지 않고도 비밀번호를 변경할 수 있도록 허용하는 것도 고려해보세요 ( ssh-keygen -p -f id_rsa
). 물론 이를 위해서는 이전 비밀번호를 알아야 하지만 서버에 비밀번호를 입력하고 있음을 암시하지 않고도 추측할 수 있습니다.
즉, 서버에 연결할 때 SSH 클라이언트는 서버에 있는 모든 키를 제공합니다.앞으로키를 해독하려면 비밀번호가 필요합니다. 키를 허용하지 않는 호스트에 연결하면 비밀번호를 묻지 않는다는 점을 알 수 있습니다.
$ ssh -v -v somehost
...
debug1: Offering RSA public key: /...
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 407
debug2: input_userauth_pk_ok: fp blah
debug1: key_load_private_type: incorrect passphrase supplied to decrypt private key
Enter passphrase for key '/...':
기술적으로는 키를 제공하지만 이를 인증에 사용하지 않는 클라이언트를 감지하도록 서버를 수정할 수 있습니다. 그러나 공격자가 인증을 시도하기 전에 키의 암호를 해독하려고 시도할 수 있으므로 이는 도움이 되지 않습니다. 다시 말하지만, 이는 일반 유틸리티에서도 가능합니다. 이것이 바로 런타임에 수행하는 작업입니다 ssh-agent
.
키가 충분하지 않은 경우 현재 버전의 OpenSSH를 사용하면 서버에서도 키를 요구할 수 있습니다.그리고비밀번호. 이것문서이를 예로 사용하면 먼저 키가 필요하고 그 다음 비밀번호가 필요합니다("비밀번호" 또는 "키보드 대화형" 인증 사용).
AuthenticationMethods publickey,password publickey,keyboard-interactive