내 Linux 및 FreeBSD 시스템 중 일부에는 수십 명의 사용자가 있습니다. 직원은이 “ssh gateway”노드를 사용하여 다른 내부 서버에 SSH로 연결합니다.
우리는이 사람들 중 일부는 암호화되지 않은 개인 SSH 키를 (없는 키 사용하는 것이 우려 암호를 . 이것은 나쁜 크래커가이 컴퓨터에서 자신의 계정에 대한 액세스를 얻을 경우, 그들은 개인 키를 훔쳐 지금 액세스 할 수 있기 때문에, 보안상의 이유로 모든 사용자는 개인 SSH 키를 암호로 암호화해야합니다.
개인 키가 암호화되어 있지 않은지 어떻게 알 수 있습니까 (예 : 암호 문구가 포함되어 있지 않습니까)? ASCII-armored 키와 비 ASCII-armored 키에 대해 다른 방법이 있습니까?
최신 정보:
명확히하기 위해 컴퓨터에 수퍼 유저 액세스 권한이 있고 모든 사람의 개인 키를 읽을 수 있다고 가정합니다.
답변
빈 암호가있는 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
트릭을해야합니다.
답변
나는 이것을 온통 살펴보고 만족스러운 답변을 찾지 못했지만 하나를 만들었으므로 …
이렇게하면 파일이 작동하면 파일이 업데이트되므로 키를 테스트중인 사용자에게 알리지 않으려면 먼저 키를 복사 할 수 있습니다. 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
답변
개인 키에 액세스 할 수 있다면 암호 문구없이 공개 키에 대해 인증 할 수 있다고 생각합니다. 이것이 작동하면 암호가 없다는 것을 알 수 있습니다. 있는 경우 오류 메시지가 표시됩니다.
개인 키에 액세스 할 수 없으면이 키를 감지 할 수 없습니다. 암호의 목적은 개인 키를 “잠금 해제”하는 것이며, 공개 키와 관련하여 기능이 없습니다.
실제로는 시스템 보안 수준을 떨어 뜨릴 수 있습니다. 공개 키를 사용할 수 있습니다. 공개 키를 사용하면 무차별 대입이나 암호를 해독하려는 다른 공격을 시도 할 수 있습니다.