SSH 호스트 키를 롤오버하는 방법은 무엇입니까?


17

2048 비트 키를 곧 단계적으로 제거하는 것이 권장되므로 ssh 서버를 2048 비트 RSA 키에서 더 큰 키로 업그레이드하려고합니다.

새 키를 생성 한 후 다음과 같이 sshd 구성에 추가했습니다.

HostKey / etc / ssh / ssh_host_rsa_key             (이전 2k 비트 키 우선) 
HostKey / etc / ssh / ssh_host_rsa4096_key         (새로운 큰 키 2 위 )

다시 시작한 후 sshd호스트에 ssh'd했는데 식별 변경 경고가 표시되지 않지만 새로운 내용도에 캐시되지 않습니다 ~/.ssh/known_hosts. 줄을 반대 순서로 넣으면 식별 변경 경고가 나타납니다. 마찬가지로 ed25519 키를 추가 할 때 순서에 관계없이 클라이언트는 알려진 호스트 파일에 새 키를 추가하지 않습니다.

이것은 SSH 호스트 키 롤오버를 불가능하게 만드는 것처럼 보입니다. 보안에는 일반적으로 키 업그레이드가 필요하다는 점을 고려하면 실제로는 그렇지 않습니다.

키를 바꾸면 모든 클라이언트가 ssh-keygen -R이전 키를 제거한 다음 새 키를 수동으로 확인하고 수락해야합니다. 그러나 특히 많은 클라이언트가 연결되어 있거나 관리하지 않는 경우에는 큰 고통입니다 모든 고객. 말할 것도없이, 클라이언트를 관리하지 않으면 실제로 호스트 키를 확인하지 않고 Y를 누르는 가능성이 매우 높습니다. 따라서 보안을 개선하려는 시도가 실제로 사용자를 열게 될 것입니다. 대신 중간 공격.

SSH 호스트 키 업그레이드를 수행 할 수있는 방법이 있습니까? 즉, 클라이언트는 새로운 보안 키를 배워야합니다 (또한 사용되지 않는 키를 배우십시오). 그리고 호스트 키를주지 않으면 서 중간자 경고를 변경했습니다.


이것 좀 봐주세요 . 현재 원하는 것에 대한 솔루션을 제공하지는 않지만 향후 최종 목표를 달성하는 데 도움이 될 수 있습니다.
rda

답변:


14

호스트 키 순환 은 OpenSSH 6.8부터 지원됩니다 (클라이언트 및 서버 모두이 버전에서 지원을 추가 함).

따라서 프로세스는 다음과 같이 작동해야합니다.

  • 기존 키 HostKey newkey뒤에있는 옵션을 사용하여 새 키를 생성하고 추가 합니다./etc/ssh/sshd_config
  • 재시작 sshd
  • 클라이언트는 UpdateHostKeys yes구성에서 (전역 또는 호스트별로) 설정해야합니다.
  • 연결하는 클라이언트는 모든 새 키를 가져옵니다
  • 몇 시간 (개월?) 후에 이전 키를 제거 sshd_config하고 다시 시작할 수 있습니다.sshd
  • 클라이언트 (전환 기간 동안 연결된)에는 이미 새 키 (이전의 유일한 문제인 이전 키는 제거되지 않음)가 있으며 MitM 공격 경고가 표시되지 않습니다.

충분한 새 클라이언트가 새 키를 선택할 수 있습니다. 이 기능은 기본적으로 활성화되어 있지 않습니다. 아마도 새로운 기능이므로 곧 보안 고려 사항을 보여 주었을 것입니다. 그러나 요즘에는 사용하는 것이 좋습니다.


-4

sshd는 항상 첫 번째 줄을 사용하므로 삭제 한 다음 sshd를 다시 시작하십시오.


1
무서운 호스트 키가 경고를 변경했습니다. 클라이언트가 새로운 키를 배우도록하고 이전 키를 단계적으로 제거함으로써이를 피하려고합니다.
derobert

네 말이 맞아 한 번에 2 개의 다른 키를 사용할 수 없습니다. SSL은 TLS가 아닙니다. 변경하는 키 추가 기능은 없습니다.
Ipor Sircer

4
SSL도 TLS도 아닙니다. 이 프로토콜은 여러 호스트 키를 지원합니다. 예를 들어, 모든 사람이 RSA와 DSA 키를 모두 사용 했었습니다. 이제는 일반적으로 ED25519, ECDSA 및 RSA 키입니다.
derobert
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.