SSH 키 인증이 비밀번호 인증보다 나은 이유는 무엇입니까?


45

이것은 개념적으로 기술적 인 질문이 아닙니다. SSH 키에 사용 된 암호화가 일반 암호보다 훨씬 강력하다는 것을 알고 있지만 왜 더 안전한 것으로 이해하지 못합니다.

내가 읽은 대부분의 자습서는 암호 인증 대신 SSH 키 인증을 사용하는 것이 좋습니다. 그러나 사전 이해 된 클라이언트 컴퓨터에 액세스 할 수있는 사람은 누구나 서버에 연결할 수 있다는 것을 이해합니다. 즉, SSH 키가 제공하는 보안 수준은 실제 보안 수준만큼 강력합니다. 클라이언트 기계.

예를 들어, 전화기에 SSH 키를 설정하여 집 컴퓨터에 연결하는 경우 전화를 잃어버린 경우 누군가 잠금을 해제하면 집 컴퓨터에 연결할 수 있습니다. 그런 다음 가정용 컴퓨터에서 휴대폰 키를 제거 할 수 있지만 클라이언트 장치가 분실 / 손상 될 때까지 취약합니다.

내가 잘못 이해 했습니까, 아니면 그 유효한 우려입니까?


10
암호가 필요한 키를 모두 수행하십시오. 그렇게하면 하나가 아니라 두 가지를 식별해야합니다. 또한 손실 된 키를 매우 쉽게 무효화 할 수 있으며, 더 많은 제어를 위해 여러 개의 승인 된 키를 가질 수 있습니다.
Phoshi

2
이것은 아마도 보안으로 옮겨 져야합니다.

10
@DKGasser : 아닙니다. 여기서는 완전히 유효한 질문입니다. 다른 SE 사이트로 무언가 옮길 있다고해서 반드시 그렇지는 않습니다 .
Wuffers

4
@DKGasser : 그것은 거기 완벽하게 유효한 질문이다, 해당 사이트로 이동합니다. 그러나 여기서도 유효한 질문이므로 마이그레이션 할 이유가 없습니다. 이 질문이 여기서 주제로 이루어 졌다면 그렇습니다. 그러나이 사이트의 주제에 관한 것이므로 마이그레이션해서는 안됩니다.
Wuffers

3
그리고 SSH 키는 절대로 네트워크를 거치지 않습니다. 원격 서버는 암호와 달리 네트워크를 통해서만 전송 될뿐만 아니라 원격 서버로 전송되는 키를 절대 얻지 못합니다. 다음에 어떤 암호를 사용해야하는지 잘 모르겠다면 다른 계정에서 사용 된 암호를 사용해보십시오! 그 서버로 어떤 암호를 보냈습니까 ???
9mjb

답변:


40

SSH 서비스가 비밀번호 기반 인증을 허용하는 경우, 인터넷에 연결된 SSH 서버는 봇넷이 사용자 이름과 비밀번호를 추측하려고 밤낮으로 망치게됩니다. 봇넷은 정보가 필요하지 않으며 인기있는 이름과 인기있는 비밀번호를 사용해 볼 수 있습니다. 암호가 qwerty123 인 john이라는 많은 사람들이 있습니다. 다른 것 외에도 이것은 로그를 막습니다.

SSH 서비스가 공개 키 인증 만 허용하는 경우 공격자는 서버에 저장된 공개 키에 해당하는 개인 키 사본이 필요합니다. 그들은 무작위 공격을 할 수 없으며 사용자에 대한 사전 지식이 있어야하며 SSH 서버의 인증 된 사용자의 PC에서 개인 키를 훔칠 수 있어야합니다.

개인 키가 종종 긴 암호 문구로 보호된다는 사실은 이차적으로 중요합니다.

최신 정보:

의견에서 지적했듯이 경험 한 것처럼 SSH 서비스를 포트 22에서 높은 번호의 포트로 옮기면 로그에 표시되는 무단 로그인 시도 횟수가 크게 달라집니다. 이것은 가치가 있지만 나는 그것을 모호함에 의한 보안의 형태로 간주합니다 (거짓의 보안 감각). 조만간 봇넷은 느리게 은밀한 포트 스캔을 구현하거나 의도적으로 대상이 될 것입니다. 준비하는 것이 좋습니다.

개인 키를 보호하기 위해 항상 긴 암호 문구를 사용합니다. 더 쉽게 분실하거나 도난 당할 수있는 모바일 장치에서 이것이 중요하다고 생각합니다.

또한 http://xkcd.com/538/

보안


7
공개 키 인증은 연결하려는 봇으로 인해 로그가 막히는 것을 제외하고 +1입니다. 이를 막으려면 SSH 서버를 높은 포트 (예 : 22 대신 9876)에서 실행하십시오. 그들이 당신을 때리고 싶다면 먼저 포트
캔을 타야

3
당신은 로그 크기를 농담하지 않습니다-내 / var / log / secure는 메가 바이트 의 로그인 시도에서 킬로바이트 (내 로그인 레코드 만 사용)로 이동했습니다.
John C

2
+1 흥미롭게도, 10 년 전과 같은 암호 기반 인증으로 실행했습니다. 롤 .. 물론 공개적으로 노출 된 ssh 포트는 절대로 포트 22가 아닙니다. 그들이 할 수있는 포트 ?? 좋은 정보, 감사합니다.
제임스 T 스넬

2
포트를 변경하는 대신 @ExUmbris fwknop (단일 패킷 인증 및 포트 노킹) 사용을 고려해야 합니다. SPA의 노킹을 통해 포트에 대한 액세스 권한을 부여받지 않은 한 포트를 어디에서나 열 수 있다는 것을 허용하지 않으면 nmap을 사용하여 포트를 찾으려고 시도 할 수 없습니다. 그것을 이용하십시오. 모호함을 통한 단순한 보안보다 훨씬 낫습니다.
aculich 2009 년

@aculich 포트 변경은 "불명확 한 보안"이 아닙니다. 내가하고있는 일은 로그가 경고로 채워지는 것을 막는 것입니다. 그러나 SPA를 사용하여 보안을 향상 시킬 수있는 올바른 방법이 있습니다 .
Ex Umbris

8

논리는 암호보다 SSH 키 조합이 훨씬 많기 때문에 추측하기가 훨씬 어렵다는 것입니다. SSH 키를 사용하면 암호 인증을 비활성화 할 수 있습니다. 즉, 인터넷을 통한 대부분의 자동화 된 공격은 쓸모가 없습니다.

물리적 보안과 관련하여 암호를 저장하거나 분실하거나 도난당한 경우 장치에서 암호화되지 않은 SSH 키를 사용하는 것에는 차이가 없습니다. 당신이 가진 유일한 장점은 아무도 암호를 가지고 있지 않으며 이론적으로 모든 장치가 서로 다른 SSH 인증서를 가지고 있는지 확인하여 휴대 전화에 대해 하나만 비활성화 할 수 있다는 것입니다.

SSH 키를 암호로 보호하는 것도 가능하다고 생각합니다.


그러나 sshd에 대한 암호 무차별 시도는 감지하고 (예 : fail2ban에 의해) 보호 할 수 있지만 개인 키를 도난당한 사람은 컴퓨터 (또는 클러스터)가 허용하는 한 빨리 암호를 시도 할 수 있습니다. 그들. 이것은 여전히 큰 공격 은 아니지만 합리적인 fail2ban 정책에 비해 확률을 크게 개선했습니다.
Xiong Chiamiov


1

키보드가 "어깨에 닿아"모니터링되어 암호가 손상 될 수도 있습니다. 또한, 여러 위치에서 유사한 암호를 사용하는 것은 취약합니다. 특히 암호가 잠재적 인 키로거가있는 보안이 취약한 컴퓨터에서 사용되는 경우 특히 그렇습니다.

컴퓨터를 도난당한 경우 암호화되지 않은 키를 하드 디스크에서 읽을 수 있으므로 암호를 사용하여 암호화하십시오.

컴퓨터가 맬웨어에 의해 손상된 경우, 당신은 상관없이 박제됩니다.-누군가가 암호화 된 키를 얻고 암호를 키로그 할 수 있습니다.


1
참고 : 프로그래밍 방식으로 (예 : 스크립트에서) 사용하는 경우 암호로 키를 암호화 할 수 없습니다.
TheStoryCoder
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.