20100130 :: RSS없는 웹페이지 추적하기 – Google Reader

RSS란?

흔히 feed라고도 이야기하는 RSS는 자주 변경이 일어나는 웹페이지나 웹사이트의 내용을 전체 혹은 일부와 해당 페이지의 메타 데이터를 합쳐서 변경 사항을 발행하도록 하는 기술입니다. 특히 블로그나 뉴스 사이트 같은 곳에서 많이 사용합니다. 위에서 보이는 저 이미지가 RSS를 나타내는 아이콘입니다. RSS는 사이트의 내용이 업데이트될 때마다, 이를 능동적으로 알려주는 역할을 하게 됩니다. 따라서 RSS를 구독하면 즐겨찾기 대순방과 같은 수고를 덜지 않고도 관심있는 사이트의 새로운 소식을 받아 볼 수 있게 됩니다. 물론 이러한 기술은 웹사이트나 특히 블로그를 운영하는 사람들에게는 자신의 콘텐트를 널리 퍼트리는 좋은 수단이 되기도 하지요.

RSS는 어느 덧 아주 많이 일반화가 되었습니다. 우선 양적으로 지난 몇 년간 급속히 성장을 한 블로고스피어를 이루고 있는 많은 블로그들이 RSS를 통해 게시물을 발행하고 있으며, 시시각각 새로운 기사 및 수정된 기사가 올라오는 신문사 홈페이지들도 분야별로 RSS를 제공합니다. 이러한 RSS는 RSS 구독기를 통해 매번 해당 블로그나 신문사 홈페이지를 방문하지 않고 새 게시물을 한 곳에서 받아볼 수 있습니다. 국내에는 HanRSS가 꽤 유명한 편이고, 구글에서도 구글Reader라는 RSS 구독 서비스를 제공하고 있습니다.

RSS가 없는 페이지를 구독하기

하지만 RSS는 DB에 업데이트가 발생하는 시점에 서버 스크립트 등을 통해 새 버전의 XML파일을 생성해주는 기능을 웹 사이트가 지원해야 사용이 가능합니다. 하지만 모든 웹사이트 혹은 웹 페이지가 이러한 기능을 지원하는 것은 아닙니다. 관심있는 정보가 새로 올라오기를 기다리는 사이트가 있는데, 이 곳에서 RSS 피드를 제공하지 않는다면 매일매일 부지런히, 생각날 때 마다 해당 페이지에 들어와서 변경된 내용을 찾아보는 수 밖에 없겠지요.

저는 RSS 구독기로 구글 리더를 사용합니다. 구글 리더에는 커스텀피드(custum feed)라는 재밌는 기능이 있는데요, 검색엔진이 특정 페이지를 주기적으로 방문하게 되는 것에 착안하여 이를 통해 RSS 피드를 제공하지 않는 페이지의 변경 사항을 감지하고 변경된 내용이 발생하면 구글 서버에서 가상의 피드를 만들어 이를 알려주는 기능입니다.

사용법은 간단합니다. Add Description 버튼을 클릭하여 피드의 주소 (대게는 블로그주소/rss 혹은 /feed 등)가 아니라 그냥 단일 웹페이지의 주소를 입력하면 됩니다. 그럼 해당 주소가 피드가 아니라면서 커스텀 피드를 생성해 준다고 합니다. 이후에는 구글 검색엔진이 해당 페이지의 내용을 갱신하여 변경 사항이 있으면 피드를 발행하는 것과 유사하게 변경 사항을 배달해 줍니다.

RSS를 지원하지 않는 쇼핑몰 등의 사이트를 이용할 때 잘 활용하면 아주 유용할 듯 싶습니다.

20100130 :: 저사양 PC를 위한 우분투 리눅스 설치기

경험적으로는 멀티부팅 등으로 동일한 하드웨어에서 윈도XP와 우분투 리눅스를 함께 사용해 보면 우분투 리눅스가 월등히 좋은 퍼포먼스를 보여줍니다. 그런데 문제는 메모리 크기가 256MB가량되는 저사양 시스템에서는 나름대로 최적화한 윈도XP보다 그리 나은 퍼포먼스를 보여주지 못하거나 오히려 더욱 버벅거리는 실망스런 모습을 보여주기도 하지요.  사실 저사양 시스템에서 바라보는 우분투 데스크톱은 상당히 무거운 어플리케이션의 집합체입니다. 이를 수용할 수 있는, 최소 메모리 512MB 정도만 되어도 놀라울 수준의 성능 향상을 맛볼 수 있지만 256MB라는 현재 가용한 PC의 메모리 마지노선에서는 이 마저도 사치인 것 같습니다.

이러한 저사양 PC를 위한, 혹은 보다 우분투를 가볍게 쓰고 싶은 사용자를 위한 대안으로는 그래픽 데스크톱 관리자를 gnome이 아닌 xfce를 사용한 xubuntu라는 우분투 리눅스의 변형판이 존재합니다. 그래서 (지금 이 글을 쓰고 있는) PC에 xubuntu를 설치해 보았습니다만, 결과는 ‘아주 조오금’ 좋아진 정도더군요. 웹 브라우저를 실행시키지 않은 상태라면 어느 정도 부드러운 창 전환 등이 가능했지만, 일단 웹 브라우저만 띄웠다하면 메모리가 온데 간데 없어지는 증상을 체감하게 됩니다. 게다가 우분투 리눅스는 시스템의 퍼포먼스 향상을 위해 이런 저런 많은 서비스를 백그라운드에서 실행하게 되는데, 이에 대한 제어가 초보인 저로서는 너무 어려웠습니다. 그러다가 실수로 배포판 업그레이드를 한 이후에 더 이상 정상적인 부팅을 할 수 없게되어, 다시 리눅스를 설치하는 김에 이번에는 진짜 ‘최소한’의 리눅스를 설치해보자는 마음이 들었습니다.

그래서 찾은 것이, ubuntu minimal CD 라는 것입니다. 냉큼 내려받아서 CD에 구웠습니다만, 이건 영욕에 눈이 먼 어느 비루한 중생의 처참한 말로를 암시하는 서곡에 불과했을 뿐이었네요. 우분투 미니멀CD는 라이브 CD로 설치해봤자, 결국 시스템 업데이트에 상당히 많은 시간을 소비하게 되니, ‘최소한’의 내용만을 담아 시스템 베이스를 설치하도록 한, 그런 도구였던 것입니다.

아무튼 오늘은 아주 짧은 시간이었지만, 상당히 운 좋게 검색을 통해서 우분투를 설치하고, 한글을 무리없이 보도록 하고, 파이어폭스까지 성공적으로 설치하여 비교적 버벅거림 없는 쾌적한 환경에서 이 글을 쓰게 되기 까지의 내용을 조금 정리해보고자 합니다. 물론 놀라우리만치 간단했기에 가능한 일이겠지만요.

준비물

저사양PC가 있어야 합니다. 윈도우가 설치되어 있어도 상관없습니다, 다만 우분투를 설치하고 다른 어플이나 데이터를 보관하기 위해서는 6~8기가 가량의 여유 공간이 단일 파티션 내에는 존재해야 합니다. 아니면 날려버려도 좋은 파티션이 있어도 됩니다.

Ubuntu minimal CD를 미리 준비합니다. 용량은 12메가 내외입니다. 다운로드는 이 곳에서 할 수 있습니다. 다운로드한 파일을 CD에 구워서 부트 디스크로 준비합니다. minimal CD 설치시에도 가능한 한 네트워크 연결이 된 상태를 유지하고 설치해야 합니다. (네트워크 케이블 자체를 빼고 설치해야 안전한 윈도와 상당히 대조되는 사항입니다.)

그리고 개념과 각오가 필요합니다. 우분투에서 기본 제공하던 gnome 기반의 ubuntu-desktop은 이쁘기도 하고 편리하지만 그만큼 무겁습니다. 우리는 gnome을 버리고 우분투를 설치합니다. 이 말은 설치가 완료되고나면, 공포의 터미널 화면으로만 부팅이 됩니다. 그래픽 인터페이스는 설치조차 되지 않은 상황입니다. 따라서 이 이후로는 모두 기억력과 키보드에 의존해야 합니다. 한 가지 좋은 소식은 종이와 펜이라는 도구가 벌써 몇 백년 전에 개발되어 여기에 필수적인 명령어를 옮겨적어 둘 수 있다는 점이겠네요.

시작과 설치

우분투 최소 시디를 투입하고 컴퓨터를 부팅시킵니다. 아주 잠깐의 시간이 흐르고나면 다음과 같은 프롬프트가 화면에 출력됩니다.

boot:

이제 cli라고 입력하고 엔터를 누릅니다. 그럼 시스템이 시작되며 본격적인 설치에 들어가게 됩니다. 본격적인 설치라해도 라이브CD가 보여주었던 화려한 화면은 없습니다, 텍스트 기반의 설치화면입니다. 아주 오래전 시대의 유물이라 쓰려고 했는데, 생각해보니 윈도XP 설치화면보다는 훨씬 진보된 느낌이군요. 다행히 텍스트 메뉴라 해도 화살표키와 엔터키 등으로 조작이 가능합니다. 게다가 설치 메뉴 자체를 한국어를 제공하고 있으므로, 기존에 우분투를 설치해 본 사람이라면 누구나 큰 어려움 없이 설치를 할 수 있을 것으로 판단됩니다.

이 설치는 부팅과 시스템 가동에 필요한 최소한의 시스템 베이스에 대한 설치입니다. 설치는 대략 10분에서 15분 가량이 걸리게 됩니다. 물론 리눅스 이미지 등을 저장소에서 내려받게 되므로 시간대나 네트워크 사정에 따라서는 설치에 필요한 시간이 다를 수도 있습니다. 윈도가 이미 설치되어 있는 PC라면 grub (범용 멀티 부트 로더)까지 자동으로 설치해 줍니다.

설치가 완료되면 시디를 빼고 재부팅을 하라고 합니다.

로그온

다시 컴퓨터를 시작합니다. 멀티 부트에서 리눅스 이미지 버전을 선택하면, 리눅스로 부팅을 시작하고 로그온 이름과 비밀번호를 물어보게 됩니다. 설치할 때 지정한 사용자 이름과 비밀번호를 순서대로 입력합니다. 참고로 리눅스에서는 비밀번호를 입력할 때 *를 따로 표시하지 않습니다. 키보드를 두드려도 화면에 아무런 표시가 없는데, 시스템이 고장난 것은 아니니 당황하지 않아도 됩니다.

로그인을 하면 ‘아이디@컴퓨터이름$’과 같은 식으로 프롬프트가 나타납니다. 이제 키보드 신공이 시작될 타이밍이군요.

찬찬히 아래와 같이 한 줄 한 줄 정성스레 입력합니다.

sudo aptitude update

sudo aptitude safe-upgrade

sudo aptitude full-upgrade

위 세 줄의 명령은 저장소에 혹시 최신 버전의 시스템 베이스가 있는지, 있다면 업그레이드를 실행하라는 이야기 이지요. 만약 설치시 시스템 언어를 한국어로 설정했다면 출력되는 텍스트가 한글일텐데, 텍스트 모드에서는 한글이 정상적으로 출력이 되지 않아 깨집니다.

이제, GUI를 얹을 차례입니다. 리눅스의 GUI 환경인 Xserver와 화면 관리자인 fluxbox, 오디오 유틸인 alsa, 터미널 등등을 설치합니다. 아래의 명령을 입력해줍니다.

sudo aptitude -y install xserver-xorg-core xinit menu menu-xdg jwm fluxbox alsa-utils mrxvt-mini gdebi-core synaptic logrotate

자 여기까지 실행했다면 PC에 GUI 환경이 설치되었다고 볼 수 있겠네요. GUI 환경으로 전환하기 위해서는 XServer를 시작하면 됩니다.

startx

기본적으로 fluxbox에 의한 GUI 화면이 표시됩니다. 프로그램 실행이나 설정을 바꿀 수 있는 메뉴는 그저 바탕화면에 마우스 오른쪽 버튼을 클릭하는 것으로 끝입니다. 필요한 어플리케이션이 있다며 시냅틱 패키지 관리자를 통해 실행하거나 터미널을 열고 apt-get 명령을 통해서 설치할 수 있습니다.

이렇게 하여 설치된 GUI환경은 가볍기는 가볍다고 하나, 상당히 불편하고 낯설게 느껴집니다. 당연히 설치한 프로그램이 없으므로 실행해볼 수 있는 프로그램도 거의 없거니와, 우분투의 그놈 데스크톱에서 익숙하게 사용했던 메뉴나 패널이 존재하지 않습니다. 그러고보니 파일 관리자도 따로 설치한 것이 없군요. 실행된 GUI 환경이 익숙치 않다면 LXDE를 설치하는 것도 좋은 방법입니다. LXDE는 gnome 기반의 비교적 가벼운 X윈도 관리자입니다. 우분투 9.10에서는 별도의 저장소 추가 필요없이 sudo apt-get install lxde를 터미널에서 입력하는 것만으로도 설치가 가능합니다. 문제는 LXDE도 펄스오디오라든지 이런 저런 유틸리티를 다량 포함하고 있어서 꽤나 무겁다는 것입니다. 따라서 다음 명령어를 통해 필수 유틸리티만 설치할 것을 권장합니다.

sudo aptitude install –without-recommends lxde

설치를 끝내고 나서 X윈도 관리자를 재시작하면 (fluxbox에서 오른쪽 클릭 후 restart를 선택) 우분투의 그놈 데스크톱과 비교적 유사한 모양새의 XLDE 환경이 나타나는 것을 볼 수 있습니다. 터미널의 apt-get 명령을 통해 이런 저런 프로그램을 설치하면 됩니다. 현재로서는 파이어폭스 3.5를 설치했습니다. alsa 설정이 잘 못되었는지는 모르겠으나, 시스템에서 소리는 나지 않는 군요. 웹 서핑외에는 별  달리 쓸 용도는 없기에 이렇게 만족하기로 했습니다. 브라우저 실행 중에 터미널을 띄우거나, 메모장(정말 윈도 메모장 수준의 기능만 담은 leafpad가 같이 설치됩니다.)을 통해 메모하는 정도의 용도로는 충분히 사용이 가능하군요. 아쉽게도 구글웨이브와 같이 무거운 웹 어플리케이션은 사용이 힘들겠지요.

스크린샷이라도 넣으면 좋겠지만, LXDE의 스크린샷을 찍을 줄 몰라서 (또 괜히 뭔가 설치하긴 그래서) 스크린샷을 확인할 수 있는 링크로 대체하겠습니다.
==> LXDE lightweight X11 Desktop Environment – Desktop

이렇게 하여 일단은 여기서 만족하며 사용하도록 해야겠습니다. 사실 사운드도 활성화하여 음악도 듣고 싶은데, 하드웨어의 문제인지도 확인해 보아야 하고 이것 저것 귀찮은 것이 많군요. 뭔가 진척이 생기면 다음에 다시 후속 포스팅하도록 하지요. 그럼, 안녕히.

20100123 :: 인터넷상에서 만날 수 있는 위협들 – 1

집에서 사용하는 PC가 결국 그 운명을 맞이했습니다. 자세한 이야기는 다음으로 미루고, 오늘은 지난 번 포스팅에서 이야기한 것처럼 인터넷을 아무 생각없이 사용하면서 만나게 되는 여러 가지 위협에 대해 살짝 살펴보도록 하겠습니다. 여기서 이야기하는 사례는 모두 가상의 사례이며, ‘충분히 이럴 수 있다’는 가정하에 쓰여지긴 하였지만 실제로는 조금 과장된 면도 있을 수 있음을 미리 밝힙니다.

해킹을 당하다

개인이 PC를 사용하면서 본인의 PC를 해킹 당하는 것은 실제로 겪어본적은 없습니다. 하지만 VNC 서버를 사용하거나 하는 경우에는 멋대로 커서가 움직이거나 하는 증상을 경험했다는 사례는 제법 있는 것으로 압니다. 물론 이러한 ‘실시간 해킹’은 일반적으로는 접하기 힘듭니다만, 지난 번에 이야기했던 대로 누군가는 나의 PC에 저장된 공인인증서나 개인정보가 담긴 이력서 파일 등등을 훔쳐가려는 사람이 있을 수 있습니다. 그렇다면 어떻게 그게 가능할까요?

나의 PC가 이러한 해킹의 대상이 되었다라는 것은 원격지에 있는 누군가가 PC의 특정 기능을 사용할 수 있게 되었다는 이야기입니다. 이 경우라면 내 PC가 ‘서버’의 역할을 수행하게 되는 것입니다. 사실 서버라는 것이 대단한 것이 아닙니다. 그저 원격지에 있는 사용자에게 특정 기능을 제공하는 시스템 혹은 프로그램이 바로 서버입니다. 그럼 뭔가 대단한 프로그램을 실행해야 하지 않느냐라고 반문할 수도 있겠지만, 실제로 어떤 기능을 몰래 수행하기 위한 서버는 매우 작은 크기로도 만들 수 있습니다.

그럼 실제로 이러한 프로그램이 내 컴퓨터에서 어떤 일을 하는 지 알아보겠습니다.

  • 네트워크를 통해 해킹의 수단이 되는 악성 프로그램이 유입된다.
  • 악성 프로그램이 실행된다.
  • 악성 프로그램은 자신이 자리를 잡았음을 보스에게 알린다.
  • 보스가 원격에서 명령을 내린다. 혹은 특정 조건이 맞아 떨어져 자동으로 내장된 명령을 수행한다.
  • 못된 짓을 시작한다.

이것이 가장 간단한 악성 코드에 의한 감염 사례입니다. 매우 도식적이지만 대부분의 못돼먹은 프로그램은 이러한 형태로 동작한다고 볼 수 있습니다. 물론 이러한 동작이 항상 못된 프로그램들만 하는 것은 아니지요. 네이트원 원격접속이나 윈도우가 제공하는 원격 지원 등도 이러한 유형으로 동작합니다.

그럼 각각의 단계는 실제로 어떤 식으로 진행될 수 있는지 예를 들어 보겠습니다. 이어질 이야기는 실제 있을 법한 내용을 상상으로 구성해 본 것입니다.

예를 들어…

나는 해커입니다. 나는 돈이 필요합니다. 요즘 같은 세상에는 만만한 웹사이트 DB 뒤져서 주민등록번호 같은 거 캐 봤자, 주민 번호는 워낙 단가가 싸서 팔아도 돈이 안됩니다. 이미 십여년 전부터 수만명~수백만명 단위의 한국인 주민 번호 파일이 중국에서 싼 값에 거래되어 왔기 때문입니다. 그래서 나는 조금 위험한 생각을 하기로 했습니다. 바로 다른 사람의 은행 계좌로부터 돈을 빼내는 방법입니다.

메신저 피싱 같은 것도 생각해 봤지만, 그러려면 알바를 고용해야 합니다. 아, 이건 왠지 비용이 들어가니 좋지 않은 방법입니다. 물론 시간이 많지만 된다는 보장이 없으니 정면 돌파를 생각합니다. 네 그냥 공인인증서와 은행 로그인 아이디, 비밀번호를 훔쳐보기로 합니다. 요즘은 은행 자물쇠 카드를 사진으로 찍어 보관하는 사람도 많으니 한명만 제대로 걸리면 크게 한 건 할 수 있을 것 같습니다.

자, 그럼 이제 어떻게 각각의 정보를 훔쳐낼 수 있을지 생각해 보겠습니다.

1. 은행 로그인 아이디와 비밀 번호 그리고 공인 인증서

로그인 아이디와 비밀 번호를 십여개 가까이 만들어서 조합하여 사용하고, 이를 각 사이트마다 모두 다르게 사용하는 사람은 거의 없습니다. 이런 사람은 보안과 관련된 교육을 빡세게 받고 그런 습관이 체득된 전문가들입니다. 일반인들은 거의 사용하는 아이디가 모두 같은 경우가 대부분입니다. 아이디는 조금씩 달라도 비밀번호는 거의 대부분이 같습니다.

공인인증서 파일은 고맙게도 모든 PC마다 동일한 위치에 저장됩니다. 저는 그냥 FTP 서버만 하나 만들어 놓고, 몰래 동작하는 멋진 프로그램을 하나 작성할 계획입니다. 이 프로그램은 주로 사용자가 두드리는 키보드 키를 모두 기록했다가 제게 건네주는 역할을 하는 키로거(key logger)입니다만, 아주 간단한 기능을 하나 더해서 프로그램이 실행될 때 공인인증서가 저장되는 폴더를 통째로 압축하여 저의 서버로 올릴 수 있도록 만들 것입니다.

2. 악성 코드 배포

하늘이 나를 돕습니다. 가짜 사이트를 하나 만들어서 거기에 음악 공유 프로그램이라 하고, ActiveX를 하나 설치하게끔 합니다. 이 녀석을 실행되면 그냥 오류 메시지를 하나 뿜으면서 더 이상 동작되지 않는 것처럼만 보이게끔합니다. 그런 대신에 몰래 제가 서버에 올려놓은 다른 프로그램을 설치하고, 이를 윈도우 서비스로 등록하여 컴퓨터를 부팅할 때 마다 자동실행되게 합니다.

물론, 이 진짜 프로그램은 실행되고 나서 재밌는 일을 하게 됩니다. 바로 위에서 말한 공인인증서와 키보드 입력 내용을 싸그리 제 서버로 업로드 해 줄테니까요.  그럼 제가 할 일은 간단합니다. 제 프로그램이 서버에 올려줄 정보는 PC의 주인이 컴퓨터를 켜고부터 계속해서 두드리는 키보드의 내용들입니다. 여기서 가장 간단하게는 반복적으로 나타나는 패턴만 찾으면 됩니다. 그 패턴이 로그인 아이디와 비밀번호의 조합일 가능성은 매우 큰데다, 그 전후를 뒤져보면 인터넷 주소로 어디를 입력했는지도 알 수 있으니까요. 물론 대부분의 사용자들은 거의 모든 웹 서비스에서 동일한 아이디와 비밀번호를 사용하기 때문에 이 정도 정보면 은행 로그인까지는 전혀 문제가 없습니다.

3. 은행 보안 카드

그럼 이제 제 손에는 은행 로그인 아이디와, 비밀번호, 공인 인증서가 확보됩니다. 남은 것은 은행 보안 카드입니다. 요즘 이거 들고 다니기가 만만치 않게 귀찮기 때문에, 온갖 포털 사이트를 이 계정 정보로 다 뒤지고 다녀봅니다. 그리고선 메일이나 파일 보관함을 둘러봅니다. 적지 않은 비율로 은행 보안 카드를 디카나 폰으로 찍어서 보관해 두고 계시는 군요. 감사합니다. 이제 계좌 이체를 위한 모든 준비가 끝났습니다.

최악의 보안환경에 대처하는 우리의 자세

혼자 소설 좀 썼습니다만, 위 시나리오는 약간의 프로그래밍 지식만 있으면 충분히 할 수 있을 것 같다는 생각이 듭니다. 실제로 저런 프로그램을 만드는 일은 쉽습니다. 사실 그 외에는 모두 ‘인터넷 사용자의 습관’을 이용한 ‘꼼수’일 뿐입니다. 그만큼 우리 내 인터넷 보안 환경은 취약하기 그지 없습니다. 이는 비단 일반 사용자 뿐만 아니라 실제 웹 사이트 운영자의 보안 의식도 이 지점에서 별반 발전한 바가 없으며, 더더욱 중요한 웹을 통해 사업을 구상하고 정책을 마련하는 이들 (그것이 기업의 중역이든, 국가의 중책을 맡은 사람이든)은 어쩌면 일반 사용자들보다 못한 보안 의식을 갖고 있기 때문이라고 믿어 의심치 않습니다.

그렇다면 일반 사용자입장에서는 어떻게 인터넷을 해야 그나마 조금이라도 안심을 할 수 있을까요? 위의 시나리오에서 발견할 수 있는 취약점들을 최대한 회피하는 방법으로 인터넷을 이용하면 됩니다.

비밀번호 사용

아이디를 모든 사이트마다 다르게 만들기는 솔직히 어렵습니다. 그렇다 하더라도 비밀번호는 가능한 한 다르게 만드는 것이 좋습니다. 최소한 주민등록번호 등 민감한 정보를 건네주고 가입하는 사이트들은 가능한 비밀번호를 다르게 하는 것이 중요합니다.

그리고 또 한 가지, 해커들이 여러분의 계정을 공격할 때 사용하는 것은 고도의 복잡한 프로그래밍 테크닉이 아닙니다. 무슨 프로그램 돌려서 암호 깨고 어지럽게 숫자가 왔다 갔다 하는 것은 영화에서 보기 좋으라고 그렇게 만드는 것일 뿐이지요. 결국 비밀번호는 다음과 같은 방식을 따라 만들고 관리하는 것이 안전합니다.

  1. 비밀 번호는 가능한 길게 만듭니다. 짧으면 짧을수록 유추하기가 쉽습니다. 행여 비밀 번호의 일부를 이미 가지고 있을 수 있는 경우도 있습니다. 복잡도를 높이기 위해서는 10자리 이상으로 만드는 것이 좋으며, 숫자나 특수기호를 중간 중간에 섞어 주는 것이 좋습니다. 영문자의 경우에도 대소문자를 섞어서 쓰도록 합니다.
  2. 아이디는 가급적 여러개를 만듭니다. 비밀번호도 모든 사이트가 다 다르면 좋겠지만, 그게 어렵다면 최소 4개 이상을 만들어서 아이디-비밀번호 조합을 매번 다르게 사용합니다. 즉 다음 계정이 뚫리더라도 네이버로는 똑같은 아이디와 비밀번호로 로그인 할 수 없도록 해야 합니다.
  3. 한 번 만들어진 계정에 대해서는 주기적으로 비밀번호를 변경해 줍니다. 이는 상당히 번거로우며, 변경한 후에는 헷갈리기도 하고 손에 익지 않은 문자 배열을 타이핑하면서 오타도 많이 생길 수 있습니다. 하지만 명심하시길, 자신이 편한 만큼 해커도 편하게 로그인할 수 있습니다.
  4. 아이디나 주민번호를 잊어서 찾기 기능을 이용해 보신 적이 있으신지요? 대부분의 사이트는 본인 확인을 위한 질문을 던집니다. 절대, 정답을 기재하지 마세요. 본인 확인용 질문은 본인만 알고 있는 ‘사실’을 묻는 것이 아닙니다. 그 질문에 본인만 답할 수 있도록 해야 합니다. 따라서 당연히 자신과 상관없고,  예측이 불가능해야 안전합니다. ‘가장 존경하는 사람은?’ 등의 질문에 ‘고양이’라고 쓰는 것이 차라리 바람직합니다.
  5. 개인정보를 갖다 바친 사이트라면, 자신이 평소에 사용하는 PC가 아닌 경우 가급적 로그인하지 않습니다. 특히 PC 방과 같은 곳에서는 주의해야 합니다. 그리고 가능하면 개인 정보를 갖다 바쳐야 하는 사이트는 아예 가입을 하지 않는 것이 좋습니다. 항상 기억하세요 웹에 올리는 모든 자료는 결국에는 공개되는 자료입니다. 여차하는 사이에는 본인이 아무리 후회해도 사라지지 않는 자료들도 있습니다. 또한 공용 PC 등에서 로그인 해야 하는 경우에는 화상 키보드를 사용하여 문자 입력할 것을 권장합니다. 금융거래나 쇼핑 같은 중요 정보를 입력해야 하는 일은 최대한 피해야 합니다.

액티브엑스 설치

가장 문제가 되는 것은 개인적으로 액티브엑스 설치입니다. 액티브엑스는 그 자체로는 좋다 나쁘다를 딱 잘라 말할 수는 없습니다. 아니, 그 전에 엑티브액스가 무엇을 하는 녀석인지를 먼저 알아야 합니다.

일반적으로 웹 브라우저는 인터넷에 게재된 자료를 보는 뷰어의 역할을 합니다. 그리고 웹 환경은 착한 사이트만 있는 것은 아니지요. 그래서 웹 브라우저는 웹 문서를 표시하는 기능 이외의 기능은 철저히 제한하려 합니다. 즉 멋모르고 웹사이트에 접속하는 사용자들에게 악의적인 사이트 운영자가 나쁜 짓을 할 수 없도록 가능한 한 실행 가능한 코드들은 그 영향력을 웹 브라우저 혹은 웹 페이지 내에 제한하게 됩니다.그러다보니 웹 문서 뷰어의 이상의 기능을 필요로 하는 경우에는 별도의 프로그램을 만들어서 사용하게 되는데, 이 것을 웹 상에서 가능하게 해주는 기술이 액티브엑스입니다. 즉, 브라우저 내의 필폐공간과 사용자 시스템 사이의 다리 역할을 해서 웹 사이트가 사용자 시스템을 제어할 수 있도록 하는 기술입니다.

이 부분은 결국 ‘권한’에 관련된 내용이며, 엑티브엑스는 운영체제 입장에서는 여러분이 직접 내려 받거나 CD로 설치하여 실행하는 프로그램들과 동등한 권한을 갖게 됩니다. 예를 들자면 온라인 게임들은 대부분이 웹 사이트에서 ‘게임 실행’ 버튼을 클릭하여 게임을 실행합니다. 즉 브라우저 내의 버튼으로 브라우저 외부의 다른 프로그램을 실행하는 것이지요. 그런데, 이것이 단순한 실행 뿐만아니라 파일을 새로 내려 받아 설치할 수도 있으며, 기존 파일을 삭제하거나 수정할 수도 있고, 심지어는 레지스트리를 변경할 수도 있습니다. 즉 PC 구석구석을 제어할 수 있는 상당히 큰 권한이 웹페이지 제작자에게 돌아가는 것입니다.

그리고 사용자들이 액티브엑스를 설치하기 전에 만나는 보안 경고창은 이러한 이야기를 전혀 하지 않습니다. 그저 ‘확인되지 않은 소프트웨어 설치가 시스템에 악영향을 끼칠지도 모른다’고만 하지요. 문제는 전문가가 아닌 이상에는 이러한 ‘소프트웨어’를 확인할 방법이 전혀 없습니다. 기껏해야 개발사 명이 무언지만 표시될 뿐이고, 정말 나쁜 놈이 악의를 품고 퍼뜨리는 액티브 엑스라면 거기에 듣보잡 개발사 이름이 아닌 정부 기관이나 대형 소프트웨어 업체의 이름을 사칭하는 것도 어려운 일이 아니라는 것이지요.

사용자가 ‘설치’ 버튼을 클릭하는 그 순간 PC 전체는 위험에 거의 고스란히 노출되게 됩니다. 즉 설치가 너무 쉬워서 탈이지요. 이 때문에 윈도 비스타 이후버전 부터는 UAC라는 것을 적용합니다. 즉 현재 실행 중인 프로그램(브라우저)이 자기 권한보다 더 높은 권한이 필요한 작업을 수행하고자 할 때 사용자의 허락을 받도록 하는 것입니다. 따라서 액티브엑스 설치가 더욱 번거로워지는 것입니다. (같은 말로는 사용자의 PC가 보다 안전해 진다는 의미입니다.) 그런데, 이런 부분은 서비스 제공 업체 (혹은 만에 하나 있을지 모를 악의적인 해커)입장에서는 액티브엑스 설치를 가로막는 장애 요소가 될 뿐입니다. 덕분에 왠지 불법의 냄새가 나는 공유사이트에서부터 금융 업체에 이르기까지 별도의 안내 페이지를 만들어 ‘확인되지 않은 소프트웨어 설치가 용이하도록’ 이러한 옵션을 끄는 안내 페이지를 상세하고 친절한 스크린샷과 함께 제공합니다. 즉 자신들이 ‘믿을만 하다’는 권위를 적용하여 되려 보호해야 할 고객들을 무장 해제 시키고 있습니다.

따라서 다음의 방식을 추천합니다.

  1. 인터넷 익스플로러의 도구 > 인터넷 옵션에서 보안과 관련된 항목 중에 ‘서명되지 않은’, ‘확인되지 않은’ 과 같은 항목은 모두 자동 실행이나 설치를 막아야 합니다. 잘 모르겠다면 일단 ‘기본값 복원’이라도 합니다.
  2. 액티브 엑스는 일단 설치하지 않고 웹사이트를 사용해 봅니다. 만약 액티브엑스를 설치하지 않으면 안내 페이지로만 이동하고 서비스를 이용할 수 없다면, 비슷한 기능을 제공하는 다른 서비스를 이용하도록 합니다. 최근 네이버의 N드라이브 등의 서비스만 보아도 예전에 엑티브엑스로 떡칠했던 사이트와 똑같은 기능을 플래시로 구현하여 제공합니다. 액티브엑스를 사용하지 않는 똑같은 서비스는 찾아보면 반드시 존재합니다.
  3. 아에 보안 경고창을 띄우지 않고 몰래 설치되는 프로그램들도 존재합니다. (아마 이미 설치 승인한 액티브엑스가 몰래 함께 설치하는 경우일 것입니다.) 따라서 인터넷 익스플로러를 아예 사용하지 않을 것을 권장합니다. 훨씬 빠르고 안전한 파이어폭스, 사파리, 오페라, 구글크롬과 같은 브라우저들이 있습니다. 어렵다고요? 설마 여러분은 저 위에 프로그램 메뉴을 통해서 인터넷을 사용하시는 건가요? 웹 브라우저의 경우에는 모두 브라우저가 표시하는 웹 페이지를 이용하는 것입니다. 인터넷 익스플로러를 다른 브라우저로 바꾼다고 이용이 어려울 이유는 전혀 없습니다. 다만 액티브 엑스가 아예 동작하지 않아 일부 사이트에서는 불편함이 따를 수 있습니다만, 바꿔 말하면 그만큼 더 안전하다는 것입니다. (다시 기억하세요, 여러분이 편히 쓰면 해커도 여러분의 PC를 편히 쓰게 됩니다.)
  4. 다른 프로그램이 있는 데 웹상에서 같은 기능을 제공한다면 액티브엑스를 설치하라고 하면, 그냥 같은 기능을 하는 프로그램을 직접 설치해서 독립적으로 사용합니다.
  5. 평소에 관리자 권한으로 PC를 사용하지 않습니다. 이는 잘 모를 수 있는 부분인데, 지금 당장 ‘제어판’으로 가서 사용자를 열어 새 사용자를 한 만듭니다. 관리자 등급이 아닌 일반 사용자로 설정하고 암호도 설정합니다. 그런 다음 재부팅하여 항상 암호를 입력하고 로그인하여 PC를 사용하는 습관을 들이도록 합니다. 이렇게 해야 만에 하나 여러분이 좋지 못한 프로그램을 설치하는 실수를 저지르더라도 피해를 덜 입을 수 있습니다. 계속해서 강조하지만 ‘안전’하고 싶다면 그만큼 불편해야 합니다. 이건 진리입니다.

데이터관리

끝으로 데이터를 대하는 기본 자세에 대해서 한 말씀 드리고자 합니다. 컴퓨터에 보관되는 데이터는 모두 ‘디지털’ 이라는 특성을 가지고 있습니다. 디지털 데이터의 큰 특징은 원본과 완전히 동일한 복사본을 만들 수 있다는 뜻이며, 이는 누가 훔쳐가도 빈자리가 없기 때문에 훔쳐갔는지 조차 모른다는 뜻과 동일합니다. 따라서 ‘보안’이나 ‘개인의 민감한 정보’와 관련된 데이터는 하드 디스크가 됐든 USB가 됐든 디지털화해서 보관하면 안됩니다. 비밀 번호 여러개 만들어서 관리하기 힘들다고 이걸 텍스트 파일로 만들거나 이메일로 저장해 두는 경우가 있습니다. 이러면 안됩니다. 반드시 종이에 써서 별도로 잘 보관합시다. 특히 이메일에 보관해 두는 것 만큼 바보같은 짓도 없습니다. 그리고 은행의 보안카드 등도 마찬가지 입니다. 절대 카메라로 찍지 맙시다. 휴대폰으로 찍어서 가지고 다니는 분들도 많은데, 큰 일납니다. 핸드폰을 잃어버릴 수도 있고, 새 기종으로 바꿀 때 보통 보상 기변 등으로 기존 핸드폰을 대리점에 갖다 주지 않습니까? 그냥 새어 나가는 겁니다. 지웠다구요? 죄송하지만 요즘은 파일 복원 툴들이 너무 강력해서 말이지요. 몇 분이면 다 되살릴 수 있습니다.

사람에 초점을 맞추어야 한다

구글에서 이야기하는 비밀번호 관리 방법 중에 이런 항목이 있습니다. “앵무새를 조심하세요” 크래커(악의적인 해커)들은 영화에서나 보듯이 암호를 척척 풀어내는 프로그램을 만들어서 활용하는게 아니라, 타겟이 되는 사람의 헛점을 이용합니다. 그게 훨씬 쉽고 싸니까요. 아무리 좋은 보안 시스템을 갖추고 있다한들 시스템 관리 패스워드를 싸이월드에 올려놓고 사용하는 사람이 관리자라면 한 방에 뚫린다는 것입니다. 결국 보안이라는 분야는 기술이 아닌 사람과 사람의 습성을 다루는 분야가 되어야 합니다. 그리고 이러한 부분에 대해서는 아무도 신경을 쓰지 않으며 그저 그 성능조차 의심스러운 보안 플러그인만 덕지덕지 설치하면 안전해졌다라고 생각하는 사람들이 정책을 수립하는 나라에 우리는 살고 있습니다. 덕분에 사용자들은 더욱 더 무심하게 액티브엑스를 설치하며 자신을 마음껏 무장해제 하고 다닙니다. 이것이 우리나라의 현실입니다. 그래서 저는 방송 같은 곳에서 ‘IT 강국’이라는 말이 나올 때 마다 이제는 얼굴이 화끈거리면서 부끄럽습니다.

하고 싶은 이야기는 더 있지만 글이 너무 길어졌기에 오늘은 이만 줄이고자 합니다. 그리고 다음번에는 이러한 보안에 방해가 되는 쓰레기 같은 프로그램들의 행태에 대해서 한 번 다시 살펴 볼까 합니다. 그럼 그 때까지 행복한 나날 되세요.

20100122 :: 인터넷 주소(url)은 대소문자를 구분할까?

인터넷 주소 입력창에 입력하는 인터넷 주소. 인터넷 주소는 과연 대소문자를 구분할까요?

딱히 집어서 그렇다, 아니다를 구분할 수가 없습니다. 특정 웹 문서의 인터넷 상의 주소를 우리는 URL이라고 합니다. 이 URL의 구성을 먼저 살펴보도록 하지요.

예를 들어 http://www.myservice.com/somepage.jsp?articlenum=5 라는 URL은 크게 5개 부분으로 구성되어 있다고 볼 수 있습니다. 이는 다음과 같이 구성됩니다.

  1. http:// -> 서버로부터 웹 문서 정보(html)와 이미지 등의 리소스를 받아올 프로토콜입니다. 프로토콜은 데이터를 어떤 순서로 넘겨주는 방식을 미리 정해 놓은 것이라 생각하시면 됩니다.
  2. www.myservice.com/ -> 서버의 도메인 네임입니다. 인터넷에 물려있는 컴퓨터들은 고유의 주소인 ip를 가지고 있습니다. 하지만 ip는 숫자로 구성되어 사람이 기억하기 힘드므로, 도메인네임을 부여하여 구분 및 기억을 쉽게 하도록 합니다. 우리는 흔히 이런 도메인까지만 주소창에 입력하여 웹 사이트로 접근하곤 합니다.
  3. /somepage.jsp -> 해당 서버 내의 특정 파일 위치입니다. 해당 서버의 웹 서버가 서비스를 제공하는 디렉터리 혹은 그 하위 디렉터리 어딘가에는 저 이름의 파일이 존재합니다.
  4. jsp등의 서버 사이드 스크립트에서 동적인 내용을 구성할 때 미리 전달되는 파라미터 입니다. 내부적으로 articlenum이라는 값을 받아주는데, 예를 들자면 5번 게시물을 표시하겠다는 의미 정도가 됩니다.

이러한 URL의 구성에서 먼저, 도메인 네임은 대소문자를 구분하지 않습니다. 도메인 네임은 도메인 네임 서버 (DNS)에서 확인하여 해당 주소의 컴퓨터 ip를 브라우저에게 돌려줍니다. 그러면 웹 브라우저는 DNS가 알려주는 ip로 접속하여 웹 페이지의 정보를 내려받게 됩니다. 이 도메인 네임 서버들은 대소문자에 무관하게 동작합니다. (주소창에 구글이나 네이버의 주소를 대문자나 소문자 혹은 섞어서 사용해도 아무런 문제 없이 잘 접속하는 것으로 확인이 가능합니다.)

문제는 서버까지 도달한 다음입니다. 우선 윈도 기반의 운영체제로 가동되는 서버들은 우리가 흔히 사용하는 윈도XP나 비스타, 윈도7에서와 마찬가지로 디렉터리 명이나 파일명에서 대소문자를 구분하지 않습니다. 따라서 위의 예시 주소를 http://www.myservice.com/SomePage.jsp, http://www.myservice.com/SOMEPAGE.JSP 등으로 변경하여 입력하여도 올바른 페이지를 보여주게 됩니다.

그런데 웹서버 중에서는 리눅스나 유닉스 계열의 서버들도 아주 많이 있습니다. 이들 운영체제는 명령어나 파일, 디렉터리 이름에 사용되는 문자에 대해 모두 대/소문자를 구분합니다. 즉 이들 운영체제에서는 somepage와 SomePage, SOMEPAGE는 모두 엄연히 다른 이름입니다. 따라서 만약 www.myservice.com에 해당하는 서버가 리눅스 서버라면 http://MY.SERVICE.COM/somepage.jsp 는 올바로 접속이 가능하지만, http://my.service.com/SomePage.jsp는 올바른 접속이 되지 않고 HTTP 404 에러가 발생하게 됩니다. (물론 별도의 SomePage.jsp 파일이 있다면, 그 파일의 내용이 표시될 것입니다.)

변수값으로 전달되는 ?이후의 부분들도 마찬가지 입니다. 이는 운영체제 보다는 서버사이드 스크립트에 사용된 언어가 무엇인가에 의존적이지요. 예를 들어 언어 자체의 문법이 대소문자를 구분하는 jsp, php의 경우에는 이 부분에서도 대소문자를 구분합니다. (윈도 서버에 설치되었다 하더라도 말이지요) 반대로 비주얼베이직의 특성을 물려 받은 asp 같은 경우에는 대소문자를 구분하지 않으므로 상관 없습니다.

따라서 오늘의 궁금증에 대한 결론을 정리해 보자면

  1. 도메인 주소명은 대소문자를 구분하지 않는다.
  2. 디렉터리 명 이하의 주소는 서버의 운영체제에 따라 다르다. 윈도 서버는 대소문자를 구분하지 않지만, 리눅스나 유닉스 계열의 서버는 대소문자를 구분한다.
  3. 매개 변수명은 웹 서비스를 구성한 스크립트 언어 특성에 따른다. asp를 제외한 대부분의 서버 사이드 스크립트는 대소문자를 구분하는 편이다.

결국 MS 제품들은 거의 대소문자를 구분하지 않는 것으로 나타나네요. 뭐 그렇다고해서 그것이 반드시 편하고 좋다는 이야기는 아닙니다. 그저 제가 궁금해서 이래 저래 조사해본 내용이고, 별 영양가는 없는 포스팅이 되어 버렸네요. ㅠㅠ

20100121 :: 누워서 몇 가지

그제 철야를 하고 어제 저녁부터 밥도 안 먹고 잤더니, 조금 더 자고 싶은데 배가 고파서 눈이 떠지는군요.  공인인증서 저장위치에 대한 글이 꽤 많은 조회수를 보이고 있는데, 아무래도 네이버에서 ‘공인인증서’로 검색들 많이 하시나 봅니다. 원래 포스팅 예고 같은 건 지키기가 힘드니까 잘 안하는데 (심지어 공인인증서 관련 글도 처음 글 열고서 거의 열흘만에 발행한 듯 싶네요) 후속으로 몇 가지 포스팅을 더 해 볼까 합니다.

정작 보안이나 이런 부분에서의 문제는 악의적인 해커가 기술적으로 뚫고 들어오는 취약점이 문제가 아닌데, 그리고 우리 나라 웹환경에서 때려 죽일 놈은 정작 액티브 엑스가 아니라는 이야기입니다. 그러니까 앞에서는 실컷 까 놓고 이제와서 무슨 말이냐 하실수도 있는데, “액티브엑스 그 자체”가 문제가 아니라는 겁니다. 사실 상 액티브 액스는 사용자에 대한 접근성을 제한하는 것으로 욕을 먹는 것으로 충분할 듯 합니다. 이미 그로 인한 심각한 보안 위험이 널리 알려져 있고, 그보다 더 중요한 문제는 따로 있기에 이제는 사장되는 기술이라고 보아도 되는 것이니까요. 그런데 이 기술이 국내에선 이다지도 창궐하는 이유는? 그것이 바로 액티브액스 자체가 문제가 아니라는 이야기입니다. 그래서 기술적인 관점에서의 뚫고 막는 보안이야기가 아닌 어디가 문제가 되고 어떤 이유로 우리가, 네티즌이, 일반사용자가, 소프트웨어 판매 업체의 봉들이 어떤 행동 들을 조심해야 하며, 애초에 “개인 정보 보호”라는 관점에서는 웹을 어떻게 바라보아야 하는지에 대해 몇 개의 글을 써 볼까 하는 생각을 하고 있습니다. (음… 그냥 하고만 있습니다.)

결정적으로 집에서 사용하던 PC가 새로산 그래픽카드가 나흘만에 맛이 간 걸로도 모자라, 어제 저녁부터 아예 전원이 들어오지도 않는군요. 그냥 저번에 쿨하게 통째로 버리고 바꿀걸 그랬나 봅니다. (지금은 자리에 누워 노트북으로 블로깅 중…) 그래서 그 핑계로 다음 포스팅은 아마 매우 늦을 것이라는 말씀을 끝으로 오늘의 포스팅을 마무리할까 합니다.

비가 오는 겨울 날씨가 영 어색한 어제였습니다만, 비가 그쳤으니 오늘부터는 또 춥겠지요. 다들 감기 조심하세요.