누군가의 SSH 키에 빈 비밀번호가 포함되어 있는지 확인하는 방법은 무엇입니까?

누군가의 SSH 키에 빈 비밀번호가 포함되어 있는지 확인하는 방법은 무엇입니까?

내 Linux 및 FreeBSD 시스템 중 일부에는 수십 명의 사용자가 있습니다. 작업자는 이러한 "ssh 게이트웨이" 노드를 사용하여 SSH를 통해 다른 내부 서버에 액세스합니다.

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

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

고쳐 쓰다:

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

답변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

개인 키에 액세스할 수 있다면 암호 없이 공개 키를 인증하는 데 사용할 수 있을 것 같습니다. 이것이 작동한다면 비밀번호가 없다는 것을 알 수 있습니다. 있는 경우 오류 메시지가 표시됩니다.

개인 키에 액세스할 수 없다면 이를 감지할 수 있을지 의문입니다. 비밀번호의 목적은 개인 키를 "잠금 해제"하는 것이며 공개 키에는 아무런 영향을 미치지 않습니다.

실제로 이렇게 하면 시스템의 보안이 덜 강화됩니다. 사람들은 공개 키를 사용하여 비밀번호를 해독하려는 무차별 대입 공격이나 기타 공격을 시도하는 데 사용할 수 있습니다.

관련 정보