다음 이전 차례

3. 물리적 보안

염두에 두어야 할 보안의 첫 순서는 컴퓨터의 물리적 보안이다. 누가 컴퓨터 본체에 직접 손을 댈 수 있는가? 그럴 필요가 있는 사람인가? 시스템에 손을 대는 것을 막을 수 있는 가? 그럴 필요가 있는가?

여러분의 시스템에 어느 정도의 물리적 보안이 필요한지는 상황과 예산에 따라 매우 다르다.

집에서 리눅스를 쓴다면 (비록 아이들이나 성가신 친척들이 컴퓨터를 건드리지 못하도록 하기는 해야겠지만) 특별히 물리적 보안에 신경을 쓸 필요는 없을 것이다. 연구실에서 쓴다면 보안에 좀 더 신경을 써야 하지만 사용자들의 작업에 지장이 없도록 되어야 한다. 다음에 나오는 여러 항목이 도움이 될 것이다. 사무실에서라면 여러분이 퇴근을 했거나 자리를 비울 경우 컴퓨터에 접근하지 못하도록 통제해야 하거나 혹은 그렇지 않은 경우도 있다. 어떤 회사에서는 컴퓨터 콘솔을 켠 채로 방치해 두는 것만으로도 해고 사유가 된다.

문에 거는 자물쇠나 쇠사슬, 캐비닛을 잠그는 것, 비디오 감시 장치 같은 당연한 물리적 보안 방법도 분명히 좋은 생각이지만, 이 문서의 범위 밖이다. :)

3.1 컴퓨터 열쇠

많은 신형 컴퓨터 케이스들에는 "잠금" 기능이 있다. 잠금 장치는 대개 열쇠나 본체 전면 열쇠를 이용해서 잠그거나 풀게 되어 있다. 이 장치를 쓰면 다른 사람이 여러분의 pc를 훔쳐 가거나, 케이스를 열고 직접 하드웨어를 조작하거나 훔쳐 가지 못하도록 할 수 있다. 또한 다른 사람이 자신들의 플로피나 다른 하드웨어를 써서 리부트하지 못하도록 할 수도 있다.

이런 케이스 잠금 장치들은 머더보드의 지원과 케이스의 구조에 따라서 다른 기능을 발휘한다. 어떤 PC들은 케이스를 (억지로) 열려고 한다면 케이스를 뜯어내야 만 하도록 만들어져 있기도 하다. 또한 어떤 PC들은 새로운 키보드나 마우스를 꽂을 수 없도록 되어 있다. 여러분의 머더보드와 케이스 구조를 점검하도록 하라. 이런 잠금 장치들은 대개 매우 질이 낮으며 자물쇠 따는 실력이 있는 공격자 앞에서야 무용지물이겠지만, 상황에 따라서는 상대적으로 유용한 것이다.

어떤 기계에는 (주로 스팍과 맥) 뒤편에 구멍(dongle)이 있어서 사용자가 쇠줄로 꿰어 놓을 수 있다. 이렇게 해 놓으면 침입자가 본체 내부에 손을 대려고 할 때, 쇠줄을 끊거나 케이스를 파괴해야 만 한다. 이 구멍에 자물쇠를 채워 놓는 것만으로도 컴퓨터를 훔치려는 사람들에게 부담을 주는 장애물이 될 수 있다.

3.2 바이오스 보안

바이오스(BIOS)는 x86 CPU 기반의 하드웨어들을 제어하는 가장 밑바탕인 소프트웨어다. 릴로나 그 밖의 리눅스 부트 프로그램들은 바이오스를 엑세스해서 리눅스 부팅 방법을 결정한다. 리눅스가 돌아가는 다른 하드웨어에도 바이오스와 비슷한 소프트웨어들이 있다. (맥과 신형 선 컴퓨터의 OpenFirmware, sun boot prom 등). 이러한 바이오스 기능들은 침입자가 컴퓨터를 리부팅하는 방법을 씀으로서 시스템을 조작하려는 것을 막기 위한 방법으로 사용될 수 있다.

많은 경우, PC 바이오스에 부트 패스워드를 설정할 수 있도록 되어 있다. 이런 기능들이 충분한 보안을 제공한다고 할 수는 없지만 (바이오스를 리셋시킬 수도 있고, 케이스를 열 수 있다면 아예 제거해 버릴 수도 있다), 쓸 만한 장애물이 될 수 있을 것이다.(예를 들면, 시간이 걸릴 것이고, 조작의 증거가 남는다) 마찬가지로 S/Linux (Linux for SPARC (tm) 프로세서용 기계)에서는 부팅 시에 패스워드를 묻도록 EEPROM을 설정할 수 있다. 완전한 방법은 아니지만, 침입 속도를 늦출 수는 있을 것이다.

많은 x86 바이오스는 이 밖에도 다양하고 훌륭한 보안 설정 기능들을 제공한다. 여러분이 갖고 있는 바이오스 매뉴얼을 확인하고 다음 부팅 때 바이오스 설정을 자세히 살펴보기 바란다. 예를 들어 플로피 드라이브로 부팅을 하지 못하게 하거나 특정한 바이오스 기능에 접근하기 위해서는 패스워드를 입력하도록 하는 기능 등이 있을 수 있다.

주의: 혹시 서버 머신에 부트 패스워드를 설정했다면, 여러분이 있어야만 부팅이 가능하다는 점을 명심해야 한다. 밤중에 정전이 되면 다시 돌아와서 패스워드를 입력해야 한다. ;(

3.3 Boot loader 보안

여러 가지 리눅스 부트 로더로도 패스워드 보안을 설정할 수 있다. 릴로를 예로 들면, 패스워드 (password)리스트릭티드 (restricted - 부트 제한 기능이 있는 옵션 명령어) 등의 명령어가 있다: password 명령어를 쓰면 부팅 때 항상 패스워드를 물어 보도록 만들 수 있으며, restricted 명령어를 쓰면 (릴로 프롬프트에서 single 등의 특별한 옵션을 사용한 경우에 대비해서) 부팅 패스워드를 조건적으로 물어 보도록 구성하게 된다. [6. 릴로 문서]

lolo.conf 맨 페이지에서:

     password=password
          이미지 당 사용 옵션인 'password=...'는 (아래 참조) 모든 이미지에서 사용할 수 있음.

     restricted
          이지지 당 사용 옵션인 'restricted'는 (아래 참조) 모든 이미지에서 사용할 수 있음.

          password=password
               이미지에 패스워드를 설정해 줌.

          restricted
               코맨드 라인에 매개 변수가 설정된 경우에는 
               패스워드를 반드시 사용해야만 이미지를 부팅할 수 있도록 설정해 줌. 
               (예; single).

일단 패스워드들을 설정하고 나면 패스워드들을 모두 기억해 두어야 한다는 점을 명심하라. :) 아울러 패스워드들 또한, 침입하겠다고 굳게 마음을 먹은 침입자가 있는 경우에는 단지 시간을 벌어 주는 역할밖에 못한다는 점을 기억해야 한다. 이 방법으로는 침입자가 플로피로 부팅을 해 서 루트 파티션을 마운트하는 것을 막을 수가 없다. 만약 부트 로더 보안을 이용한다면, 바이오스에서 플로피 부트 옵션을 꺼 버리고 바이오스에 패스워드를 걸어 놓는 방법 등과 섞어서 사용하는 것이 좋을 것이다.

혹시 다른 부트 로더의 보안 관련 정보를 아는 사람이 있다면 필자에게 알려주기 바란다 (grub, silo, milo, linload 등).

주의: 만약 여러분이 서버를 관리하고 있고 이 서버에 부트 패스워드를 걸어 놓는다 면, 자동으로 시동이 되도록 설치를 하는 것이 불가능하다는 것을 염두에 두어야 한다. 정전 등의 상황이 벌어지면 여러분이 직접 다시 부트 패스워드를 넣어 주어야 한다.

3.4 xlock과 vlock

여러분이 컴퓨터 앞을 자주 비운다면, 다른 사람이 여러분의 작업을 엿보거나 변조하지 못하도록 콘솔을 "잠글" 수 있는 것이 좋다. 이런 기능이 있는 두 가지 풀그림이 xlockvlock이다.

xlock은 X 윈도우 화면을 잠근다. 이 풀그림은 X를 지원하는 모든 리눅스 배포본에 들어 있다. 일반적으로 여러분이 사용하는 단말기의 아무 xterm에서나 xlock을 실행시 킬 수 있으며, 일단 실행되면 화면이 잠기게 되고 여러분의 패스워드가 입력되어야 화면을 입력 가능 상태로 되돌릴 수 있게 된다. 더 자세한 옵션은 해당 man 페이지를 찾아보도록 하라.

vlock은 리눅스 가상 단말기의 일부나 전부를 잠글 수 있도록 하는 간단한 풀그림이다. 여러 가상 단말기 가운데 본인이 작업 중인 하나 만을 잠글 수 있는데, 이렇게 되면 다른 사람들이 들어와서 다른 단말기는 쓸 수가 있지만, 여러분이 작업 중이던 가상 단말기는 본인이 해제하기 전에는 쓸 수 없게 된다. 이 vlock은 레드 햇 리눅스에는 들어 있지만, 여러분이 사용하는 배포본에는 없을 수도 있다.

하지만 단말기를 닫아 두는 정도로 여러분의 작업을 누군가가 조작하는 것 정도야 막을 수는 있겠지만, 침입자가 컴퓨터를 다시 부팅시키거나 작업을 중단시켜 버리는 것은 막을 수 없다. 또한 이 방법만으로는 침입자가 네트워크 상의 다른 컴퓨터를 이용함으로 여러분 컴퓨터에 문제를 일으키는 것을 막을 수 없다.

더 중요한 것은, 이 방법은 침입자가 X 윈도우에서 빠져 나오는 것을 막을 수는 없기 때문에, 침입자가 보통의 버츄얼 콘솔 로그인 프롬프트를 가지게 되는 것과 여러분의 권한을 훔치기 위해서 X11이 시작된 버츄얼 콘솔에 들어가서 X11을 잠정적으로 중지시키는 행위 따위를 완전히 막을 수가 없다는 것이다. 이런 이유로, 이 방법을 꼭 써야 한다면 xdm이 설정된 상황 아래에서 만 조건적으로 쓰기를 권한다.

3.5 물리적인 보안 파손의 감지

늘 점검해야 할 최우선 사항은 여러분의 컴퓨터가 언제 재부팅되었는가 이다. 리눅스는 견고하고 안정적인 운영체제이기 때문에 컴퓨터가 재부팅되어야만 하는 때는 운영체제의 업그레이드나 하드웨어 교체 등을 위해서 재부팅된 경우뿐이다. 만약 여러분이 하지 않았는데도 컴퓨터가 재부팅되었다면, 침입자가 일을 저지른 것이라는 신호일 수 있다. 컴퓨터에 침입하는 방법 중에는 컴퓨터를 재부팅시키거나 전원을 꺼야 하는 경우가 필요한 것이 많으므로.

컴퓨터 케이스와 그 주변에 어떤 조작의 흔적이 있는지 확인하도록 한다. 또한, 많은 경우에 침입자들은 일지 문서에서 자신의 흔적을 지워 버리지만, 그래도 일지 문서 (Log File: 日誌 文 書) 모두를 잘 살펴보고 어긋나는 불일치 점을 살피는 것이 좋다. [7 일지 문서]

또한 일지 문서를 --- 보호 작업이 잘 된 네트워크에 존재하는 일지 전용 서버 등의 --- 안전한 장소에 보관하는 것도 좋은 생각이다. 일단 침입자에 의해서 컴퓨터의 보안이 이미 뚫려진 상황이라면 침입자가 일지 문서도 이미 변경을 해 놓을 수 있다.

시스로그 데몬 (syslog daemon)을 쓰면. 일지 데이타를 한 장소의 중앙 일지 서버로 자동으로 보내도록 만들 수 있다. 하지만, 이 경우에 데이타는 평문 (Unencrypted text)으로 보내지게 되므 로, 데이타가 송신되는 것을 침입자가 중간에서 가로챌 수가 있다. 이러한 상황은 일반 대중이 보아서는 안 될 네트워크 정보가 유출되는 심각한 경우이다. 물론 이런 경우에는 데이타를 암호화해서 보내는 시스로그 데몬을 구해서 쓰면 될 것이다. [8. Cleartext]

또한, 인터넷 등에 이미 구성되어서 배포되어 있는 침탈 풀그림을 사용하면, 침입자가 시스로그 메시지를 가짜로 꾸미는 것이 매우 쉽다는 것을 알아야 한다. 심지어 시스로그는 제의 출처를 밝히지 않은 채로 로칼 호스트에서 날아오는 것처럼 날조되어 보내져 오는 네트워크 일지 기록을 받아서 기록하기까지 한다.

여러분 로그에서 확인해야 할 것은:

시스템 일지 데이타에 대해서는 일지의 조사에서 좀더 논의하겠다.


다음 이전 차례