작성일 댓글 5개

우분투 자작 NAS – 13강, SSL 인증서와 HTTPS 접속

이런 저런 이유로 포스팅을 한동안 할 수 없었다.

13강에서는 원래 하려고 했던게 아니라 HTTPS 보안 연결에 대해서 포스팅 해본다. 사실 작년에 StartSSL로 HTTPS 연결을 시도하다가 인증서를 날려먹어 접어두었었다. 그러다가 갑자기 생각이 나서 다시 시도하게 되었다.

HTTPS 연결의 필요성

한국의 웹 환경을 생각해보자. 보안이 필요하다 싶은 곳은 전부다 액티브X로 도배가 되어있다. 요즘은 액티브X를 없앤다고 하는데 액티브X를 사용하지는 않지만 똑같은 프로그램을 액티브X가 아닌 다른 방식으로 설치하는 식이다. 결국 똑같다. 해외의 웹 환경을 경험해보면 좋은 비교가 된다. 해외 직구를 위해 결제라도 하나 해보게 되면, 너무 확연하게 차이가 남을 즉시 느낄 수 있을 것이다. 보안 프로그램 설치? 없다. HTTPS 보안 연결 하나로 끝이다. 개인 웹서버에 HTTPS 연결을 설정한다면 그와 비슷한 수준의 보안이 보장될 수 있다.

개인 웹서버에 HTTPS 연결이 무슨 필요나 할 수도 있겠지만, ownCloud에서는 HTTPS 연결을 권장하고 있다. 비교적 털릴 것이 없는 보통 사람이라고 해서 보안에 신경쓰지 않아도 되는 것은 아니다. HTTPS에 대한 복잡한 논의들이 있지만, 일단 보안에 굉장히 취약한 자작 NAS를 위해 HTTPS 연결을 설정해보자.

무료 SSL 인증서

무료로 SSL 인증서를 발급해 주는 곳은 몇 군데 있다. StartSSL, WoSign, Let’s Encrypt 등. 나는 세 군데 모두에서 SSL 인증서를 발급받아 보았다. 각기 장단점이 있는데 간략하게 적어본다.

StartSSL

  • 인증서 기간은 1년이다. 1년마다 재발급.
  • 무료로 발급해 주기는 하지만 관리할 때에는 유료다.
  • 분실했을 때 재발급은 유료다.
  • 그래서 작년에 한번 분실하고서는 쓸 수가 없었다.
  • 더 잘 찾아보지 않아서 그럴수도 있는데, 그 이후로는 쓸 수가 없게 되었다.

WoSign

  • 인증서 기간을 1~3년까지 지정할 수 있다.
  • 중국 쪽 업체라 그런지 대인배 마인드로 무료 지원이 굉장히 넓다.
  • 몇몇 브라우저에서 인증서를 신뢰할 수 없다고 뜬다.
  • 특히 모바일에서는 대부분 인증서를 신뢰할 수 없다고 뜬다. 이게 가장 치명적인 단점이다.

Let’s Encrypt

  • 인증서 기간은 90일이다. 연장하는 방법은 간단하다.
  • 얼마전까지는 비공개로 초대장이 있어야 사용할 수 있었는데 지금(2016년 3월 중순 기준)은 퍼블릭 베타이다.
  • 웹사이트에서 인증서를 받는 StartSSL이나 WoSign과는 달리 콘솔로 서버에 접속해서 받아야 한다. 해서 웹서버를 임대했거나 웹서버를 구축하지 않았다면 사용할 수 없다.

그래서 선택은 Let’s Encrypt다. 이 사이트에 대한 더 자세한 정보를 소개한다.

Let’s Encrypt

Lets’ Encrypt는 HTTPS를 사용하기 위해 SSL을 구매해야 하는 부분이 HTTPS 보급에 방해된다고 생각해서 SSL을 무료로 제공해서 HTTPS를 보급하기 위해 작년 말에 만들어졌다. 초기에는 Mozilla, Cisco, Akamai, EFF, id entrust 등이 모여서 ISRG(Internet Security Research Group)라는 새로운 SSL 인증기관을 만들어서 올해 SSL을 무료로 제공하겠다고 발표했다. 지금은 이 Lets’ Encrypt에 Facebook, 워드프레스를 만드는 Automattic, shopify 등 많은 회사가 스폰서로 참여하고 있다.

출처: Let’s Encrypt로 무료로 HTTPS 지원하기

Let’s Encrypt를 이용해 HTTPS 설정하기

우리가 지금까지 구축한 서버의 환경은 운영체제가 Ubuntu Server 14.04 LTS 이고, 웹 서버는 Apache2 를 이용하고 있다. 같은 환경이 아니면 설치 방법이 달라질 수 있으니 유의해야 한다. 설치과정은 Let’s Encrypt 사이트의 Getting Started 문서를 따라 진행된다.

서버에 Let’s Encrypt 설치

먼저 git 패키지를 설치한다. 설치되어 있지 않으면 GitHub에서 소스를 내려받을 수 없다.

~$ sudo apt-get install git

콘솔을 이용하여 서버에 SSH로 접속을 한 후 다음 명령어를 순서대로 입력한다.

~$ git clone https://github.com/letsencrypt/letsencrypt
~$ cd letsencrypt
~$ ./letsencrypt-auto --help

한줄 한줄 순서대로 설명을 하면,
1) GitHub에 있는 Let’s Encrypt 소스를 내려받고, (letsencrypt 디렉토리에 내려받는다)
2) letsencrypt 디렉토리에 들어가서,
3) letsencrypt-auto 를 실행한다.

세 번째 줄을 입력하게 되면, 알아서 의존성 관련 패키지들을 다운받고 설치한다. 꽤 많다.
여기까지 왔으면 거의 다 했다.

인증서 받고 적용하기

이제 다음 명령을 사용하면 끝이다(?).

~$ ./letsencrypt-auto

자신이 설정한 가상호스트에 따라서 목록은 많을 수도 있고 적을 수도 있다. HTTPS를 설정하고자 하는 도메인을 체크한 후, OK를 누른다.

letsencrypt_01

이메일을 입력하라는 창이 뜨는데 이메일을 잘 기입한다. 마지막으로는 Easy와 Secure가 뜰 것이다.

Easy는 HTTP와 HTTPS 연결 모두를 허용하는 것이고,
Secure는 HTTPS 연결만 되도록 하는 것인데, 상황에 따라 결정하면 될 것이다.
나는 후자를 선택했다.

일단은 이게 끝이다. 간단해서 좋다.
만약 가상호스트 설정에서 HTTPS 연결을 위한 설정을 해놨다면 알아서 수정을 해놨을 것이다.
이전에 설정해 놓지 않았다면, /etc/apache2/sites-available 디렉토리에 들어가서 파일 목록을 확인해 보라.

가상호스트 파일의 이름이 owncloud.conf 인 경우, owncloud-le-ssl.conf 가 새로 생겼을 것이다. 알아서 HTTPS 연결을 위한 설정 파일을 생성해 준다. (새로 생성한 파일 끝에는 -le-ssl가 붙는다)

그래서 끝이다.

덧글, 2016년 3월 16일 기준으로 이 블로그에도 HTTPS 보안 연결이 설정 되었다.

작성일 댓글 7개

우분투 자작 NAS – 2강, Ubuntu Server 14.04 설치 + SSH 접속하기

Ubuntu Server 14.04 LTS

우분투는 매년 4월과 10월 새로운 버전이 뜨고, 2년마다 4월 버전에 LTS가 붙는다. LTS는 Long Term Support의 약자로 장기 지원 버전을 뜻한다. 버전이 붙는 방식은 년도.월 (LTS 여부) 이다.
따라서 14.04 LTS 라고 하면 2014년 4월에 출시된 장기 지원 버전이라는 뜻이다.

Ubuntu Version
서버를 운영할 우분투 버전으로 LTS를 선택해야 함을 보여주는 표다. LTS의 지원 기간은 5년이다. 출처: 위키백과

서버로 사용할 우분투는 LTS를 선택해야 한다. 지원 기간이 짧아서 수개월 내에 지원이 중단된다면 서버의 유지 관리 측면에서 타격이 크기 때문이다.

설치 이미지 다운로드

14.04 LTS 다운로드 페이지 : http://ftp.daum.net/ubuntu-releases/trusty/

목록이 많이 있는데 Server용으로 다운로드 받는다. 요즘은 대부분 64비트를 지원하니 특별히 32비트를 사용해야 하는 것이 아니라면 64비트로 받는다.
32BIT용은 i386, 64BIT용은 amd64가 적혀있다.

귀찮은 사람을 위한 직링크
64BIT: http://ftp.daum.net/ubuntu-releases/trusty/ubuntu-14.04.2-server-amd64.iso
32BIT: http://ftp.daum.net/ubuntu-releases/trusty/ubuntu-14.04.2-server-i386.iso

네이티브? 가상화?

네이티브로 설치할 것이냐, 가상화를 사용하여 설치할 것이냐? 이런 고민이 있을 것이다.
네이티브로 설치한다는 것은 우분투서버로만 모든 시스템 자원을 사용한다는 것이고,
가상화를 이용한다는 것은 Host OS로 윈도우나 우분투 등을 설치하고, Hyper-V나 VirtualBox나 VMware를 이용해서 Guest OS로 우분투 서버를 설치한다는 것이다.

네이티브로 해도 상관없지만, 효율적인 사용을 위해서 가상화를 추천한다.
내가 사용하는 조합은 Host OS -Windows Server 2012 R2, Hypervisor – Hyper-V, Guest OS – Ubuntu Server 14.04 LTS 이다.
쉽게 말해, 윈도우서버 2012에서 Hyper-v를 이용해 가상PC를 만들어 우분투서버를 설치했다.

우분투를 좋아하는 내가 윈도우서버를 설치한 이유는 Hyper-V를 이용하기 위해서다. VMware는 유료 소프트웨어고 비용이 만만치 않다. 무료 버전이 있지만 기능의 제약이 많고 불안정한 것 같아서 꺼려진다. 서버의 필수요소는 안정성이기에. VirtualBox는 오픈소스 소프트웨어이고, 고급 기능을 제공하면서도 무료이다. 그러나 그래서 뭔가 아쉽다. 실제로 물리하드를 연결하는 부분에서 뭔가 잘 되지 않았다. 결국 윈도우를 설치하기만 하면 강력한 기능과 성능을 제공하는 Hyper-V를 선택할 수 밖에.

*3개 소프트웨어의 성능 비교를 위한 참고 글 – http://www.td21.com/bbs/2900

가상화를 구성하는 것은 여기서 소개하지 않는다. 어떻게 NAS를 운영할 것인지 결정해서 구성하면 된다.

서론이 꽤나 길어졌는데.. 이제 우분투서버를 설치해보자.

Ubuntu Server 14.04 LTS 설치

설치 이미지로 부팅을 하고 나서의 모든 과정을 스크린샷으로 첨부했다. 그림을 보면서 따라하면 된다.

Ubuntu Server Install 01
언어는 영어로 설치하는 것이 좋다. 한국어로 할 경우 글씨가 깨지게 되고 글씨 깨지는 것을 수정하기 위해 복잡한 과정을 거쳐야 한다. 그리고 GUI를 설치하지 않기 때문에 한국어로 나오지 않아도 문제는 전혀 없다.

Ubuntu Server Install 02

Ubuntu Server Install 03
다시 한 번, 언어는 영어로 한다.
Ubuntu Server Install 04
한국은 Asia의 Korea, Republic of 이기 때문에 other를 선택한다.

Ubuntu Server Install 05

Ubuntu Server Install 06

Ubuntu Server Install 07
많은 영어 로케일 중에서 기본 선택된 US를 선택한다.
Ubuntu Server Install 08
키보드 감지한다고 Yes를 하면 피곤해진다.

Ubuntu Server Install 10

Ubuntu Server Install 11

Ubuntu Server Install 13

Ubuntu Server Install 14

Ubuntu Server Install 15

Ubuntu Server Install 17
NAS의 적당한 이름을 적어준다. 나중에 네트워크 상에서 뜨는 이름이다.
Ubuntu Server Install 18
사용자의 이름을 쓴다. 사용자 ID와는 다르다.
Ubuntu Server Install 19
여기에 쓰는 것이 로그인할 때 필요한 사용자ID이다.
Ubuntu Server Install 20
비밀번호를 입력한다.
Ubuntu Server Install 21
한번 더 입력한다.
Ubuntu Server Install 22
홈 디렉토리를 암호화할 것이냐고 묻는데 No를 선택한다.

Ubuntu Server Install 23

Ubuntu Server Install 24
Asia/Seoul이 맞으므로 Yes를 선택한다.
Ubuntu Server Install 26
중요한 파티션 설정이다. Manual로 설정하지 않았다가 눈물 흘린 사람들이 많다. Manual로 한다.
Ubuntu Server Install 27
sda는 첫번째 하드를 말한다. 만약 장치가 2개 3개가 있었으면 순서대로 sda, sdb, sdc가 된다. 해당 저장장치를 선택하여 새로운 파티션 테이블을 생성한다.

Ubuntu Server Install 28

Ubuntu Server Install 29
파티션 테이블이 생성되었다. FREE SPACE를 선택한다.
Ubuntu Server Install 30
FREE SPACE를 선택하면 새로운 파티션을 만들 수 있다. 파티션 분할에 대해서는 검색해보고 결정하기 바란다. 여기서는 두번째 메뉴인 자동으로 파티션 설정을 했다.
Ubuntu Server Install 31
Finish를 선택하면 파티션 설정을 끝내고 적용한다.
Ubuntu Server Install 32
친절하게 확인차 한번 더 물어본다.

참고로 2개의 저장장치, 즉 OS용 하드디스크와 자료저장용 하드디스크를 구분해서 사용하는 경우라면 아래 그림과 같이 자료저장용 하드디스크에는 /home을 마운트 시킨다. 모두가 그런 것은 아니겠지만 나는 그렇게 한다.

Ubuntu Server Install 38

Ubuntu Server Install 40

Ubuntu Server Install 41
공란으로 냅두고 진행한다.

Ubuntu Server Install 42

Ubuntu Server Install 43
서버용이기 때문에 자동 업데이트를 거부한다.
Ubuntu Server Install 44
OpenSSH는 서버로 접속해서 작업하기 위해 반드시 필요하다. text로 이루어지는 원격 데스크톱이라고 생각하면 된다. LAMP server는 선택하지 않는다. 나중에 별도로 설치해 줄 것이다. Samba file server도 같이 설치해준다.

Ubuntu Server Install 45

Ubuntu Server Install 46

Ubuntu Server Install 47
Yes!
Ubuntu Server Install 48
설치 이미지나 장치가 자동으로 제거되지 않으면 수동으로 제거해주고 컨티뉴를 눌러 재시작한다. 설치는 이제 끝이다.
Ubuntu Server Install 49
이 포스트를 작성하기 위해 VirtualBox에 우분투서버 설치를 진행했다. 내 NAS를 또 뒤집어 엎을 수는 없으니까..
Ubuntu Server Install 51
뭐가 막 올라간다.
Ubuntu Server Install 52
막 올라가다가 깨끗해지며 부팅이 완료되었다.
Ubuntu Server Install 53
설치할 때 입력한 username과 password를 입력하면 로그인 성공이다.
Ubuntu Server Install 54
공유기 쪽에서 IP 주소를 이미 고정시켰으면 상관없겠지만, 서버의 IP 주소를 확인하는 명령어는 ifconfig이다. 두번째 줄에 inet addr:192.168.0.15가 구동중인 서버의 IP 주소가 된다.

다른 PC에서 SSH 접속하기

Ubuntu Server Install 55
위에서 알아낸 IP 주소를 가지고 다른 컴퓨터에서 터미널을 통해 SSH 접속을 할 수 있다. 터미널 프로그램 사용법은 찾아보면 금방 알 수 있다. putty, xshell 등이 있다. 위 그림은 리눅스민트17에서 기본 터미널을 이용해 서버에 접속한 화면이다.

우분투 계열에서의 SSH 접속은 기본 터미널(Ctrl + Alt + T로 단축실행 가능)에서 ssh username@IP-address 로 할 수 있다.
윈도우 계열에서의 SSH 접속은 putty(링크)나 xshell(링크)을 이용한다.

자 이제 우분투서버의 설치가 끝났다. 다음 포스트부터 본격적으로 NAS 서버로 만들어 보자.