2017년 2월 14일 화요일

HTTPS로​ 업그레이드하기​

크롬이 ​최근 업데이트에서 예고한 대로 HTTP 페이지에 암호 입력 폼이 있을 경우 안전하지 않다는 경고를 주소창 앞쪽에 붙이고 있습니다.


우리나라에서는 알고 있었는지 모르고 있었는지 모르지만 크롬 업데이트 (한국의 크롬 브라우저 점유율은 많이 높아져서 ​50% 정도 라고 합니다) 이후 주로 네이버 홈 페이지를 중심으로 기사화가 되고 있습니다.


한겨레 기사를 바탕으로 한 아래와 같은 반론 글도 접할 수 있고요.


HTTPS 로 업그레이드하기

국내에는 주로 웹사이트를 HTTP로 제작하고 HTTPS의 경우 비용이나 성능 등의 문제를 들어 꼭 필요한 부분 (로그인, 결제 등)만 HTTPS 처리를 하는 것이 일반적인데 비해, 주로 영미권에서는 도청이나 검열 문제를 들어 사이트 전체를 HTTPS화하는 움직임이 이미 몇년전부터 있어 왔고, 크롬의 업데이트도 그런 이동을 가속화하고자 하는 취지가 아닌가 합니다.

성능 저하에 대한 우려


SSL/TLS의 성능 문제에 대해서는 아래 사이트에서 많은 내용을 찾아볼 수 있습니다.


현재로서는 적당히 좋은 하드웨어를 사용하는 경우 SSL화로 인한 CPU 부하는 1%, 네트워크에 추가로 전송되는 데이터는 2% 정도라고 합니다. 서버 하드웨어의 경우 CPU에서 지원하는 하드웨어 가속 기능 등을 충분히 활용할 경우라 볼 수 있겠습니다.

따라서 성능의 경우 현재는 많은 부분이 선입견이라 할 수 있고, 실제 문제는 다음과 같은 점에 있지 않을까 합니다.

  • 신규로 TLS를 설정하는 번거로움
  • 인증서 구매 및 정기적으로 업데이트하는 번거로움

각각의 경우에 대해서 요즘 많이 이용되는 방법을 알아보도록 하겠습니다.​

신규로 TLS를 설정하는 번거로움

신규 TLS 설정은, 일단 웹서버에 TLS 기능을 넣는 것부터 시작해서, 웹사이트가 100% TLS에서 잘 동작 하는지, HTTP 로 접속하는 경우 자동적으로 HTTPS로 리다이렉트가 되는지, 주된 사용자 계층에서 접속에 문제가 없는지 확인하는 등등의 작업이 포함 됩니다.

TLS 의 최근 이슈는 주로 보안 관련인데, OpenSSL을 사용하는 경우 업데이트가 최신 버전까지 되어 있는지 확인 하고, 설정 후에 꼭 ssllabs 를 이용해서 사이트의 TLS 보안 수준을 확인 하는 것이 좋습니다. A+ 로 만드는 것이 최종 목표이지만 이용자 환경에 따라 그렇지 못한 경우가 있다는 점도 주의해야 할 것입니다.


테스트 할 사이트는 인터넷 접속이 가능해야 하며, 공개 기록을 남기지 않으려면 ​Hostname 아래에 있는 체크 박스를 꼭 체크 하도록 하세요.

TLS 설정에는 여러가지 옵션이 있고 Cipher List 등, 웹 서버별 설정이 번거로운 점이 많습니다. 일단 오픈 소스 웹 서버 (nginx, lighttpd, apache 중 하나)를 사용한다면 일단 아래 사이트의 내용을 복사해서 쓰세요.

Cipherli.st Strong Ciphers for Apache, nginx and Lighttpd

위 사이트의 설정 파일을 사용한다면 대부분 문제는 없습니다만 (SSLLabs 에서 A+ 받을 수 있는 수준입니다) 반대로 오래되거나 취약한 암호 알고리즘 등을 모두 배제하고 있으므로 오래된 브라우저 (XP + IE 6 등)에서는 아예 접속이 안될 수 있습니다. 이점 유의해서 작업 하면 됩니다.

인증서 구매 및 정기적으로 업데이트하는 번거로움

사실 이게 더 문제일 수 있는게, 비용도 그렇지만 정기적으로 (보통 1년) 업데이트를 해야 하기 때문에 관련 예산이 확보되지 못한 공공기관이나 소규모 회사, 또는 별도의 웹사이트 관리자가 없는 경우 라면 인증서가 만료된 이후에도 업데이트가 제때 이루어지지 않을 수 있으므로 더 문제가 생길 수 있습니다. HTTP 로 만들어진 사이트면 서버만 돌아가고 해킹만 당하지 않으면 몇년동안 방치해도 괜찮을 수 있지만 HTTPS로 바꾸면 정기적인 인증서 관리는 필수가 됩니다.

웹사이트용 SSL인증서는 인터넷에서 쉽게 구매할 수 있지만 역시 비용이 문제가 되고, EV Multi Domain과 같이 추가 비용이 드는 경우도 있습니다.

여기에 대한 대안으로 StartSSL과 같은 ​무료 인증서 발급 기관도 있었으나 보안상 문제가 있어서 지금은 사용하지 않는 것이 좋으니, 직접 구매해서 설치하는 경우를 제외하면 다음과 같은 선택지가 있습니다.
  • 클라우드 업체에서 제공하는 인증서를 이용하기
  • CDN 업체에서 제공하는 HTTPS 서비스를 이용하기
  • Let's Encrypt 를 이용하여 직접 발급 받기

클라우드 업체에서 제공하는 인증서를 이용하기

AWS 의 경우 자체적인 인증서 발급 서비스를 이용할 수 있습니다. ELB와 CloudFront 서비스에 붙이고 웹사이트 주소를 바꾸는 방식이 되겠지요. 다만 자체 발급되는 만큼 직접 키를 다운받을 수는 없으므로 다른 서비스에 이용하거나 자체 웹사이트에 적용은 불가능합니다.

CDN 업체에서 제공하는 HTTPS 서비스를 이용하기

CDN은 웹사이트 앞단에 존재하기 때문에 오래 전부터 SSL서비스를 제공해 왔습니다. 일정 규모가 있는 CDN회사는 모두 SSL서비스를 하고 있으니, 이용하고 있는 CDN회사가 있다면 직접 문의해 보시면 SSL에 대한 해결책을 얻을 수 있을 겁니다. 보통은 다음 3가지 중 전부 내지 일부를 제공할 것입니다.
  • 와일드카드 인증서에 고객 도메인 추가. 가격은 저렴하고 직접 인증서를 발급받을 필요는 없지만, 인증서 내용에 자신의 것이 아닌 도메인도 잔뜩 포함되어 있을 수 있습니다
  • 직접 보유한 인증서 업로드 또는 제휴된 인증서 회사를 통한 발급 후 인증서 업로드​
무료로 HTTPS 서비스를 받으려면 현재로서는 CloudFlare 가 ​제일 좋은 해결책입니다. 무료 플랜에서도 SSL지원이 되므로 개인 웹사이트 등을 손쉽게 전환이 됩니다. HTTP 웹사이트를 이미 갖고 있다면, CF에 가입해서 SSL 서비스를 활성화 하고 DNS를 전환하는 작업이 필요하게 됩니다.
CF는 와일드카드 인증서를 쓰고 있으므로 ​인증서 조회하면 인접한 도메인도 보이게 될 것이고, 키를 다운받을 수는 없습니다.

Let's Encrypt 를 이용하여 직접 발급 받기

개인 웹사이트라면 ​Let's Encrypt 를 통해서 무료로 인증서를 발급받을 수 있습니다.


웹사이트에 파일을 직접 올릴 수 있는 권한 정도만 있으면 인증서를 발급받을 수 있습니다만, 3개월 후 만료되는 짧은 인증서를 발급해 주므로 3개월마다 갱신하는 일이 필요 합니다. 이는 certbot 을 이용해서 자동화할 수 있으므로, 홈페이지가 있는 서버에 프로그램을 설치할 수 있다면 주기적으로 업데이트하는 것 만으로 인증서 관리가 쉬워 집니다. 

아래 사이트에 접속해서 운영체제와 사용하는 웹 서버를 선택하면 인증서 발급 방법이 안내 됩니다.



끝으로


HTTP 사이트를 HTTPS 화 하는 몇가지 최근 방법을 살펴 보았습니다. 시대는 흘러 흘러 이미 HTTP/2 로 가고 있는데, HTTP/2 에서는 TLS가 필수 이므로, 일단 사이트를 HTTPS 전용으로 만들 수 있다면 HTTP/2는 웹 서버 소프트웨어 업그레이드 정도만 남겨 놓았다고 보면 됩니다. 시간이 되면 그 부분에 대해서도 별도로 글을 작성 하도록 하겠습니다.




















2017년 2월 3일 금요일

MSX TurboR FS-A1GT!!!


MSX 최후의 사양인 Turbo R, 두 종류밖에 나오지 않은 기종 중 마지막 기종이자 최강의 스펙을 자랑하는 FS-A1GT 를 손에 넣었습니다! 90년 발매되어 95년까지 판매하였다고 하니, 최고 27년 된 머신이죠. 제가 가진 것의 생산일은 알 수 없지만, 90년에 MSX매거진에서 대대적으로 TurboR 에 대해서 다룰때 침만 흘리고 있던 저로서는 27년만에 이 머신을 구할 수 있었습니다. 감격 감격

방법은 의외로 쉬었는데 야후저팬 옥션에서 평범하게 입찰을.. 하는데 그동네는 아무래도 현지인이 아니면 불편한 점이 많아서 (일본 살때 해볼걸 그랬어요), buyee.jp 에서 외국인 내지 외국 거주자를 위한 입찰 대행 서비스를 하고 있습니다. 그렇다고 해도 직접 입찰 해야 하는 건 변하지 않지만요.

사실 이제와서 MSX를 구한다고 하면 기왕 구할 바에야 최고스펙의 FS-A1GT를 원하게 됩니다만, 여의치 않으면 동일한 Turbo R인 FS-A1ST도 좋은 선택입니다. 부품 수급 문제로 하나 더 사야 할까도 생각 중입니다만.... 대략 야후저팬 옥션에서는 2017년 초 기준으로 GT 기준으로 풀 박스셋이 약 17만엔 정도, 동작하는 본체는 약 6-7만엔 정도로 보면 되지 않을까 싶네요. ST는 3만엔 정도면 본체를 구하는게 가능할 듯 싶습니다. 그런데 출품 자체가 이제는 매우 적으니 나올때 바로바로 챙겨 두는게 차라리 속 편할것 같습니다. 가격이 적당 하고 동작하는 것이라면 입찰될 확률이 높습니다.

제가 구한 것도 R-TYPE (이것도 저에게는 기억나는 사연이 있지만)이 잘 동작하고 있고, 디스크도 어느 정도는 동작하는 것 같은데 일부 오동작하는 부분이 있어서 플로피 드라이브를 계속 사용 하려면 아예 새걸로 교체 하든가 하는 일이 필요할 것 같습니다만, SD 스토리지를 주문한게 있으니 그게 잘 되면 플로피를 써야 할 이유는 많이 줄어들 것 같습니다. 하지만 일단 3.5인치 플로피 한박스와 맥용 플로피 드라이버를 확보 했으니 급하면 어떻게는 되겠죠. R-TYPE은 미국 ebay에 있길래 낼름 확보했습니다.​ 미국 ebay 에서도 MSX관련 제품이 꽤 있으므로 한번 둘러 보는 것도 좋을것 같네요.​

현재의 문제는 소리가 나지 않는다는 건데... 디스플레이는 S단자 (S-Video) -> HDMI 업스케일러를 사용해서 연결해 두었습니다. 그건 좋은데 S단자 자체가 오디오 지원을 하지 않다 보니 소리가 나지 않는 문제가 있네요. 오디오 단자는 아무리 찾아도 없고... 좀 찾아 보니 GT의 경우는 비디오는 S단자 또는 RGB (8-pin DIN) 이고 소리는 RGB쪽에만 들어 있다고 하니, 어떻게든 RGB 쪽의 오디오를 끌어낼 방법을 찾아야 할 것 같습니다. 사용중인 모니터는 LG 풀 HD인데, 사진과 같이 와이드라서 실제보다 좌우가 긴 문제가 있습니다. 다만 일단 그건 참고 보면 되니까 오디오부터 해결해야 겠네요.
(추가: 박스 밑바닥에 RGB-SCART 케이블과 조이패드가 있었는데 모르고 있었습니다! SCART-HDMI 컨버터를 테스트해 볼 수 있겠네요. 조이패드는 뭐 있으면 좋긴 한데 예전에도 그리 쓰지는 않았는지라)​

지금 봐서는 S단자 대신 RGB -> SCART -> HDMI 변환을 이용해서 모니터를 연결하고 스피커는 오디오 잭으로 따로 연결하는 방식이 유력할 것 같습니다. RGB 에서 오디오 핀 따서 자체 제작하는 경우도 있을것 같은데 일단 그건 2순위로 생각해야 할 것 같네요.

이외 현대적인(?) MSX 주변기기를 몇 주문해 두었으니 도착하는 대로 테스트하고 소개하는 시간을 갖도록 하겠습니다.​

2016년 11월 14일 월요일

MeetBSD CA 2016 참석기


MeetBSD CA는 2008년부터 2년마다 열리는 행사로 2014년 산호세의 웨스턴 디지탈사에 이어 올해는 BSD의 고향이라 할 수 있는 캘리포니아 버클리 대학교의 Clark Kerr 캠퍼스 내에 있는 Krutch Theatre에서 열렸습니다.


MeetBSD 행사는 기술 컨퍼런스라기 보다는 유저그룹이 모이는 행사에 가까운데, 지난번에 비해서는 아주 자세한 기술 이야기는 줄고 그보다는 현황에 대한 업데이트라든가 언컨퍼런스 형태의 모임 위주로 진행이 되었습니다. 아무래도 기술적인 이야기는 EuroBSD, BSDCan, AsiaBSD에서 주로 다루고 있고, 이름에서도 알 수 있듯이 지역 행사에 더 가깝기 때문입니다.

그중 몇몇 세션에 대해서 살펴보면, (놓친 것도 있습니다)

Day 1


Devin Teske, "Netgraph vs epair+if_bridge in the context of vimage jails; Using and managing vimage jails"

jail 안의 networking (VIMAGE 사용)에 대한 이야기입니다. 기존의 jail 방식에 추가로 VIMAGE커널을 하나 구축해서 jail 내에서 독립적인 네트워킹을 할 수 있는데 netgraph 와 if_bridge 두가지 방법으로 호스트와 브리지 형태의 네트워크를 구축할 수 있네요.

Krste Asanovic, "RISC-V: Instruction Sets Want To Be Free"
RISC-V는  CPU 아키텍처 책에도 나오는 RISC ISA (Instruction Set Architecture) 의 다섯번째 에디션으로 오픈 소스 형태로 개발이 되고 있습니다. Intel의 IA-32, IA-64, ARM의 ARM v7 등이 많이 쓰이는 ISA의 대표적인 예인데, 상용이기도 하고 오래 되다 보니 한 명령이 너무 많은 일을 수행하는 경우도 있다고 합니다. RISC-V는 간단하고 확장 가능한 아키텍처를 지향하고 있고, 실제 하드웨어와 컴파일러를 위해 여러 업체나 오픈소스 프로젝트와 협력하고 있다 합니다. FreeBSD와 같은 오픈 소스 OS는 이런 오픈 아키텍처 위에서 돌아가는데 매우 적합 하겠죠.

Sean Chittenden, "Using FreeBSD in the Cloud, Development to Prod"

HashiCorp (consul, terraform 등으로 유명하죠) 의 Sean 씨는 FreeBSD를 클라우드상에서 이용하는 방법에 대해서 GCE기반으로 설명을 해 주었습니다. 요즘에는 다수의 서버나 VM을 다루는 일이 많아 졌으므로 단순히 OS만 설치하는게 아니라 어떻게 설정 관리를 하는지도 매우 중요합니다. 

Matt Ahrens, "History of ZFS and OpenZFS"

Matt 씨는 선마이크로시스템즈에서 ZFS를 개발한 핵심 개발자 중 한명인데, 2001년 이후 ZFS의 역사에 대해서 발표를 하였습니다. 처음에는 솔라리스용으로 개발하다 선이 오라클로 인수되고 여러가지 역사를 거치면서 ZFS는 2011년 오픈소스화되어 지금은 FreeBSD에서 매우 밀어 주는 파일시스템이 되었고 FreeNAS 등의 스토리지나 기타 몇몇 스토리지 어플라이언스에서도 사용되고 있습니다. zfs는 FreeBSD 궁합이 잘 맞고 부트 파일시스템으로도 이용 가능하기 때문에 기존의 FFS를 완전히 대체할 수 있습니다.
리눅스에서도 ZFS on Linux가 있고 (라이센스 이유로 커널에는 정식 포함은 안되고 있습니다) Ubuntu 가 ZFS를 기본 채용한다고 해서 화제가 되기도 하고요. 처음부터 상용으로 개발이 된 것이라 매우 안정적이고 (대신 메모리를 좀 먹는데 요즘에는 큰 문제는 안됩니다) 매우 확장성이 높은 것이 특징입니다.

Michael Dexter, "Not Only is BSD Coming Home to Roost But so is the bhyve Hypervisor!"

FreeBSD에는 가상 OS를 쓸 수 있게 해 주는 네이티브 하이퍼바이저로 bhyve가 있습니다. Michael 씨는 bhyve 프로젝트의 창시자이자 리더인데, bhyve 프로젝트의 역사와 현황에 대해서 발표를 하였습니다. 지금은 게스트 OS로 FreeBSD 뿐 아니라 리눅스, 윈도우 등도 모두 사용 가능하고 게스트 콘솔용 RDP 서버도 지원하는 등 대부분의 하이퍼바이저에서 지원하는 기능을 모두 포함하고 있습니다. 향후에 큰 발전이 기대되는 프로젝트이기도 합니다.

Day 2

Jordan Hubbard, "FreeNAS 10: The Challenges of building a modern Enterprise Storage Appliance on FreeBSD"

FreeBSD 프로젝트 창시자이자 현재는 iXSystems의 CTO인 Jordan씨가 FreeBSD 기반의 스토리지 OS인 FreeNAS 10 에 대해서 소개를 하였습니다. UI가 잘 되어 있고 ZFS기반인 것이 특징입니다. FreeNAS 프로젝트 자체도 오픈 소스이니 집이나 회사에서 스토리지 서버 만들 때 쉽게 활용할 수 있습니다. 특이하게 UI를 통해서 bhyve기반의 VM이나 이를 활용해서 Docker 컨테이너를 만드는 데모 (리눅스 게스트 위에서 돌아가는)도 보여 주었는데, Docker와 같은 컨테이너 기술은 *BSD가 아직 부족한 분야 이기도 합니다. jail 이 오래전부터 있어 왔지만, Docker 는 널리 사용되는 점도 있고 패키징이나 업데이트등의 관리가 용이하다는 것이 더 좋은 점이겠지요.

아무래도 Jordan 씨는 BSD관계자라면 대부분 아는 사람이다 보니 자기소개 없이 시작했는데, 나중에 '자기 소개 부탁 드립니다'라고 물어 보는 사람이 있어서 다른 청중들이 웃기도 했습니다.

Kris Moore, "Unveiling TrueOS"

PC-BSD는 FreeBSD 기반의 데스크탑 OS입니다. 이번에 이름을 TrueOS로 바꾸었는데, 기본적으로는 FreeBSD를 더 데스크탑에서 이용하기 쉽게 다시 패키징하고, 관리 UI를 제공하고 있다고 보면 됩니다. 노트북 등에서 사용할 BSD를 선택할 때에는 FreeBSD에서 시작하기 보다는 PC-BSD (이제는 TrueOS) 에서 시작하는게 아무래도 편리한 점이 많습니다. GUI 설치도 가능 하고요. 이름을 바꾸게 된 것은 BSD기반이기는 하지만 데스크탑과 서버를 모두 포괄하는 범용 OS로 나가고자 하는 의지가 있지 않나 싶습니다.

새 버전에는 GNOME/KDE/XFCE와 유사한 X윈도우 기반 데스크탑 환경인 Lumina Desktop 이 기본이 되었고 (기존에는 GNOME/KDE/XFCE 등을 고를 수 있었습니다), 시스템 설정 UI가 SysAdm 으로 변경되고 API 서버로도 제공, FreeBSD 릴리즈를 따라가는게 아니라 -CURRENT를 따라가는 업데이트 시스템, base의 pkg화 등 내부적인 변화가 많이 있습니다. 데스크탑에서의 요구를 반영하다 보니 FreeBSD에서는 설치 단게에서 기본적으로는 제공되지 않는 사운드 시스템(PulseAudio)이나 몇몇 패키지의 옵션 변경등도 추가되어 있습니다.

Allan Jude, ZFS Discussion Panel

Allan씨는 Michael Lucas 씨와 함께 FreeBSD Mastery: ZFS를 쓰는 등 FreeBSD 활동이 매우 활발한 분입니다. 관련 개발자들과 같이 하는 Q&A였습니다.

Kylie Liang, PCI pass-thru

마이크로소프트는 자사의 Azure 클라우드 서비스에 FreeBSD를 기본 제공하는 등 리눅스 이외에도 오픈 소스 OS 지원을 하고 있습니다. 이 발표는 MS의 Hyper-V 하이퍼바이저의 PCI Passthrough 기능을 FreeBSD가 지원하게 되면서 호스트에 있는 하드웨어 (네트워크 카드 등)을 직접 하드웨어 수준에서 접근 가능하게 되었다는 내용 입니다. SR-IOV도 지원 예정이라고 하네요.


그외 FreeBSD 10.3이 Azure에 올라 왔고, OpenBSD도 예정이라고 하네요.


또한 중국에서 처음으로 BSD Meetup를 열 예정이라고 합니다.


이번 MeetBSD CA 2016에서는 최근에 많이 화제가 되었던 zfs, bhyve, PC-BSD, FreeNAS등의 주요 프로젝트는 대부분 다루어지긴 했습니다만, FreeBSD(또는 그 기반 OS)에 대한 내용이 대부분이었고 NetBSD나 OpenBSD관련 내용이 없던 것이 조금 아쉬웠습니다. 그외 각 프로젝트의 역사 등에 대한 세션도 유익 했고, 마이크로소프트가 지속적으로 BSD에 대한 지원을 하고 있는 점도 인상적이었습니다. 알게모르게 많은 발전이 이루어지고 있는지라 많은 공부가 되었습니다. VIMAGE커널이나 bhyve는 저도 써본적이 없는데 한번 시도해 봐야 겠고요.

오픈소스의 역사를 살펴 보면 OS가 매우 큰 부분을 차지 하지만, 요즘에는 서버 쪽에서는 클라우드 기반 서비스, 빅데이터, 클라이언트는 웹이나 모바일 개발의 비중이 늘어 나면서 OS자체의 관심은 상대적으로 줄어든 게 아닌가 합니다. 또한 클라우드나 빅데이터의 경우에도 OS의 선택은 대부분 리눅스가 되다 보니 아마존, 마이크로소프트, 구글 등의 큰 벤더 이외에는 BSD 등을 기본 제공해 주는 클라우드는 많지 않은 것이 현실입니다. 그런 점에서 보다 적극적으로 클라우드, 빅데이터, 컨테이너 등에 대한 지원이 더 필요하지 않을까 싶습니다.