작성일 댓글 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 보안 연결이 설정 되었다.

작성일 댓글 남기기

우분투 자작 NAS – 번외편 2, ownCloud 8.1 업데이트

ownCloud 8.1 업데이트

ownCloud가 6월 6일 메이저 업데이트로 인해 8.1 버전이 되었다. 굉장히 눈에 띄는 몇 가지 추가 기능이 있다.
다음은 ownCloud 홈페이지에 있는 체인지로그다. 밑줄과 진하게로 주목할만한 기능을 표시했다.

Version 8.1.0 July 6th 2015

  • Much polishing, stability and performance improvements
  • Encryption 2.0
  • Updated Documents
  • New Mount Options for External Storage
  • Federated Cloud ID
  • Integrated documentation
  • LDAP Wizard Improvements
  • Security Improvements
  • App store improvements
  • Release channels
  • ownCloud API work: 190 new calls, 50 replaced
  • Many small improvements

1. New Mount Options for External Storage (외부 저장소를 위한 마운트 옵션)

이건 정말 있으면 좋겠다고 자주 생각해오던 기능이다. 이제 ownCloud에 외부 저장소를 추가할 수 있게 되었다.

다양한 외부 저장소를 지원한다. 자기 서버의 저장소를 삼바나 로컬경로를 이용해 추가할 수 있고, 타인의 서버의 저장소를 FTP나 WebDAV를 이용해 추가할 수도 있다. 아니면 다른 ownCloud 주소와 계정을 이용해 추가할 수도 있다. 뿐만 아니라, Amazon, Dropbox, Google Drive와 같은 상용 클라우드 서비스를 외부 저장소로 추가할 수도 있다.

owncloud-external storage

참고로 자신의 서버에 있는 폴더를 연결할 때, 로컬로 연결하게 되면 권한 문제로 복합해질 수 있다. ownCloud에서는 읽기만 가능하고 수정과 삭제가 안되었다. 권한으로 해결하려다 간단하게 SMB(삼바) 연결로 변경하여 해결했다. 별다른 권한 설정 없이 삼바 서버를 이용중이라면 매우 간편하다.

2. App store improvements (앱스토어 향상)

8.1 버전을 처음 쓴다면 앱스토어에 별 다른 감흥이 없겠지만, 이전 버전을 써오던 사람이 8.1 버전의 앱스토어를 들어가면 놀라움을 금치 못할 것이다. 원하는 앱을 원클릭으로 설치할 수 있게 굉장한 improvement가 있었다.

기본적으로는 ownCloud로부터 인증을 받은 앱을 설치할 수 있게 되있지만, 옵션을 눌러 [실험적인 앱 사용]을 체크하면 인증받지 않은 앱들도 모두 설치가 가능해진다.

owncloud-app store

그러나 어떤 앱이든지, 꼭 테스트 서버에서 테스트를 거친 후 사용하는 것을 추천한다.

3. Release channels (업데이트 채널)

이전에는 7.1.0에서 7.1.1이 릴리즈 되면 업데이트 하라는 메시지가 ownCloud 상단에 떴었다. 리비전 혹은 마이너 업데이트[ref]리비전은 0.0.1 단위로 올라가는 것을 말하고, 마이너 업데이트는 0.1 단위로 올라가는 것을 말하는 것 같다. 메이저 업데이트는 맨 앞의 번호가 올라가는 것이다.[/ref]마다 업데이트하라고 알림이 뜬 것이다.

그러나 이제는 어떤 주기로 업데이트 알림을 볼 것인가 선택할 수 있게 되었다. 네 가지를 선택할 수 있는데, 운영, 안정, 베타, 매일이다. 그리고 상위 버전으로 업데이트만 가능하고 하위 버전으로 내려올 수는 없다.

owncloud-update channels

[운영]은 0.1 이상의 업데이트가 있을 때에만 알림을 준다.
[안정]은 0.0.1 단위로 알림을 준다.
[베타]는 0.0.0.1 단위로 알림을 준다.
[매일]은 아마도 데일리빌드[ref]A daily build or nightly build is the practice of each day doing a software build of the latest version of a program. (출처: 영어 위키백과)[/ref]로 업데이트를 해주는 것 같다.

지금 최신 버전은 8.1.1.3 인데, 내 ownCloud 서버는 8.1.0 버전이다. 현재 업데이트 채널을 [운영]으로 해놨기 때문에 업데이트가 있다고 알림이 뜨지 않는다. 그러나 [안정]이나 [베타]로 놓게 되면 바로 알림이 뜬다.

별것 아닌 기능같지만, ownCloud 서버를 유지 보수하는데 있어서 꽤나 도움이 된다. 사소한 업데이트에도 알림이 뜨지 않는다는 것은 잦은 업데이트에 대한 스트레스도 감소시켜 준다.

4. 모바일 환경 개선

체인지로그 목록에는 없는 부분이다. 이것은 실제로 사용하기 때문에 알 수 있는 변화다. 8.0.x 버전에서는 링크로 공유된 파일이 모바일 디바이스에서 다운로드되지 않는 치명적인 버그가 존재했다. 아이폰에서는 정상이었으나 안드로이드폰에서는 동작하지 않았던 것으로 기억한다.

하지만 이번 업데이트에서 완전히 해결되었다. 다운로드 버튼을 누르면 정상적으로 다운로드가 된다. 모바일로 파일을 보내줄 때는 링크를 보내줄 수 없었던 불편함이 사라지게 되었다. 아마 이 버그는 8.0.x 버전에만 존재한 것으로 보인다. 7 버전을 쓸 때는 전혀 그런 일이 없었기 때문이다.


8.1 버전의 몇가지 주목할만한 기능에 대해서 알아봤다. ownCloud를 6버전일 때부터 쓰고 있지만 빌드 번호가 하나 하나 높아질 때마다 상용 클라우드 서비스 못지 않게 좋아지는 것을 경험한다. ownCloud 서버 뿐만 아니라 그 위에서 동작하는 여러가지 앱 또한 함께 좋아지고 있다. 이 모두가 앞으로의 ownCloud를 더욱 기대하게 만든다.

 

작성일 댓글 11개

우분투 자작 NAS – 12강, ownCloud 업로드 제한 변경, 데이터 저장 위치 변경

10강 11강에서 ownCloud를 설치하고, 한글 관련 문제를 해결하고, 업데이트 하는 방법에 대해서 다루었는데, 몇 가지 사항을 더 다뤄야 할 필요를 느껴서 두번 정도 더 ownCloud에 관한 포스팅을 할 것이다.

먼저 이 포스팅에서는 다음 항목을 다룬다.

  1. 기본 업로드 가능 용량인 512MB를 8GB로 변경하기
  2. 기본 데이터 저장 폴더를 다른 폴더로 변경하기

하나씩 살펴보자.

업로드 용량 제한 변경하기

1. ownCloud의 .htaccess 파일을 수정한다.
sudo vi /ownCloud가_설치된_경로/owncloud/.htaccess

php_value upload_max_filesize 과 php_value post_max_size 항목을 찾아서 8G로 변경한다.

php_value upload_max_filesize 8G
php_value post_max_size 8G
2. php.ini 파일을 수정한다.
sudo vi /etc/php5/apache2/php.ini

upload_max_filesize 항목을 찾아서 8G로 변경한다.
(php.ini 파일의 41% 쯤에 있는데, ‘/’키를 누른 후 검색할 문자열을 입력 후 엔터를 치면 해당 문자열을 찾아준다. vi 기초 사용법 참조)

upload_max_filesize = 8G
3. 웹서버를 재시작한다.
sudo service apache2 restart
4. ownCloud 관리자 페이지에서 업로드 용량을 8G로 변경한다.

owncloud-upload-file-size

이제 용량의 제한이 (거의) 없이 업로드가 가능해졌다.
이제 데이터 저장 위치를 변경해보자.


데이터 저장 위치 변경하기

데이터 저장 위치를 변경하는 방법에는 두 가지가 있다. ownCloud를 설치할 때 지정해 주는 방법과 이미 설치한 상태에서 데이터를 옮기고 저장 위치를 변경해 주는 방법이다. 하나씩 살펴보자.

ownCloud를 설치할 때 지정하기

다음은 ownCloud를 설치할 때 입력해야 하는 정보들이다. 중간에 보면 [데이터 폴더]라는 항목이 있고, 기본 저장 위치인 [/owncloud가_설치된_경로/data]가 적혀 있을 것이다.

owncloud-install-02

1. 먼저, [데이터 폴더] 텍스트 박스에 원하는 경로를 지정해 준다(설치 완료를 누르지 않는다).

예를 들어, /home/사용자이름/owncloud_data 에 저장하고 싶다고 해보자.

2. ssh로 접속해 해당 위치에 폴더를 생성하고 소유자와 권한을 변경한다.
$ sudo mkdir /home/사용자이름/owncloud_data
$ sudo chown www-data:www-data /home/사용자이름/owncloud_data
$ sudo chmod 775 /home/사용자이름/owncloud_data
3. 이제 웹브라우저로 돌아와 ownCloud 설치를 진행한다.

이미 설치된 ownCloud의 데이터 경로 변경하기

1. 우선 웹서버 서비스를 멈춘다.

sudo service apache2 stop

2. 변경하고자 하는 위치에 폴더를 이동하고 소유자를 변경한다.

예를 들어, /home/사용자이름/owncloud_data 에 저장하고 싶다고 해보자.

$ sudo mv /owncloud가_설치된_경로/data /home/사용자이름/owncloud_data
$ sudo chown www-data:www-data /home/사용자이름/owncloud_data
3. ssh로 접속해 ownCloud의 설정 파일을 수정한다.
$ sudo vi /owncloud가_설치된_경로/config/config.php
[datadirectory] 부분을 찾아 바뀐 경로로 수정한다.

'datadirectory' => '/home/사용자이름/owncloud_data',
4. 웹서버를 다시 시작한다.
sudo service apache2 start

굳이 데이터 저장 폴더를 따로 둘 필요가 있냐고 할 수 있다. 물론 옮기지 않아도 사용하는데는 전혀 상관없다.
그러나 데이터 관리에 있어서 좀 더 유용할 수 있기 때문에 추천한다.


다음 포스팅에서는 서드파티 앱 몇 가지를 추천해볼 것이다.

작성일 댓글 한 개

우분투 자작 NAS – 11강, ownCloud 업데이트하기

지난 강의에서는 ownCloud를 설치하고 PC에서와 모바일에서 사용하는 방법을 알아봤다. 이번 강의에서는 ownCloud를 업데이트 하는 방법을 알아본다.

사족을 달면, ownCloud가 출시된지 벌써 꽤 시간이 지났는데도 국내에 많이 알려지지 않았기 때문에 (아니면 알려졌음에도 불구하고 한글로 된 자료가 별로 없어서 그런지) 활성화된 커뮤니티가 없다. 블로그를 뒤져도 설치나 특히 업데이트에 대한 정보가 별로 없다. owncloud.org가 제공하는 문서가 있지만, 영어라서 눈에 잘 안들어온다. 여튼 업데이트를 해보자.

업데이트 알림

ownCloud를 설치하고 쓰다보면 다음과 같은 상단 배너가 떠서 업데이트가 존재함을 알려준다.

owncloud-update-01

ownCloud 백업

언제나 업데이트를 하기 전에는 반드시 해야할 것이 있는데, 바로 백업이다.
사실 잘 안하게 되는데, FM대로 하면 백업은 필수다. SSH로 작업한다.

백업해야 할 항목은 두 가지다.

  • ownCloud 파일
  • ownCloud 데이터베이스

이때 여기서 사용자 데이터는 백업하지 않는다. 용량이 클 경우 너무 오랜 시간이 걸리기 때문이다.

ownCloud 파일 백업

다음 명령어로 데이터 폴더를 제외한 ownCloud 파일들을 백업한다.

~$ tar czfp ~/oc-file-backup.tar.gz --exclude [ownCloud가 설치된 경로/data] [owncloud가 설치된 경로]

괄호는 빼고 ownCloud가 설치된 경로를 입력한다.

~$ mysqldump --lock-tables -u[아이디] -p[암호] owncloud-db-name > ~/oc-db-backup.sql

-u와 -p 다음에 아이디와 암호를 입력할 때는 띄어쓰기 없이 붙여쓴다. owncloud-db-name에는 자신의 ownCloud 데이터베이스 이름을 쓰면 된다.

이제 자신의 홈 폴더에 oc-file-backup.tar.gz와 oc-db-backup.sql 두 개의 파일이 생겼을 것이다. 백업 완료.

업데이트 센터

이제 업데이트 센터로 들어가야 한다. 7.0부터인지 업데이트 센터 기능을 제공한다. 콘솔에서 명령어로 작업하지 않아도 돼서 많이 편리해졌다.

오른쪽 상단의 계정 정보에 마우스를 대면 드롭다운 메뉴가 펼쳐진다. [관리자]를 눌러 설정 화면으로 들어간다.

owncloud-update-02

그리고 중간쯤 해서 업데이트 센터로 가는 링크가 존재한다. 왼쪽 메뉴에서 [업데이트]를 눌러도 나온다. [업데이트 센터 열기]를 누른다.

owncloud-update-03

업데이트 실행

다음이 [업데이트 센터]다. [업데이트]를 눌러서 업데이트를 진행한다.

owncloud-update-04

순서대로, 1. 기존의 파일들을 백업하고(데이터 파일이 아닌 ownCloud 파일들), 2. 최신 패키지를 다운로드한 후, 3. 기존 ownCloud의 파일들을 최신버전으로 교체한다.

owncloud-update-05

데이터베이스 업그레이드

3단계의 작업이 모두 끝나면, 데이터베이스 업그레이드를 해야 한다. [진행]을 누른다.

owncloud-update-06

다음과 같은 화면이 나오는데, [업데이트 시작]을 눌러준다.

owncloud-update-07

업데이트 성공! 이 아니라 다음과 같은 에러 메시지가 뜰 것이다. 뭐라고 하는지 잘 모르겠다. 여튼 문제가 되는 것은 SQL의 설정 값이 BINLOG_FORMAT = STATEMENT 라서 바이너리 로그를 기록할 수 없다는 것이다.

*만약 에러 메시지가 발생하지 않느다면, 다음 부분인 에러 해결방법은 건너띄면 된다. 8.0.2에서만 발생하는 것인지도 모른다.

owncloud-update-08

데이터베이스 업그레이드 에러 해결방법

이 강의 시리즈에서는 MariaDB를 설치했는데, MySQL도 동일하다.

터미널로 작업

나스 서버의 MariaDB에 접속하여 작업한다.

mysql -u root -p owncloud-db-name 입력해 MariaDB의 ownCloud 데이터베이스에 바로 접속한다.
(owncloud-db-name은 자신이 정한 owncloud의 데이터베이스 이름을 적으면 된다)
비밀번호를 입력하면 다음과 같이 나온다.

$ mysql -u root -p owncloud-db-name
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 114057
Server version: 5.5.42-MariaDB-1~trusty-log mariadb.org binary distribution

Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [owncloud-db-name]>

SET GLOBAL binlog_format = ‘MIXED’; 를 이용해 binlog_format의 값을 바꿔준다.
다음과 같이 나오면 된 것이다.

MariaDB [owncloud-db-name]> SET GLOBAL binlog_format = 'MIXED';
Query OK, 0 rows affected (0.00 sec)

MariaDB [owncloud-db-name]>

phpMyAdmin으로 작업

터미널 SSH로 작업한 것이 어렵다면 웹에서 작업해보자. phpMyAdmin은 저번에 설치 했을 것이다. 웹브라우저에서 phpMyAdmin에 접속하여 로그인한다.

IP주소/phpmyadmin 이나 도메인주소/phpmyadmin 으로 접속하면 된다.

로그인하면 다음과 같이 뜰텐데, 메인화면 상단의 메뉴 중에서 [환경설정값]에 들어간다.
그리고 [포함하고 있는 단어] 입력 창에 [binlog format]을 입력하면, 목록에 binlog format만 뜰 것이다.

owncloud-update-09

마우스 커서를 목록 가운데 쯤 위치시키면 [수정]이라고 뜬다. 클릭해서 값을 “MIXED”로 변경해주면 끝이다.

owncloud-update-10

업데이트 재개

이제 문제가 해결되었다. 자신의 owncloud에 다시 접속하면 업데이트를 다시 시도할 수 있다. [업데이트 시작]을 누른다.

owncloud-update-11

이제 뭔가 제대로 돌아가는 것 같다.

owncloud-update-12

업데이트 성공!
서드파티 앱들은 자동으로 비활성화 된다. 사용하려면 다시 활성화 시켜줘야 한다.

owncloud-update-13

업데이트된 버전 확인

[관리자] 설정에 들어가서 스크롤을 맨 밑으로 내리면 버전 항목이 나온다.
ownCloud 8.0.4 업데이트가 정상적으로 됐다.

owncloud-update-14