주요 내용으로 건너뛰기

Amazon AWS 클라우드에 칼리 리눅스 설치 및 운영

Installing Kali Linux on Cloud - Amazon AWS


Amazon EC2 Marketplace에서 Kali Linux가 지원되는 것을 발견했습니다. 모의침투 연구자들에게 참으로 희소식이 아닐 수 없습니다. Amazon AWS의 클라우드 서비스를 통해 각자의 Kali Linux 환경을 손쉽고 빠르게 구축할 수 있으니 말입니다. 더욱 좋은 소식은, Free Tier를 사용하면 비용을 투자하지 않고도 전액 무료로 EC2 인스턴스를 생성할 수 있다는 것입니다. 물론 제한된 한계치를 넘겨서 사용하게 되면 과금이 발생할 수 있으므로 주의해야 하지만 그 정도만 감수한다면 충분히 좋은 환경이라 믿어 의심치 않습니다.

지금부터 Kali Linux를 Amazon AWS EC2를 사용하여 구축하고, 콘솔에 안전하게 접속하여 사용할 수 있도록 설정하는 방법에 대해 단계별로 설명하고자 합니다. 이 과정은 몇 분도 채 소요되지 않을 정도로 쉽고 빠릅니다.


우선 시작하기 전에, 법적 고지드립니다. Amazon AWS를 이용하여 DDoS 등 악성 공격을 수행한다거나 하는 경우 아마존에서 자체적인 방화벽 및 보안 시스템에서 탐지가 되고, 문제의 소지가 있다고 판단되는 경우 해당 서버 폐쇄 및 해당 계정 차단 등 강력한 조치가 이루어지는 것으로 알려져 있습니다. 칼리 리눅스를 설치할 경우 내부에 깔려있는 다양한 해킹 도구를 사용하실 수 있으나, 여기에서 소개드리는 목적은 연구 목적이며 허가받지 않은 시스템에 대한 테스트를 절대 금지합니다. 악의적 목적으로 활용했을 시 발생할 수 있는 법적 책임은 수행자 스스로에게 있으며 본 포스트 게시자는 책임지지 않습니다. 이는 해당 글을 열람할 때 동의한 것으로 간주합니다. 


이미지 설명을 입력하세요.

우선 아마존에 가입하여 계정에 로그인을 합시다. (https://aws.amazon.com) 그리고 Amazon Web Services 대쉬보드에서 EC2 메뉴에 접속합니다. 그리고 인스턴스 항목을 클릭합니다. 별도로 지금까지 생성했던 인스턴스가 없다면, '인스턴스 시작' 버튼을 눌러 새로운 인스턴스를 생성할 수 있습니다.

이미지 설명을 입력하세요.
이미지 설명을 입력하세요.


여기에서 Amazon Machine Image(AMI)를 선택할 수 있습니다. 아래는 기본적으로 아마존에서 제공하고 있는 AMI 목록의 일부입니다. 유명한 운영체제인 Red Hat, SUSE Linux, Ubuntu 등이 제공되고 있습니다.

이미지 설명을 입력하세요.


AWS Marketplace를 선택하면, 추가적으로 여러 제조업체에서 제공하고 있는 운영체제 및 환경들을 검색할 수 있습니다. 검색창에 Kali Linux를 입력하면, 해당 이미지를 찾을 수 있습니다. 이 글이 작성된 시점을 기준으로, 2018년 9월 11일판 Kali Linux 2018.3a버전의 칼리리눅스 공식 이미지가 등록되어 있습니다.

이미지 설명을 입력하세요.
이미지 설명을 입력하세요.

부과되는 요금 정보를 확인합니다. 프리티어를 사용하는 경우 임계치를 넘지만 않으면 요금이 부과되지 않습니다. 확인 후 다음 버튼을 클릭합니다.

이미지 설명을 입력하세요.

이제 두번째 단계로 진입했습니다. 여기에서는 인스턴스의 유형을 설정합니다. 참고로  t2.micro(1GB 메모리)은 프리 티어로 제공됩니다. 그렇지만 Metasploit 등을 원활히 작동시키기 위해서는 2GB 이상의 메모리가 요구되며, 그 이상의 성능을 원할 경우 보다 성능이 높은 t2.small(2GB 메모리)이나 t2.medium(4GB 메모리) 등을 사용할 것을 권장드립니다. 설정하는 방법은 아래와 같습니다.

이미지 설명을 입력하세요.

결정이 끝났으면 '인스턴스 세부 정보 구성'을 눌러서 환경설정을 할 수 있습니다. Boot Volume으로 사용할 SSD 디스크를 설정하는 화면이 표출됩니다. 특별히 진행하지 않으면 기본설정을 따릅니다. 다음으로 태그 추가, 보안 그룹 구성(ssh 설정 등)이 진행됩니다. 여기에서도 특별히 설정을 변경하지 않고 진행하겠습니다. 다음을 누르면 '검토 및 시작'  단계입니다.

이미지 설명을 입력하세요.
이미지 설명을 입력하세요.

완료되면 아래와 같은 화면이 표출됩니다. (*일부 보안설정이 미흡하다는 경고가 표출될 수 있습니다. 이를 해결하기 위해서는 위에서 보안그룹 구성을 적절하게 수정해야 합니다.)

소스 IP를 설정하는 부분이 있는데, 위치 무관(Anywhere)로 하는 경우 전세계 어디에서나 누구나 접근할 수 있기에 편리할 수는 있지만 보안적으로 취약할 수 있습니다. 때문에 미리 등록된 IP 에서만 접속할 수 있도록 설정하기를 권고하는 것입니다. 하지만 이럴 경우 공인 IP대역이면 상관없지만 동적 IP를 사용하는 환경이라면 매번 IP가 바뀌므로 로그인 할 때마다 AWS Console에 접속하여 변경된 IP를 새로 등록해주어야 합니다. 다소 불편해진다는 것을 감안해야 하겠죠?

이미지 설명을 입력하세요.

이제 '시작' 버튼을 누르면 '키 페어' 설정 화면으로 넘어갑니다. 새로운 키 페어를 생성하도록 하고, 이름을 적절히 정해줍니다. 그리고 '키 페어 다운로드' 버튼을 클릭하여 해당 파일(*.pem 확장자)을 하드디스크에 저장해둡니다. (저의 경우 Kali-Linux-AWS-AMI-cpuu.pem 파일이 다운로드 됨)

이미지 설명을 입력하세요.

키 페어를 다운로드 하였으면, '인스턴스 시작' 버튼을 클릭하여 아래의 화면으로 넘어갑니다.

이미지 설명을 입력하세요.
이미지 설명을 입력하세요.

이제 칼리 리눅스가 설치되었고 부팅되었습니다. 아래 화면은 현재 작동중인 인스턴스를 보여줍니다. kali linux가 running 중입니다.

이미지 설명을 입력하세요.


해당 칼리 리눅스에 연결하기 위해서는 상단의 "연결" 버튼을 클릭하면 아래와 같은 메시지가 표출됩니다.

위의 가이드만 따르면 됩니다. 우선 macOS 기준으로 설명드리겠습니다.(리눅스에서도 똑같습니다)

다운로드 받은 *.pem 파일을 이용하여 터미널에서 해당 서버(DNS이용)의 주소로 ssh 연결을 시도합니다.

이때 만약 보안경고가 표출된다면, pem 파일의 권한 문제 때문이니 아래와 같이 read 권한만을 남겨줍니다.

아래와 같이 칼리 리눅스에 잘 접근이 됩니다.

다시한번 강조드리지만, pem 파일을 통해서만 접근할 수 있으므로 나머지 정보는 외부에 공개되어도 큰 상관없습니다. 하지만 만약 pem 파일을 잃어버리면 운영자 본인도 접근할 수 없으므로 주의바랍니다.


다음으로는 Windows 운영체제에서 PuTTY 프로그램을 이용하여 SSH로 접속하는 방법입니다. 아래 사이트에서 최신버전을 다운로드합니다. https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html 

다운로드 후 설치하면 기본적으로 C드라이브의 Program Files 경로에 PuTTY 폴더가 생성됩니다. 그 중에서 puttygen.exe를 실행합니다.

puttygen.exe는 키를 생성해주는 프로그램입니다. 이것이 필요한 이유는 putty가 *.pem 형식을 지원하지 않기 때문에 이를 *.ppk 형식으로 변환하기 위함입니다. Load 버튼을 누르고 아래와 같이 Kali Linux의 pem 파일을 불러옵니다.

가져온 파일에 대해 "Save private key"버튼을 누릅니다. 그러면 passphrase 없이 그냥 하시겠냐고 물어보는데 지금은 크게 중요하지 않으므로 예(Y)를 선택합니다.

파일을 ppk 형식으로 저장할 때 되도록 파일명은 기존의 pem 파일과 같게 지정해줍니다.

이제 putty.exe 파일을 열어서 좌측 메뉴에서 Connection-SSH-Auth 항목을 선택합니다. 그러면 하단부에 Browse 버튼이 보이는데 이를 눌러서 방금 생성한 ppk 파일을 로드합니다. 기타 설정은 특별히 수정할 것이 없습니다. 저는 아래와 같이 설정하였으니 참고바랍니다.

Host Name 설정시 ec2-user@도메인명 으로 지정해야 접속이 한번에 됩니다.Host Name 설정시 ec2-user@도메인명 으로 지정해야 접속이 한번에 됩니다.
Host Name 설정시 ec2-user@도메인명 으로 지정해야 접속이 한번에 됩니다.

이제 서버에 연결합니다. 최초접속시에는 아래와 같은 메시지가 뜨는데, 신뢰하기 위해 예(Y)를 선택합니다.

아래와 같이 ec2-user 계정으로 칼리 리눅스에 접속이 되었습니다. 원활한 사용을 위해서는 root 계정의 비밀번호를 생성하여 root로 계정을 변환할 수도 있습니다.



설명을 마치기 전에, 엄청나게 중요한 팁을 하나 드리려고합니다.

칼리 리눅스 사용을 그만하고 싶을 때에는 시스템에서 그냥 shutdown 시키면 됩니다. 그런데 Amazon AWS 서버를 관리하는 콘솔도 있습니다. 여기에서는 '인스턴스'의 상태를 관리하는 것으로 표현됩니다.

메뉴 중 '시작'은 당연히 부팅을 하는 것이고, '재부팅'은 재부팅을 하는 것입니다.

그런데 '중지'와 '종료'가 헷갈립니다. 저와 같은 실수를 하시는 분이 없기를 바라며 당부의 말씀드립니다. '중지(stop)'란 shutdown 시킨다는 의미입니다. 그러니까 일반적으로 사용을 종료하고 잠시 꺼뒀다가 나중에 다시 켜려면 '중지'를 시키시면 됩니다. 

그런데 '종료'는 terminate입니다. 즉, 종료를 누르면 아마존에서 해당 인스턴스를 삭제시켜버린다는 의미로, 다시는 해당 OS 를 부팅시킬 수 없게됩니다.

이미지 설명을 입력하세요.

인스턴스 종료란 영구 폐기를 뜻하는 것입니다. 절대로 '오늘 잠시 껐다가 내일 다시 켜는'게 아닙니다. 저같은 실수를 해서 다시 첨부터 재설치하시는 일은 없기바라며 ㅠㅠ

이미지 설명을 입력하세요.

정보보안에 관심이 많은 대학원생, 소프트웨어 엔지니어/서버관리자

CPUU 님의 창작활동을 응원하고 싶으세요?

댓글

SNS 계정으로 간편하게 로그인하고 댓글을 남겨주세요.