it-swarm-ko.tech

누군가의 SSH 키에 빈 암호가 있는지 어떻게 알 수 있습니까?

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

이 사람들 중 일부는 암호화되지 않은 개인 SSH 키 ( 암호가없는 키 를 사용하는 것에 대해 우려하고 있습니다. 크래커가이 컴퓨터에서 자신의 계정에 액세스 할 수있게되면 개인 키를 도용 할 수 있고 이제 동일한 키를 사용하는 모든 컴퓨터에 액세스 할 수 있기 때문에 나쁘다 . 모든 사용자는 암호로 개인 SSH 키를 암호화해야합니다.

개인 키가 암호화되어 있지 않은지 어떻게 알 수 있습니까 (예 : 비밀번호 문구가 포함되어 있지 않은가)? ASCII-armored 키와 비 ASCII-armored 키에 대해 다른 방법이 있습니까?

최신 정보:

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

44
Stefan Lasiewski

빈 암호가있는 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

트릭을해야합니다.

59
codehead

나는 이것을 온통 살펴보고 만족스러운 답변을 찾지 못했지만 하나를 만들 수 있었으므로 ...

이렇게하면 파일이 작동하면 파일이 업데이트되므로 키를 테스트중인 사용자에게 알리지 않으려면 먼저 키를 복사 할 수 있습니다. 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
10
rlpowell

개인 키에 액세스 할 수 있다면 암호없이 암호를 사용하여 공개 키를 인증 할 수 있다고 생각합니다. 이것이 작동하면 암호가 없다는 것을 알고 있습니다. 있는 경우 오류 메시지가 표시됩니다.

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

실제로는 시스템 보안 수준을 떨어 뜨릴 수 있습니다. 공개 키를 사용할 수 있습니다. 공개 키를 사용하면 무차별 대입이나 암호를 해독하려는 다른 공격을 시도 할 수 있습니다.

8
txwikinger