SSH 호스트 키가 예기치 않게 변경되는 것 같습니다.

SSH 호스트 키가 예기치 않게 변경되는 것 같습니다.

/etc/ssh/sshd_configUbuntu 12.04 테스트 서버에서 Puppet을 사용하여 새로운 기능을 출시했습니다 . 구성은 다음 줄을 제거했다는 점을 제외하면 이전 구성과 정확히 동일합니다.

HostKey /etc/ssh/ssh_host_ecdsa_key

나는 그때부터 상자에 연결하려고 할 때 유사하지만 다양한 오류가 많이 발생한다는 것을 알았습니다.%호스트 이름%변경되었으며 해당 IP 주소에 대한 키가%IP 주소% 변함없어요."

내 컴퓨터가 이전에 기본적으로 ECDSA 키를 사용하고 있었는데 지금은 사용할 수 없기 때문이라고 생각했습니다. 그래서 해당 줄을 다시 SSH에 추가 sshd_config하고 다시 시작했습니다.

문제가 완전히 해결되지는 않았고, 그 이후로 계속해서 문제에 부딪히고 있습니다. 여러 번, 어쩌면 며칠 연속으로 서버에 연결할 수 있을 것입니다. 그러다가 갑자기 호스트 키가 변경되었다는 오류가 발생하기 시작하고 서버가 인증을 위해 내 공개 키를 받아들이지 않습니다.

잠시 동안 문제를 일으키고 다른 위치에서 연결하면 갑자기 내 공개 키로 다시 연결할 수 있고 더 이상 중간자 가능성에 대한 오류가 발생하지 않는 것 같습니다. 공격.

며칠 전에 호스트 키 3개를 모두 재생성하려고 했습니다(이를 제거하고 실행하여 dpkg-reconfigure openssh-server다시 생성했습니다). 예상대로 연결하기 전에 이전 키를 제거하고 새 키를 수락해야 했습니다. 그때는 해결되었을지도 모른다고 생각했는데, 이제 문제가 다시 발생했습니다.

마지막으로 다시 생성한 이후 로 호스트 키를 수정한 것이 없습니다 /etc/ssh/. 따라서 자주 연결할 수 없게 만들고 공개 키가 작동하지 않게 한 다음 결국 새 키를 수락하고 모든 것이 다시 잘 작동하게 만들 수 있습니다. 잠시 동안?

작동하지 않는 경우(호스트 키 변경에 대한 오류가 발생하고 서버가 공개 키 수락을 중지하는 경우) 서버의 /var/log/auth.log. 이로 인해 때로는 다른 컴퓨터에 부딪힐 수도 있다고 생각하게 되지만 DNS 항목이 정확하고 항상 동일한 IP 주소를 반환하기 때문에 이것이 어떻게 가능한지 모르겠습니다.

답변1

해당 메시지를 받게 되는 세 가지 일반적인 이유가 있습니다.
확률의 대략적인 순서는 다음과 같습니다.

  1. 호스트 키를 직접 변경했으며 클라이언트 시스템에서 이를 지우거나 업데이트하지 않았습니다.
    이것이 가장 일반적인 상황입니다. 키 파일을 체크섬하고 변경되지 않았는지 절대적으로 확인하세요.

  2. 이전과 다른 키 유형을 제공(또는 요청)하도록 SSH 구성을 변경했습니다.
    예를 들어 이전에는 RSA 또는 DSA 키를 원했지만 이제는 ECDSA를 사용합니다. 이것이 "키 변경"입니다.
    이 경우 새 키를 확인하고 수락하십시오(또는 원하는 것이 아닌 경우 변경을 취소하십시오).
    (상황 2에 해당하는 것 같습니다. 변경 사항을 취소하고 sshd를 다시 시작한 다음 예상대로 작동하는지 확인하세요. 새 키를 수락하지 않은 경우 변경 사항을 취소하면 오류가 사라질 것입니다.)

  3. 누군가
    불쾌한 일을 하고 있습니다. SSH가 경고하는 중간자 공격이 추악한 모습을 드러냈습니다. 누군가가 귀하의 개인 키를 훔치거나 귀하가 거의 확실히 원하지 않는 다른 작업을 수행하기 위해 귀하의 통신을 가로채려고 적극적으로 시도하고 있습니다.


1을 제거하고 2를 하지 않았다고 확신하는 경우, 그렇지 않다는 것을 증명할 수 있을 때까지 3을 가정하는 것이 마땅합니다. 그 의미는로그인하지 마세요. -- 사용자가 크고 거대한 경고 배너를 무시하고 키를 공격자에게 넘겨주면 세상의 모든 SSH 보안이 도움이 되지 않습니다.

귀하와 귀하의 서버 사이의 채널을 조사하고, 로그인을 시도하는 동안 (알려진 양호한 터미널에서) 서버의 연결 로그를 확인하십시오. 여기에서 공격을 실행하는 방법이 너무 많아서 모두 열거할 수 없습니다. 가능한 대응책과 탐지 전략이 있지만, 사람들은IT 보안분명히 뭔가 아이디어가 있을 거예요.

답변2

가능하다면/테스트/디버그를 위해:

  • 호스트 이름 대신 IP를 사용하십시오(확인하기 위해)
  • 네트워크에 동일한 IP(고정 IP를 가진 다른 호스트에서 사용했던 IP를 DHCP에서 제공)를 가진 여러 시스템이 있습니까?
  • 컴퓨터가 DHCP를 사용하는 경우 IP가 무작위로 변경될 수 있습니다(부팅 순서 등). 아마도 지금 다른 호스트에 연결을 시도 중일 수 있습니다. 비밀번호 인증을 활성화하고 어디에 도착하는지 확인하세요.
  • 클라이언트 cat /home/username/.ssh/known_hosts에서 중복 키가 있지만 ips/호스트 이름이 다른 행을 찾습니다.

예를 들어:

192.168.56.3 ecdsa-sha2-nistp256 AAAAE2...fPfFAyoGSVAvs=
192.168.56.4 ecdsa-sha2-nistp256 AAAAE2...fPfFAyoGSVAvs=

관련 정보