어느날 갑자기 원격 ssh 서버에 접속하고자 할 때 다음과 같은 man-in-the-middle 공격이라는 메시지를 보여 주면서 접속이 안되는 경우가 있습니다.
[nolinuxer@localhost ~]$ ssh 192.168.0.100
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
e7:d5:ed:52:c1:c5:92:f4:8d:12:0b:d1:df:03:d8:82.
Please contact your system administrator.
Add correct host key in ~/.ssh/known_hosts to get rid of this message.
Offending key in ~/.ssh/known_hosts:1
Password authentication is disabled to avoid man-in-the-middle attacks.
Keyboard-interactive authentication is disabled to avoid man-in-the-middle attacks.
X11 forwarding is disabled to avoid man-in-the-middle attacks.
Permission denied (publickey,gssapi-with-mic,password).
원격 ssh 서버에 처음 접속하여 로그인할 때 인증 과정을 거치게 되는데, 서버로부터 클라이언트는 공개키를 받게 되고, 이 공개키는 사용자 계정의 .ssh 디렉토리에 known_hosts 파일에 다음과 같은 형태로 저장됩니다.
예로 필자의 시스템에서 192.168.0.100 ssh 서버에 접속하였을 때 저장되는 known_hosts의 정보는 다음과 같습니다.
클라이언트가 known_hosts 파일 목록에 있는 서버로 다시 접속하게 될 때 이미 받은 서버의 공개키로 지난 번 접속 시와 같은 동일한 서버인지를 구별하게 되고, 동일한 서버인 경우에는 공개키 설치 여부없이 바로 로그인 과정을 거치게 됩니다. 만일 동일한 서버가 아닌 경우에는 RSA 호스트 키 설치에 관한 메시지가 오게 됩니다.
man-in-the-middle에 대한 의심 메시지를 보여 주면서 접속이 이뤄지지 않을때는 ~/.ssh/known_hosts 파일을 삭제한 후 다시 접속해 보면 접속이 이뤄지게 됩니다. 간단히 known_hosts 파일을 지우고 나서 재접속하게 되면 끝이지만, 여기서 눈여겨 봐야 할 사항은 원격 서버에 접속시 man-in-the-middle 메시지가 나오는 것이 단순히 서버의 정보가 변동되어서 그런 것인지, 진짜 크래킹되어서 그런 것인지를 명확하게 규명해 볼 필요가 있다는 것입니다. 크래킹이 되지 않았다면 큰 의미가 없습니다만, 만일 크래킹의 의심이 있다고 본다면 known_hosts 파일을 삭제한다고 해서 해결될 사항이 아니라, 시스템을 다시 설치해야 하는 큰 난관에 봉착될 수 있습니다.
* Man-In-The-Middle Attack (MITM)
MITM 공격은 서버와 클라이언트 사이에서 도청하듯이 클라이언트의 열쇠글을 가로채서 진짜 서버에 접속하여 크래킹하는 것을 말합니다. 이러한 공격은 일반적으로 DNS 서버를 크랙하여 클라이언트가 접속하는 서버를 크래커 자신의 서버로 접속되도록 하여 계정과 열쇠글을 요구하여 가로채는 방식으로, 크래커는 클라이언트에게 거짓 정보를 주므로써 클라이언트는 아무런 의심을 하지 않도록 하는 공격 수법입니다.
[nolinuxer@localhost ~]$ ssh 192.168.0.100
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
e7:d5:ed:52:c1:c5:92:f4:8d:12:0b:d1:df:03:d8:82.
Please contact your system administrator.
Add correct host key in ~/.ssh/known_hosts to get rid of this message.
Offending key in ~/.ssh/known_hosts:1
Password authentication is disabled to avoid man-in-the-middle attacks.
Keyboard-interactive authentication is disabled to avoid man-in-the-middle attacks.
X11 forwarding is disabled to avoid man-in-the-middle attacks.
Permission denied (publickey,gssapi-with-mic,password).
원격 ssh 서버에 처음 접속하여 로그인할 때 인증 과정을 거치게 되는데, 서버로부터 클라이언트는 공개키를 받게 되고, 이 공개키는 사용자 계정의 .ssh 디렉토리에 known_hosts 파일에 다음과 같은 형태로 저장됩니다.
| 서버도메인, 서버아이피, 공개키형식, 공개키값 |
예로 필자의 시스템에서 192.168.0.100 ssh 서버에 접속하였을 때 저장되는 known_hosts의 정보는 다음과 같습니다.
| no1linuxer.localhost 192.168.0.100 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA3J4FWH9ZCj9u05LfjT4bliP3kziTdoOu8ubl9hja9i+0iOUECcFyBs0YIOwuS6PAkXccF7Fk5ClQ6t0UxkL3MZTkKirbHOSP3KK9SE96HNVs35Vo9k3wJ6143o7f1HJ0Y1GYjpwVu9E4TrWuzh4Cstm+E0vtaAlHKBuPU1JI32K3388HxGbmlB8JDZom0uM+x4Uu/J2dEZkxDFC+L1fZprquvNlgvOrcX13iYw5Fwy+/IlGfj1cTIYkoLzuwjefw9Teddd39YKOFsz8yh6BUfyEov8n3wDVeFVyMiXjQsDmpNfA5V7Hr4XwqVcsSKZ0O4A4/eGumMbEEkhmAvsksBQ== |
클라이언트가 known_hosts 파일 목록에 있는 서버로 다시 접속하게 될 때 이미 받은 서버의 공개키로 지난 번 접속 시와 같은 동일한 서버인지를 구별하게 되고, 동일한 서버인 경우에는 공개키 설치 여부없이 바로 로그인 과정을 거치게 됩니다. 만일 동일한 서버가 아닌 경우에는 RSA 호스트 키 설치에 관한 메시지가 오게 됩니다.
man-in-the-middle에 대한 의심 메시지를 보여 주면서 접속이 이뤄지지 않을때는 ~/.ssh/known_hosts 파일을 삭제한 후 다시 접속해 보면 접속이 이뤄지게 됩니다. 간단히 known_hosts 파일을 지우고 나서 재접속하게 되면 끝이지만, 여기서 눈여겨 봐야 할 사항은 원격 서버에 접속시 man-in-the-middle 메시지가 나오는 것이 단순히 서버의 정보가 변동되어서 그런 것인지, 진짜 크래킹되어서 그런 것인지를 명확하게 규명해 볼 필요가 있다는 것입니다. 크래킹이 되지 않았다면 큰 의미가 없습니다만, 만일 크래킹의 의심이 있다고 본다면 known_hosts 파일을 삭제한다고 해서 해결될 사항이 아니라, 시스템을 다시 설치해야 하는 큰 난관에 봉착될 수 있습니다.
* Man-In-The-Middle Attack (MITM)
MITM 공격은 서버와 클라이언트 사이에서 도청하듯이 클라이언트의 열쇠글을 가로채서 진짜 서버에 접속하여 크래킹하는 것을 말합니다. 이러한 공격은 일반적으로 DNS 서버를 크랙하여 클라이언트가 접속하는 서버를 크래커 자신의 서버로 접속되도록 하여 계정과 열쇠글을 요구하여 가로채는 방식으로, 크래커는 클라이언트에게 거짓 정보를 주므로써 클라이언트는 아무런 의심을 하지 않도록 하는 공격 수법입니다.