국내 대학교 IP로부터 무작위 SSH 접속 시도를 당한 이야기
들어가며
외부에서 홈서버 내부의 특정 호스트로 접속을 위해 Bastion host를 구축했습니다. 어쩌다 로그를 확인하니 Connection closed by invalid user가 지속 발생했는데요. IP가 국내 모 대학교임을 확인하고, 이에 대한 내용과 처리 결과를 기록한 글입니다.
왜 SSH 포트를 열어뒀는가?
일반적으로 보안을 위해 외부망에는 SSH를 열어두지 않는 것이 권장됩니다. 제 경우에는 내부망 호스트에 설정한 개발 환경을 외부에서 VPN이 아닌 SSH proxy jump를 이용하여 접속하고 싶어서 열어두었습니다. 나름 보안에 신경을 쓴다고 다음과 같이 구성을 한 상태였습니다.
- Bastion host가 내부망에 접근 가능한 호스트를 하이퍼바이저 레벨에서 제한
- Bastion host에 한국 내 IP만 접속 가능하며, 해외 IP는 로그를 남기고 접속 차단하도록 iptables 정책 설정
- Bastion host에는 키 파일을 저장하지 않으며,
PasswordAuthentication no로 설정하여 비밀번호 로그인 차단
사건 발생 시점에서 fail2ban은 별도로 설정하지 않았습니다. 경험상 국내 IP에서는 이번 글에서 발생한 무작위 대입과 같은 공격이 자주 발생하지 않았었기 때문입니다. 지금 생각해 보니, 이번 경우를 포함하여 보안에서 안일함은 항상 문제의 원인이 아닌가 싶습니다. 글 작성 시점 기준, 이번 사건을 계기로 fail2ban을 설정하게 되었으며, 다행히 사건 발생 후 일주일이 지났지만 추가 접속 시도나 차단된 IP는 없는 것으로 확인했습니다.
어쩌다 발견했는가?
운이 좋았습니다. 평소에는 ssh 접속 로그를 확인하지 않는데, 유독 그날은 한 번 오랜만에 한 번 ssh 로그를 열어보고 싶었습니다. /var/log/auth.log를 열어보니, 지속적으로 로그인 실패 기록이 있는 것을 확인했습니다.

최초 접속 시도는 4월 30일 새벽 2시경에 발생했습니다. 운이 좋아서 7시간이 지난 같은 날 9시에 발견할 수 있었습니다.
어떤 계정들로 접속 시도를 했을까?

로그인 시도 이력을 보니, 해당 IP를 할당받은 서버가 해킹당한 것처럼 보였습니다. 로그인에 시도한 사용자 계정을 보니, 다음과 같은 유형으로 분류할 수 있었습니다.
ubuntu,postgres,vyos,default,user등 리눅스에서 흔히 사용하는 계정hsh,bdy,ktk등 한국 사람으로 추정되는 이름의 이니셜jjongyn과 같이 성+이름 이니셜 형태의 계정dlwlrma(이지금)과 같이, 한글을 영어로 그대로 타이핑했을 때 나오는 계정
해당 서버에서 사용되는 것으로 추정되는 계정으로 로그인 시도를 했다는 것으로 판단하고, 해당 네트워크 대역 관리자에게 로그와 함께 내용을 전달하기로 합니다.
src IP가 어디인지 whois로 확인해 보자

whois로 검색해 보니, 어느 대학교에 할당된 IP로 나왔습니다. 글 작성 시점인 25년 5월 기준, SKT 서버 해킹 사건으로 해킹 관련 뉴스가 메일 뉴스 헤드라인을 장식하고 있었습니다. 해킹으로 온 나라가 떠들썩한 상황에서 교내 서버가 해킹당한 것도 문제가 될 수 있다고 생각했습니다. 메일로 서버 해킹이 의심된다고 작성했습니다.

그런데 문득 "whois에 안내된 저 계정이 정말 사용하는 계정일까?"라는 생각이 떠올랐습니다. 메일을 보내도 읽지 못하면 의미가 없으니까요. 전화로 메일 보냈으니 확인해 달라고 해야 하나 고민했습니다. 고민 끝에, 업무 메일도 확인 필요한 항목이면 전화로 연락하는데, 이것도 유사한 경우라고 생각해서 안내된 번호로 연락을 합니다.
이해는 되지만, 불쾌한 대처
요약하자면, 불친절함과 전화 돌리기였습니다. 안내된 번호로 전화를 하니 담당자가 출장이라 부재중이니, 다른 번호로 연락해 달라고 합니다. 그럴 수 있다고 생각하고 다시 전화하니, 그걸 왜 나한테 전화하냐고 하는 듯이 또 다른 곳으로 연락하라고 합니다. "그쪽 서버 털렸다니까요?"라고 말하고 싶었지만, 굳이 이렇게까지 해야 하나 싶어서 "아 네.."라고만 얘기했습니다. 담당자가 아니라 전화 돌리는 것은 이해할 수 있지만, 전화받으신 분이 가지고 있던 대학교 교직원 특유의 불친절함을 드러내는 말투는 많이 아쉬웠습니다.
결국 전화하면서 이렇게까지 알려야 하나 싶었습니다. '나중에 털리고 뉴스에나 나오지 말았으면'이라고 생각했습니다. 교직원의 무관심함에 분노하며 '제발 뉴스에 나왔으면'이라고 생각하기도 했습니다. 그래도 며칠 뒤, 출장 갔던 담당자가 제 메일에 회신을 하면서 마무리가 어떻게 되긴 했네요.

글을 마치며
해당 학교 담당자께서 잘 조치해 주신 덕분에 해당 IP에서 더 이상 제 서버로 SSH 접속 시도는 발생하지 않았습니다. 동시에 담당자가 아닌 분이라 이해는 가지만, 학교 교직원의 불친절함은 어딜 가든 비슷하다는 생각도 들었습니다. 자칫 잘못하면 학교 전체 트래픽에도 영향을 줄 수 있는 문제임에도 너무 대처가 안일하게 느껴지는 점이 많이 아쉬웠습니다. 제 모교에서 유사한 사례로 교내 서버가 해킹당해 트래픽에 영향을 준 경우가 있어서 더욱 대처가 아쉬웠습니다.
한편으로는 홈서버 보안에 대해 다시 생각하는 계기였습니다. 이제까지는 인바운드 트래픽에 대해 로그만 남기고 있었습니다. 앞으로는 웹훅을 이용해서 비정상적인 트래픽이 감지되면 바로 대처할 수 있도록 시스템을 구축할 계획입니다.