누군가의 SSH 키에 빈 암호가 포함되어 있는지 어떻게 확인할 수 있나요?

누군가의 SSH 키에 빈 암호가 포함되어 있는지 어떻게 확인할 수 있나요?

내 Linux 및 FreeBSD 시스템 중 일부에는 수십 명의 사용자가 있습니다. 직원은 이러한 "ssh 게이트웨이" 노드를 사용하여 다른 내부 서버에 SSH로 연결합니다.

우리는 이들 중 일부가 암호화되지 않은 개인 SSH 키(인증서가 없는 키)를 사용하고 있다는 점을 우려하고 있습니다.암호.이건 나쁘다, 크래커가 이 컴퓨터에서 자신의 계정에 액세스할 수 있게 되면 개인 키를 훔칠 수 있고 이제 이 동일한 키를 사용하는 모든 컴퓨터에 액세스할 수 있기 때문입니다. 보안상의 이유로 모든 사용자는 암호 문구를 사용하여 개인 SSH 키를 암호화해야 합니다.

개인 키가 암호화되지 않았는지(예: 암호 문구가 포함되어 있지 않음) 여부를 어떻게 알 수 있나요? ASCII 보호 키와 비ASCII 보호 키에서 이 작업을 수행하는 다른 방법이 있습니까?

업데이트:

명확히 하기 위해, 컴퓨터에 대한 수퍼유저 액세스 권한이 있고 모든 사람의 개인 키를 읽을 수 있다고 가정합니다.

답변1

음, 빈 암호 문구가 있는 OpenSSH 개인 키는 실제로 암호화되지 않습니다.

암호화됨개인 키는 개인 키 파일에 선언되어 있습니다. 예를 들어:

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,7BD2F97F977F71FC

BT8CqbQa7nUrtrmMfK2okQLtspAsZJu0ql5LFMnLdTvTj5Sgow7rlGmee5wVuqCI
/clilpIuXtVDH4picQlMcR+pV5Qjkx7BztMscx4RCmcvuWhGeANYgPnav97Tn/zp
...
-----END RSA PRIVATE KEY-----

그래서 뭔가

# grep -L ENCRYPTED /home/*/.ssh/id_[rd]sa

트릭을 수행해야합니다.

답변2

이것저것 찾아보았지만 만족스러운 답을 찾지 못했지만, 하나를 구성할 수 있었습니다. 그래서...

작동하면 파일이 업데이트되므로 테스트 중인 키를 가진 사용자가 눈치채지 못하게 하려면 먼저 키를 복사하는 것이 좋습니다. OTOH, 방금 비밀번호 없는 키로 사용자를 잡았으므로 사용자가 알아차리더라도 상관하지 않을 수도 있습니다. :디

$ ssh-keygen -p -P '' -N '' -f ~/.ssh/KEYTEST
Key has comment '/home/rlpowell/.ssh/KEYTEST'
Your identification has been saved with the new passphrase.
$ echo $?
0

$ ssh-keygen -p -P '' -N '' -f ~/.ssh/KEYTEST
Bad passphrase.
$ echo $?
1

답변3

개인 키에 액세스할 수 있는 경우 암호 없이 이를 사용하여 공개 키에 대해 인증할 수 있습니다. 이것이 작동하면 암호가 없다는 것을 알 수 있습니다. 만약 그렇다면, 오류 메시지가 나타날 것입니다.

개인 키에 액세스할 수 없다면 이를 감지할 수 있을지 의문입니다. 암호의 목적은 개인 키를 "잠금 해제"하는 것이며 공개 키와 관련된 기능은 없습니다.

실제로 그렇게 되면 시스템의 보안이 약화될 것입니다. 무차별 대입 공격이나 암호 문구를 해독하려는 기타 공격을 시도하는 데 사용할 수 있는 공개 키를 사용할 수 있습니다.

관련 정보