리눅스 랜섬웨어의 등장
드디어(?) 리눅스 랜섬웨어가 등장했다. 그리고 국내의 첫번째 피해자는 도메인 및 호스팅 업체인 인터넷나야나 였다.
랜섬웨어는 일반적인 악성코드가 아니다. 랜섬웨어는 악성코드들이 갖고 있는 취약점을 공격하는 특징을 갖고 있지 않은 것이 일반적이다.(드물게 취약점을 공격해 스스로 전파하는 랜섬웨어도 있다.) 때문에 “악성코드”라 하면 Windows 운영체제를 타겟으로 만들지만 랜섬웨어는 마음만 먹으면 운영체제를 가리지 않고 쉽게 만들 수 있다. 그리고 결국 리눅스 서버의 파일들을 암호화하는 리눅스 랜섬웨어가 등장했다.
인터넷 나야나의 랜섬웨어 사태
지난 6월 초(2017년 6월 초) 웹 호스팅 업체인 인터넷나야나의 웹서버 및 백업서버 153대가 리눅스 랜섬웨어인 에레버스(Erebus)의 변종에 동시 다발적으로 감염되어 파일들이 암호화되어 서비스 장애가 발생하였다. 호스팅 업체의 특성 상 수 많은 고객사의 웹사이트가 접속 불가가 되었고 백업 서버 조차 랜섬웨어에 감염되어 복구가 불가능한 치명적인 상황으로 사태가 악화되었다.
결국 인터넷나야나의 대표이사는 해커들과 협상하였고 12억 정도의 현금을 순차적으로 지불하면서 암호화 된 피해서버를 복구하는 것으로 합의 되었다고 한다.
리눅스가 윈도 보다 보안상 안전한 이유
유닉스나 리눅스 서버가 윈도 서버보다 보안상 안전하다고 하는 이유는 윈도 운영체제 보다 강력한 “계정간의 권한 분리” 때문이다. 윈도의 경우 개인용 운영체제인 Windows 7/8/10 은 물론 서버 운영체제인 Windows 2008/2012 조차도 “계정간의 권한 분리”가 매우 부실하게 적용되어 있다.
무슨 이야기 인지 이해하지 못하는 사람들이 많을텐데… 쉽게 설명해본다…
1. 운영체제에는 여러개의 계정을 만들 수 있다.
운영체제에는 “계정(Account)”이 존재한다. 운영체제에 생성된 계정은 서버에 로그온 할 수 있고 로그온 한 뒤 파일을 생성하거나 실행하거나 수정 및 삭제할 수 있다. 계정은 관리자 계정(Super User)이 있고 일반 계정이 있다. 윈도의 경우 관리자 계정은 Administrator 로 지정되며 유닉스와 리눅스의 경우 root 라는 이름으로 존재한다.
일반 계정은 관리자가 임의의 이름으로 만들어 준다. 예를 들자면 taeho 혹은 seyoung과 같이 만들어 주게 된다. 윈도 운영체제도 마찬가지다.
2. 운영체제에서 계정간의 접근은 기본적으로 불가능해야 한다.
윈도 운영체제의 경우 이 단계에서 부터 보안 아키텍쳐가 흔들리기 시작한다. 예를 들어 앞에서 만든 taeho 라는 계정에서 서버에 접속해 파일을 만들거나 업로드 한다고 가정하면 seyoung 이라는 계정으로 접속해 taeho가 만든 파일을 읽거나 삭제하거나 수정할 수 있을까?
운영체제의 기본 설정만으로 본다면 유닉스나 리눅스는 “읽기”는 가능하나 수정하거나 삭제할 수 없다. 하지만 윈도는??? 읽기 뿐만 아니라 “수정”이나 “삭제”도 가능하다. 물론 파일이나 폴더마다 권한을 설정하면 윈도에서도 유닉스나 리눅스 수준으로 다른 계정의 파일에 접근하지 못하도록 설정할 수 있다. 하지만 너무 불편할 뿐더러 여러가지 기술적 문제로 인해 이 매우 기본적인 보안 기능을 사용하지 않는다.
때문에 윈도의 경우 어떤 계정에서든, 어떤 방법으로든 랜섬웨어가 동작만 할 수 있다면 다른 사용자, 심지어 수퍼유저인 Administrator가 생성한 파일을 포함해 모든 파일을 암호화해 버릴 수 있는 것이다.
하지만 리눅스의 경우 수퍼유저인 root 계정의 권한만 탈취되지 않는다면 서버의 모든 파일을 암호화할 수 없다. 단지 랜섬웨어를 생성하거나 업로드할 때 탈취한 계정이 소유자인 파일만 암호화 할 수 있다.
즉 이번 인터넷나아야 처럼 호스팅 업체의 경우 하나의 서버에 다수의 고객사 홈페이지가 운영되는데 기본적으로 고객사 마다 1개씩 계정을 만들어 제공한다. 내가 알기로 하나의 호스팅 서버에 수백개의 홈페이지가 운영되는 경우도 있다. 즉 하나의 서버에 수백개의 계정이 있는 것이다. 따라서 일반 계정인 고객사의 계정이 해킹되어 랜섬웨어에 감염되었다면 이번 처럼 153대의 서버에서 모든 파일이 암호화 되는 사태가 벌어질 수는 없다. 결코…네버…죽어도…!!
그럼에도 불구하고 153대의 서버가 피해를 입은 이유는..
이번 사태는 153대 리눅스 서버의 수퍼유저 계정인 root 또는 응용프로그램의 관리자 계정의 비밀번호 혹은 접속 권한을 탈취당했기 때문에 발생한 사태임이 분명하다. 그리고 서버 153대의 수퍼유저 권한을 해커에게 탈취당한 이유는 인터넷나야나의 내부 IT관리자들의 보안인식 부재가 원인일 수 밖에 없다.
이 블로그에도 몇 차례 포스팅했지만 “보안”보다는 “서비스”가 우선인 우리나라의 IT 보안 마인드가 문제인 것이다. 수 백대의 서버를 운영하는 상황에서 할일은 많고 서비스는 유지해야하니 “보안 마인드” 따위는 안드로메다로 날려 보내 버리는 것이다. 개발자나 시스템관리자가 수퍼유저(root)의 계정을 공유하고 “불편”하다는 이유로 수퍼유저 계정인 root 계정의 비밀번호를 공유하거나 모두 통일시켜 놓고 비용이 많이 든다는 이유로 망분리를 등한시 하거나 서버 접속 시 2차 인증 수단을 강구하지 않았기 때문에 이번 사태를 발생시킨 것이다.
그리고 개발자나 시스템관리자의 보안인식 부재를 만든 원인은 IT 인력에 대한 투자가 부족하기 때문임을 알아야 한다. 서비스를 유지하고 관리하느라 바빠 죽겠고 매일 야근인데 누가 “보안” 따위에 신경을 쓰겠는가? 경영진이나 관리자들은 장애 한번 생기면 원인 파악이나 재발방지 보다는 책임추궁에 골몰이니 어떤 엔지니어가 “보안” 따위를 중요하게 생각하겠는가?
인터넷나야나도 ISMS 인증을 받았다. 하지만 심사 받을 때만 정보보안을 위해 노력하는 척~하고 인증심사 후에는 다시 예전의 무책임한 자세로 돌아가는 그런 행태를 보였다는 것을 안봐도 짐작할 수 있다.
안타깝지만 반면교사로 삼아야…
크래커를 응원하는 것은 결코 바람직하지 못하다는 것을 알고 있다. 또한 테러리스트와도 같은 크래커들과 이번 사태 처럼 협상하고 그들이 요구하는 돈을 지불하는 것이 바람직하지 못하다는 것도 잘 알고 있다.
하지만…
서비스 운영 만큼이나 IT 인력을 충분하게 유지하고 인간답게 일할 수 있도록 지원하며 정보보안에 신경쓰는 것도 중요하다는 것을 IT 조직을 운용하고 있는 경영자들이 이번 사태를 통해 깨달았으면 좋겠다. 그리고 지금까지 IT 조직을 돈이나 쓰는 조직으로 인식하고 정보보안을 등한시 하던 경영자들은 정보보안의 중요성을 깨달았으면 하는 것이다. 여차하면 보안사고 한번에 기업의 생사가 좌우될 수도 있다는 것을 이번 사태가 여실히 보여주고 있으니 말이다.
그런 면에서 매우 안타깝지만 일면 반면교사로 삼아야 한다.