서버관리

아마존 AWS EC2 에서 리눅스 구축하여 개인용/업무용으로 활용하기

2019. 12. 29. 11:48


반응형

아마존같은 퍼블릭 클라우드를 업무, 개인용으로 사용할 수 없을까 고민을 하다가 Amazon AWS EC2 클라우드에 리눅스를 구축하는 방식을 시도해보기로 했다. 일단 아마존 AWS 계정이 있어야 하고 가입 첫 12개월 동안은 EC2 서비스 내에 특정 서비스는 아마존에서 무료로 제공하고 있다. 대다수의 사용자들은 업무, 개인 파일 저장 용도로 구글 드라이브, 네이버 N드라이브 같은 클라우드 저장소 서비스 정도면 충분하겠지만 고급 사용자들은 자체 서버를 구성해서 자신만의 플랫폼을 구축하고 싶기도 할 것이다. 예를 들어 웹 개발자가 자신만의 웹 서비스를 구축한다던지 DBA가 데이터베이스를 구축한다던지 말이다. 이런 경우 남는 PC를 서버로 구축해서 인터넷에 연결시켜 사용하는 방법 혹은 VM웨어 등의 가상머신을 사용하는 방법도 있지만 철저한 보안을 위해 방화벽 장비를 갖추고 항상 최신 OS 보안 패치 및 백신을 유지 관리한다는게 결코 쉬운 일이 아니다. 그래서 차라리 아마존 AWS EC2와 같은 IaaS 클라우드 서비스를 사용하면 그러한 번거로움을 줄일 수 있고 보안적인 측면에서도 믿을만 하다. 일단 본인의 경우는 기존 리눅스 서버에서 사용하던 업무용 소프트웨어를 언제 어디서나 필요할 때마다 스마트폰 혹은 노트북으로 접근할 수 있는 용도로 한번 시험삼아 아마존 클라우드에서 구축해보았다.



1. Amazon AWS 계정 가입

https://aws.amazon.com/ko 에 가입 후 신용카드 번호를 입력하면 1년 동안 특정 서비스에 한해 무료로 사용할 수 있다.



2. EC2 서비스 내 프리티어(무료) 서비스 중 하나인 윈도우/리눅스 t2.micro 인스턴스 시작

EC2 서비스는 VM웨어로 비유하여 말하자면 클라우드 상에 리눅스나 윈도우 가상 머신을 생성해주는 것인데 클릭 몇번으로 매우 빠르게 생성할 수 있다. 여기에 필요에 따라 일반 혹은 SSD 스토리지, 퍼블릭 IP 등을 추가할 수 있고 인스턴스 종류에 따라 CPU, 메모리 스펙이 모두 다르다.





3. 인스턴스를 시작하면 곧바로 사용할 수 있는 윈도우/리눅스가 생김

사용자가 선택한 윈도우/리눅스 인스턴스가 생성되면 마치 실제 컴퓨터에 OS를 처음 설치한 것과 동일하다. 여기에 자신의 필요에 따라서 일반 PC처럼 특정 소프트웨어를 업로드하여 설치할 수 있다. 여기서 주의할 점은 리눅스에 접속할 때 SSH 클라이언트로 보통 접속할텐데 일반적인 ID, PW로 접속하는 방식이 아닌 암호화 키 인증방식을 사용하기 때문에 암호를 입력하는 대신 확장자가 .pem 나 .ppk 으로된 암호화 개인키를 불러와야 하는데 암호화키는 설치 과정 중에 생성할 수 있거나 기존에 자신이 사용하던 암호화키를 활용할 수도 있다. PUTTY 같은 SSH 클라이언트 툴은 보통 이런 암호화키 방식의 접속 기능을 제공한다. 윈도우 서버 인스턴스의 경우 암호화키 파일을 이용해서 만들어진 암호를 입력해야만 RDP 접속이 가능하다. 한가지 알아야 할 점은 root 혹은 administrator 계정을 직접 제공하지 않으며 관리자 권한이 부여된 ec2-user 라는 일반 계정을 부여한다. 아마도 보안적인 이유인 듯 하다. 그리고 보안설정 페이지에서 필요한 포트를 열어줄 수 있는데 일반적인 방화벽 기능이라고 보면 된다. GUI 원격 접속을 위해 VNC 서비스를 사용할 필요가 있을텐데 기본적으로 VNC 트래픽은 암호화가 안되어 있어 보안에 매우 취약하다고 한다. 그래서 VNC 기본 포트인 5901를 직접 열어주기 보다는 SSH 터널링 기능을 사용하여 VNC 트래픽이 SSH 포트인 22번을 통해 전송될 수 있도록 설정할 수 있으므로 22번을 열어준다. 이 외에 자신의 필요에 따라 접근 허용할 포트를 추가해주면 된다.






4. 리눅스의 GUI 환경 구성

윈도우라면 상관없지만 리눅스 인스턴스를 생성할 경우 무조건 CLI 방식으로만 설치된다. GUI 환경을 사용하고 싶다면 Red Hat 리눅스를 설치한 경우 아래 명령어를 실행한다. 이 과정에서 설치가 제대로 안된다면 yum 레포지터리 설정 여부를 확인해본다.

sudo yum groupinstall "Server with GUI"


혹은


sudo yum groupinstall "GNOME Desktop"

그 다음 노트북, 스마트폰 같은 클라이언트 측에서 접속할 수 있도록 VNC Server를 아래 명령어로 설치, 접속 패스워드 설정, 서버 구동해준다.

sudo yum install tigervnc-server


vncpasswd


vncserver :1

Amazon Linux 2를 설치한 경우 아마존에서 만든 자체 명령줄 도구를 제공하는데 자세한 방법은 https://aws.amazon.com/premiumsupport/knowledge-center/ec2-linux-2-install-gui/ 에 나와있어서 이 방법을 따라 GUI 환경 중 하나인 MATE 설치 및 VNC 서버를 구성해줄 수 있다. Amazon Linux 2의 경우 아마존 AWS EC2에 특화된 리눅스이고 amazon-linux-extras 라고 하는 굉장히 유용한 자체 명령줄 도구도 지원하기 때문에 특별한 이유가 없다면 다른 리눅스 배포판보다 Amazon Linux 2을 추천한다.



5. 클라이언트에서 서버로 SSH, VNC 접속

리눅스에 GUI 환경과 VNC 서버가 구축되었다면 이제 클라이언트 쪽에서 접속할 수 있도록 몇가지 설정이 필요한데 PUTTY 에서 접속한다면 위 인스턴스 설치 단계에서 생성한 암호화키를 자신의 PC에 다운받고 PUTTY에서 불러온 다음 인스턴스 페이지의 연결 버튼을 누르면 보여지는 주소, 계정 정보를 PUTTY 연결 창에 입력하면 서버에 접속할 수 있다. SSH는 기본적으로 CLI 방식이기 때문에 GUI 환경으로 접속하려면 VNC 클라이언트를 사용해야 하는데 사전 조건으로 먼저 SSH 접속할 때 포트포워딩 옵션을 사용해서 터널링이 구성해주고 나서 VNC 접속을 해야한다. VNC 서버 설치 당시 기본 포트인 5901번으로 설정했다면 포트포워딩 로컬(클라이언트)은 5901 으로, 원격(서버)은 localhost:5901 로 지정하여 로컬 쪽에서 5901로 나가는 포트는 SSH 터너링을 타고 원격에 5901 로 들어가도록 해줘야 한다. 포트포워딩 방식을 선택해야 한다면 원격이나 SOCKS가 아닌 로컬 옵션을 선택해야만 제대로 접속이 된다. 만약 로컬이 리눅스나 맥이라면 터미널을 연 다음 아래 명령어로 암호화키의 퍼미션을 400 (rw- --- ---) 로 바꿔주고 포트포워딩 옵션을 준 ssh 명령어로 SSH 터널링을 구성 및 서버 접속을 한다.

chmod 400 생성한_암호화_키.pem


ssh -L 5901:localhost:5901 -i "생성한_암호화_키.pem" ec2-user@자신의_AWS_인스턴스_주소

SSH 터널링이라는 개념이 뭔가 좀 복잡해 보일 수 있는데 위 ssh 명령어의 옵션 중 -L 5901:localhost:5901 부분이 SSH 터널링을 가능하게 해주는 포트포워딩 옵션이며 그 의미는 로컬(클라이언트)의 아웃바운드는 5901 포트, 원격(서버)의 인바운드는 localhost:5901 로 가상의 터널을 SSH의 기본 포트인 22번을 통해 만들어주어 로컬의 특정 어플리케이션이 서버와 통신할 때 5901번 포트로 나간다면 강제로 SSH 터너링을 타고 원격의 5901번으로 연결되도록 유도해준다는 의미이다. 그러니까 VNC 같이 보안에 취약한 서비스를 위해 기본값 포트인 5901번을 방화벽에서 열어줄 필요가 없이 22번만 열어주면 보안에 안전한 SSH 터널링 기능이 VNC를 위해 포트포워딩을 알아서 해준다는 의미이다. 물론 SSH이 먼저 연결된 상태에서 VNC 클라이언트로 원격에 접속을 해야하며 VNC 클라이언트에서 접속 주소는 localhost:1 혹은 127.0.0.1:5901 를 입력하면 된다.


노트북에서 SSH와 VNC Client로 접속 시


스마트폰에서 SSH와 VNC Client로 접속 시. 무선 키보드는 스마트폰과 블루투스 페어링.


참고로 맥OS에서는 자체 터미널과 VNC Viewer 앱을 사용했으며 안드로이드 스마트폰에서 접속할 때는 Termux 라는 SSH 클라이언트와 VNC Viewer 어플을 사용했다. 클라이언트가 윈도우라면 PUTTY 등을 사용하면 되고 SFTP 파일 전송은 암호화키 접속 방식을 지원하는 File Zilla를 사용했다.



6. 한글 입력이 필요한 경우

윈도우야 문제될 것이 없지만 리눅스를 설치한 경우 한글 입력에 문제가 될 가능성이 있다. 기본적으로 아마존 AWS EC2에서 제공하는 리눅스들은 일부 핵심 기능만 포함되어 있기 때문에 GUI나 한글이 기본적으로 제공되지 않을 수도 있다. Amazon Linux 2가 대표적인데 이 경우 ibus, ibus-hangul을 따로 설치해줘야 한다. 상세 내용은 이곳을 참조한다. https://github.com/libhangul/ibus-hangul




이제 각자 자신에게 필요한 환경 구성 후 사용하면 된다. 활용 용도는 무궁무진 하다.

반응형

작성자

공유

댓글