안녕하세요. ManVSCloud 김수현입니다.
이전 “[NCP] 네이버 클라우드에서의 보안 – INTRODUCE” 포스팅에 이어
계정 보안을 어떻게 하면 좋을까?에 대한 고찰을 목적으로 작성하게 되었습니다.

“[NCP] 네이버 클라우드에서의 보안 – ACCOUNT”에서는 계정을 어떻게 안전하게 사용할까?의 내용이 주목적이며 내용이 다소 길어져 1-1, 1-2로 나뉘어 포스팅 됩니다.
계정 보안에 앞서 클라우드 보안 인식에 대해 먼저 알아보도록 하겠습니다.
Cloud Security
클라우드 보안, 다들 어떻게 생각하시나요?

많은 사람들이 클라우드는 보안상 취약하다고 생각합니다.
클라우드 역시 온프레미스와 동일하게 네트워크 보안, 서버 보안 등 다양한 보안 서비스가 존재합니다.
네이버 클라우드를 예로 살펴보면 아래 그림과 같이 기존 온프레미스에서 사용하던 IDS/IPS, 방화벽, 웹 방화벽, DB암호화 등 모두 서비스로 준비되어있습니다. 이는 네이버 클라우드뿐만 아니라 AWS나 Azure,GCP 등도 동일합니다.

클라우드라고 해서 보안상 더 취약하다고 볼 수는 없는 것입니다.
또한 고객 책임 영역을 파악하고 사용하는 리소스의 책임 영역에 대해서 철저히 관리하면 됩니다.
직접 서버를 IDC에 보관할 경우 랙, 케이지, 온도, 즉 하드웨어나 시설은 고객 책임 영역에서 네이버 클라우드 플랫폼 책임 영역이 됩니다.
단 콘솔 페이지로 로그인 할 계정을 잘 관리 해야합니다.
고객의 입장에서는 클라우드가 온프레미스보다 보안상 취약하다라고 보기보다 클라우드와 온프레미스가 고려해야할 보안 사항에 차이가 있다라고 보는 게 맞다고 봅니다.
CSO에 따르면 클라우드 보안에 주요 위협이 되는 것은 약 11가지가 존재한다고 합니다.

* CSO : 원래 Chief Security Officer (최고 보안 책임자)의 약자이며, 여기서 언급한 CSO는 비즈니스 연속성 및 데이터 보호에 대한 최신 정보와 모범 사례, 사회 공학 사기 예방 모범 사례 등을 제공하는 산업 보안 및 정보보호 관련 사이트입니다.
주관적으로 나머지 보안을 아무리 열심히 준비했더라도 메인 계정에 문제가 생긴다면 막대한 피해를 입게되기에 저는 Account hijacking을 가장 먼저 다루어야할 핵심으로 봅니다.
계정이 공격자에 의해 도용/탈취를 당하게 된다면 어떤 영향들을 미치게 될까요?
해커의 악의적인 행동으로 인하여 데이터 유출이나 조작으로 막대한 피해로 이어질 수 있기에 계정 도용/탈취는 매우 치명적이라고 볼 수 있는데요.
해커가 계정을 도용/탈취할 수 있는 방법 중 대표적인 예로는 무차별 대입 공격(Brute-force), 사전 공격(Dictionary Attack), XSS (Cross-Site Scripting) 공격, 버퍼 오버플로우(BufferOverflow), 키로거(Keylogger), 피싱(Phishing)이 존재합니다.
* 무차별 대입 공격(Brute-force) : 공격자가 성공할 때까지 암호를 추측(모든 가능한 문자를 조합)하여 계정에 액세스
* 사전 공격(Dictionary Attack) : 자주 사용하는 단어나 문장, 생일 등을 만들어두고 이를 대입하는 공격
* XSS (Cross-Site Scripting) : 공격자가 웹 브라우저를 통해 악성 스크립트를 전송하여 취약한 계정에 액세스하는 인젝션 공격 유형
* 버퍼 오버플로우(BufferOverflow) : 공격자에게 무단 액세스를 제공하도록 설계된 악성 데이터로 메모리의 데이터 덮어 쓰기
* 키로거(Keylogger) : 사용자 ID 및 비밀번호를 포함하여 사용자가 입력한 키를 기록하고 공격자에게 정보를 보내는 프로그램
* 피싱(Phishing) : 정보를 훔치거나 세션 ID를 도용하기 위해 사용자를 보안되지 않은 웹 사이트로 유도
오늘은 이러한 위협들 속에서 우리 계정을 어떻게 보호할 수 있을까에 대해 자세히 알아보도록 하겠습니다.
Password

우리가 Naver Cloud를 이용하기 위해서 가장 먼저 해야하는 것은 먼저 해당 페이지에서 로그인을 해야하는 것입니다. (네이버 클라우드 뿐만 아니라 AWS,Azure,GCP 등 모두 해당)


그 외에 Shell, 원격 접속을 할 때도 계정, 패스워드를 입력하여 접근을 합니다.
패스워드 관리에 대한 부분은 콘솔 로그인 뿐만 아니라 서버 계정 관리에도 도움되도록 작성 해보려합니다.
PASSWORD란 본인 확인을 위한 요소 중 하나인데 누군가 나의 ID와 PASSWORD를 쉽게 알 수 있다면 나의 계정은 보안이 매우 취약한 것입니다.
이 패스워드를 어떻게 관리하면 좋을까요?
가장 먼저 우리가 생각해보아야 하는 것은 패스워드 길이와 복잡성이라 말할 수 있습니다.
비 인가자로부터 brute-force, Dictionary attack 공격을 받을 경우 암호의 길이와 복잡성에 따라 해커가 암호를 알아내기까지 소요 시간은 상당한 차이가 있는데 암호의 길이가 짧고 복잡성이 떨어질 경우 얼마나 빠른 시간 내에 암호 탈취가 가능한지 테스트하는 것도 보여드리겠습니다.
※ 패스워드는 이렇게 관리하자 ?
- 패스워드 길이 최소 8자 이상 (영문자 대문자+소문자+ 숫자+특수문자를 조합)

- 새 사용자 최초 로그인 시 새로운 패스워드로 변경하도록 적용
(Sub Account 생성 시 생성된 서브 계정 로그인 시 비밀번호 재설정 체크)

(Linux의 경우 “chage -d 0 계정명” 명령어를 사용해주면 해당 사용자가 로그인 시 새로운 패스워드로 설정할 수 있게 됩니다.)
- 로그인 시도에 대한 정보를 볼 수 있는 감사 기록
(Cloud Activity Tracer를 이용하면 Naver Cloud 계정 로그인 감사 기록을 확인할 수 있습니다.)

- 실패한 로그인 시도 횟수를 제한하는 임계치를 설정(Clipping Level)
- 마지막으로 당연한 말이지만 패스워드를 공유하지 않는 것입니다.
(책임추적성 수립이 되지 않기때문인데 시스템 내의 각 개인은 유일하게 식별되어야 한다는 정보 보호 원칙입니다.)
추가로 패스워드 탈취를 위한 공격 기법은 어떤 것이 있고 이 공격들로부터 어떻게 대응해야할지 적어보겠습니다.
[패스워드 공격 기법]
▶ 무차별 대입 공격 (Brute-force)
▶ 사전 공격 (Dictionary Attack)
▶ 사회 공학 (어깨 넘어로 훔쳐보거나 권한 가진 사용자 따라다니는 행동, 협박, 공갈, 갈취, 파쇄되지 않은 채 버려진 보안 문서, 피싱이 여기에 해당됩니다.)
▶ 패스워드 파일에 대한 접근
▶ 전자적 모니터링 (패스워드 입력 혹은 전송 시 스니핑으로 패스워드가 모니터링 됨)
▶ 트로이 목마(로그인 프로그램)
[대응책]
▶주기적인 패스워드 변경
▶패스워드 재사용 제한, 패스워드 파일 저장 시 단방향 암호화 사용
(단방향 암호화는 복호화가 불가능해 암호화된 비밀번호가 유출돼도 암호를 알아낼 수 없음)
▶로그인 실패 횟수 제한 : Clipping Level 설정, Internet 3 Strike-out

▶취약한 패스워드를 찾아내기 위한 감사 툴 사용
▶사전 공격 및 무차별 공격을 탐지하기 위한 IDS 사용
※ John the Ripper ⚔

마지막으로 John the Ripper를 이용하여 패스워드 탈취 테스트를 해보겠습니다.
John the Ripper는 많이 알려져있는 패스워드 크랙 툴입니다.
dictionary attack과 brute-force로부터의 테스트를 할 수 있습니다.
[root@manvscloud-security-kr1 ~]# useradd user [root@manvscloud-security-kr1 ~]# useradd admin [root@manvscloud-security-kr1 ~]# passwd user [root@manvscloud-security-kr1 ~]# passwd admin
우선 테스트에 사용될 계정 및 패스워드 생성을 해주었습니다.
user 의 계정에는 123456 이라는 패스워드를 주었고, admin 계정에는 apple이라는 패스워드를 주었습니다.
이제 John the Ripper를 설치해봅시다.

[root@manvscloud-security-kr1 ~]# cd /usr/local/src [root@manvscloud-security-kr1 src]# wget https://www.openwall.com/john/k/john-1.9.0.tar.gz [root@manvscloud-security-kr1 src]# tar zxvf john-1.9.0.tar.gz [root@manvscloud-security-kr1 src]# cd john-1.9.0/src [root@manvscloud-security-kr1 src]# make 여기서 make를 하면 make할 리스트가 나옵니다. system에 맞는 것을 선택하여 make 해줍시다. [root@manvscloud-security-kr1 src]# arch x86_64 [root@manvscloud-security-kr1 src]# make linux-x86-64 [root@manvscloud-security-kr1 src]# cd ../run [root@manvscloud-security-kr1 run]# ./john 입력 시 옵션 설명을 추가로 볼 수 있습니다.
// 위에서 생성한 계정에 대한 shadow 파일 내용을 따로 txt 파일로 빼줬습니다. [root@manvscloud-security-kr1 run]# cat /etc/shadow | tail -n 2 > shadow.txt // 암호화된 것을 알 수 있는데 이제 이 암호화된 내용을 크랙하겠습니다. [root@manvscloud-security-kr1 run]# cat shadow.txt user:$6$6NkXOEsJ$N316O3215K8hN4Hblj6Fk5QSpjvyjRCtt93iIzivV8eGPp.8qZXtrpUOhX93nSrUN.hagw3Toyux24epDZHOv0:18765:90:120:30::: admin:$6$lXYhYqgH$/I5lJOYFGLyXecWM9DCezPjLoTdSGlmzf.2Ghr8l0cCDa8LyniimBO8W2AAGuVjbcyZETG7d9iFgnkWnISa8s.:18765:90:120:30::: //두 패스워드를 알아내는데에 21초밖에 걸리지 않았습니다. [root@manvscloud-security-kr1 run]# ./john shadow.txt Loaded 2 password hashes with 2 different salts (crypt, generic crypt(3) [?/64]) Press 'q' or Ctrl-C to abort, almost any other key for status apple (admin) 123456 (user) 2g 0:00:00:21 100% 2/3 0.09144g/s 277.4p/s 284.9c/s 284.9C/s 123456..pepper Use the "--show" option to display all of the cracked passwords reliably Session completed [root@manvscloud-security-kr1 run]# ./john --show shadow.txt user:123456:18765:90:120:30::: admin:apple:18765:90:120:30::: 2 password hashes cracked, 0 left
이렇게 짧은 패스워드, 숫자로만 이루어져있거나 사전적인 단어로 패스워드를 사용 시 패스워드 탈취는 순식간에 일어납니다.
패스워드 길이 최소 8자 이상 (영문자 대문자+소문자+ 숫자+특수문자를 조합)으로 패스워드 설정 후 테스트해보시면 아무리 일정 시간이 지나도 패스워드가 찾아지지 않습니다.
물론 언젠가 패스워드가 찾아질 것이기에 반드시 정기적으로 보안 점검 일정을 정해두고 패스워드를 변경해야할 필요가 있습니다.
Multi-factor authentication

네이버 클라우드에서 [마이페이지]를 보시면 계정관리 쪽에 [2차인증 관리]가 있습니다.
2차인증, 즉 Two Factor Authentication(2FA)는 계정을 보호하는 데에 아주 큰 역할을 합니다.
이런 멀티팩터 인증은 이미 우리 생활 속에서 많이 사용중입니다.
대표적인 예로 ATM기에서 현금 인출을 위해서는 첫번째로 본인의 카드가 존재해야하며
두번째로 계좌 비밀번호를 알고 있어야합니다. 여기서 카드가 소유기반 인증이 되고 계좌 비밀번호가 지식기반 인증이 됩니다. Two Factor Authentication를 사용하고 있는 것이죠.

네이버 클라우드에서는 2차 인증을 휴대폰 번호 or 이메일 주소로 인증번호 받아 인증하는 인증번호 방식과 OTP(One-Time Password) 방식이 존재합니다.

인증번호로 설정하게 될 경우 아래 그림과 같이 휴대폰 번호/이메일주소로 인증 수단을 선택할 수 있습니다.

인증 번호 방식이 아닌 OTP를 이용하여 인증하게 될 경우 디바이스에 Google OTP앱이나 Microsoft사의 Authenticator와 같은 OTP 앱이 필요합니다.
개인적으로 Microsoft사의 Authenticator 앱을 사용합니다.
(Google OTP 앱을 쓰다가 디바이스를 갤럭시에서 아이폰으로 바꿨는데 OTP가 정상적으로 넘어가지 않아서 바꿨습니다.)

OTP QR 코드 등록 후 등록된 OTP의 Number로 인증 후 확인을 누릅니다.
인증 이후 로그인 시 2차 인증을 진행해야만 로그인이 가능해집니다.

2차 인증 등록은 반드시 설정하시기 바랍니다.
매우 중요합니다.★★★★★
Personal Comments and Wrap-up
이번 [NCP] 네이버 클라우드에서의 보안 주제로 쓰는 포스팅들의 내용이 다소 클 것으로 예상됩니다. Account 하나의 주제도 내용이 너무 길어져서 2번으로 나누어 쓰게 되었습니다.
“Naver Cloud에서 계정 보안은 이렇게하면 돼!” 하고 끝내버리기엔 무엇때문에 해야하는지 모르는 경우가 많습니다. 저는 항상 모르던 서비스를 사용하거나 새로운 상품을 접할 때 Why?라고 먼저 생각합니다. 왜 이것을 써야하는지? 또 사용하게 된다면 그리고 사용하지 않는다면 어떻게 되는지 궁금증이 많은 편입니다.
무엇보다 저는 이런 의문에 답이 내려지지 않으면 잘 사용하지 않는 편입니다.
그렇기에 제가 쓰는 포스팅은 주제에 대한 내용뿐만 아니라 추가되는 내용이 상당히 많음을 미리 말씀드립니다.
대신 IT를 처음 접하거나 학생들 또는 이런 궁금증이 항상 생기는 분들에게는 많은 공부가 되리라 생각합니다.
다음 포스팅은 “1-1. [NCP] 네이버 클라우드에서의 보안 – ACCOUNT”에 이어
“1-2. [NCP] 네이버 클라우드에서의 보안 – ACCOUNT”로 찾아뵙겠습니다.
평소보다 더욱 길었던 글,
여기까지 읽어주셔서 정말 감사합니다.

