SSH 호스트 키를 롤오버하는 방법은 무엇입니까? 변경 경고가 표시되지 않지만 새로운 내용도에

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



답변

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

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

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

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


답변

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