가능한 한 빨리 2048비트 키를 단계적으로 폐지하는 것이 권장되므로 SSH 서버를 2048비트 RSA 키에서 더 큰 키로 업그레이드하려고 합니다.
새 키를 생성하고 다음과 같이 sshd 구성에 추가했습니다.
호스트 키 /etc/ssh/ssh_host_rsa_key (이전 2k 비트 키가 우선 적용됩니다) 호스트 키 /etc/ssh/ssh_host_rsa4096_key (새로운 더 큰 키 초)
재부팅 후 sshd
호스트에 ssh를 실행하면 ID 변경 경고가 표시되지 않지만 새 ID도 캐시되지 않습니다 ~/.ssh/known_hosts
. 줄을 역순으로 입력하면 ID 변경 경고가 표시됩니다. 마찬가지로 ed25519 키를 추가하면 어떤 순서로 입력하든 클라이언트는 알려진 호스트 파일에 새 키를 추가하지 않습니다.
이는 SSH 호스트 키 롤오버를 불가능하게 만드는 것처럼 보이지만 보안을 위해 종종 키 업그레이드가 필요하다는 점을 고려하면 이것이 사실이라고 믿기 어렵습니다.
키를 교환할 수 있다는 것을 알고 있으며 각 클라이언트는 ssh-keygen -R
이전 키를 삭제하기 위해 실행한 다음 새 키를 수동으로 확인하고 수락해야 합니다. 그러나 이는 특히 많은 클라이언트가 연결되어 있거나 관리하지 않는 경우 정말 고통스럽습니다. 모든 고객입니다. 말할 것도 없이, 클라이언트를 관리하지 않으면 클라이언트가 실제로 호스트 키를 확인하지 않고 그냥 Y를 누를 가능성이 높습니다. 따라서 보안을 강화하려는 시도로 인해 실제로 중간자 공격에 노출될 수 있습니다. - 중간자 공격과 반대입니다.
SSH 호스트 키를 업그레이드할 수 있는 방법이 있나요?즉, 클라이언트는 더욱 안전한 새 키를 배워야 합니다(그리고 오래된 키는 배우지 않기를 바랍니다). 그리고 호스트 키를 제공하지 않고 중간자 경고가 변경되었습니다.
답변1
호스트 키 순환OpenSSH 6.8부터 지원됩니다(클라이언트와 서버 모두 이 버전에서 지원을 추가했습니다).
따라서 프로세스는 다음과 같아야 합니다.
- 옵션
HostKey newkey
(기존 키 뒤)을 사용하여 새 키를 생성하고 추가합니다./etc/ssh/sshd_config
- 재시작
sshd
- 클라이언트는
UpdateHostKeys yes
구성(전역 또는 호스트별)에서 이를 설정 해야 합니다. - 연결된 클라이언트는 모든 새 키를 얻습니다.
- 일정 시간(개월?) 후에 이전 키를 삭제
sshd_config
하고 다시 시작할 수 있습니다.sshd
- 전환 중에 연결된 클라이언트에는 이미 새 키가 있으며(이전 키는 삭제되지 않으며 이것이 여기서 유일한 문제임) MitM 공격 경고를 표시하지 않습니다.
충분히 새로운 고객이 새 키를 얻을 수 있습니다. 이 기능은 기본적으로 활성화되어 있지 않습니다. 아마도 매우 새로운 기능이고 매우 빠르게 밝혀진 몇 가지 보안 문제가 있기 때문일 것입니다. 하지만 지금은 사용해도 괜찮을 것 같습니다.
답변2
sshd는 항상 첫 번째 줄을 사용하므로 삭제하고 sshd를 다시 시작하세요.