4.2. BIOS와 부트로더 보안

BIOS (또는 BIOS 동급) 및 부트로더에 암호를 사용함으로서 시스템에 물리적으로 접근할 수 있는 사용자 중 허가가 없는 사용자가 이동 매체를 사용하여 부팅하거나 단독 사용자 모드를 사용하여 루트 권한을 갖게되는 것을 방지할 수 있습니다. 그러나 이러한 공격에 대비한 보안 척도는 워크스테이션에 저장된 정보의 중요성과 컴퓨터가 어디에 위치하고 있는지에 따라서 달라집니다.

예를 들어 만일 컴퓨터가 전시회에서 사용되며 아무런 중요한 정보도 저장되어 있지 않다면 이러한 공격에 대비할 필요가 없습니다. 그러나 만일 회사 네트워크에 접속하는데 사용되는 암호화되지 않은 사설 SSH 키가 저장된 직원의 랩탑 컴퓨터를 이 전시회장에서 아무도 감시하지 않은채 내버려둔다면 회사 전체의 보안에 심각한 영향을 끼칠 수 있는 위험 요소가 될 수 있습니다.

다른 한편으로 워크스테이션이 오직 허가가 있는 사용자와 신뢰할 수 있는 사용자만 접근할 수 있는 곳에 위치한다면 BIOS나 부트로더를 보안 조치를 취하는 것이 그리 필요하지 않을 수도 있습니다.

4.2.1. BIOS 암호

다음은 컴퓨터의 BIOS에 암호를 지정하여 보호해야하는 두 가지 중요한 이유입니다[1]:

  1. BIOS 설정을 변경하지 못하도록 함 — 만일 침입자가 BIOS에 들어갈 수 있다면 디스켓이나 CD-ROM을 사용하여 부팅하도록 설정할 수 있습니다. 이렇게 되면 침입자는 복구 모드나 단일 사용자 모드로 들어가서 시스템에 바이러스 프로그램을 퍼트리거나 중요한 자료를 복사할 수 있는 기회를 갖게됩니다.

  2. 시스템 부팅 방지하기 — 일부 BIOS는 암호를 입력해야 부팅할 수 있도록 하는 기능을 제공합니다. 이 기능이 활성화된 경우 BIOS가 부트로더를 시작하기 전에 침입자는 암호를 입력하여야 시스템을 부팅 가능합니다.

컴퓨터 제조업체마다 BIOS 암호를 설정하는 방법이 다르기 때문에 컴퓨터 구입시 함께 들어있던 메뉴얼에서 BIOS 암호를 설정하는 특정 지시 사항을 참조하시기 바랍니다.

BIOS 암호를 잊으셨다면 마더보드에서 점퍼(jumper)를 사용하거나 CMOS 배터리를 빼서 재설정하실 수 있습니다. 이러한 이유로 가능한 컴퓨터 케이스를 잠그시는 것이 보안상 좋습니다. 그러나 이 절차를 시도하시기 전에 컴퓨터나 마더보드의 메뉴얼을 먼저 참조하시기 바랍니다.

4.2.1.1. x86가 아닌 플랫폼에서의 보안

다른 구조는 다른 프로그램을 사용하여 x86 시스템 상 BIOS와 유사한 기본 작업을 수행합니다. 예를 들면 Intel® Itanium™ 컴퓨터는 EFI (Extensible Firmware Interface) 쉘을 사용합니다.

다른 구조에서 BIOS와 유사한 프로그램을 암호를 사용하여 보호하는 방법을 알고 싶으시면 제조 업체의 메뉴얼에서 지시 사항을 따르시기 바랍니다.

4.2.2. 부트로더 암호

리눅스 부트로더를 암호를 사용하여 보호해야하는 중요한 이유는 다음과 같습니다:

  1. 단독 사용자 모드로 들어가지 못하게 함 — 만일 침입자가 단독 사용자 모드로 들어갈 수 있다면, 그 침입자는 루트 사용자 권한을 갖게 됩니다.

  2. GRUB 콘솔에 접근하지 못하게 함 — GRUB을 부트로더로 사용하신다면 침입자가 GRUB 편집기 인터페이스를 사용하여 GRUB의 설정을 변경하거나 cat 명령을 사용하여 정보를 수집할 가능성이 있습니다.

  3. 안전하지 않은 운영 체제에 접근하는 것을 방지함 — 다중 부트 시스템에서 침입자는 부팅시 접근 제어와 파일 권한과 같은 기능을 사용하지 않는 DOS와 같은 운영 체제를 선택할 가능성이 있습니다.

x86 플랫폼을 위한 Red Hat Enterprise Linux에는 GRUB과 LILO 부트로더가 포함되어 있습니다. 각 부트로더에 대한 보다 자세한 정보는 Red Hat Enterprise Linux 참조 가이드의 부트로더 장을 참조하시기 바랍니다.

4.2.2.1. GRUB 암호 보호

GRUB의 설정 파일에 암호를 추가하여 4.2.2 절에서 설명된 첫번째 두가지 문제점에 대처하도록 설정 가능합니다. 이렇게 하시려면 우선 암호를 결정하신 후에 쉘 포름프트를 열고 루트로 로그인하신 후 다음을 입력하시면 됩니다:

/sbin/grub-md5-crypt

GRUB 암호를 입력하신 후 [Enter] 키를 누르십시오. 암호의 MD5 해시가 출력될 것입니다.

다음으로 GRUB 설정 파일 /boot/grub/grub.conf을 편집하십시오. 파일을 여신 후 중심 섹션에서 위치한 timeout 줄 밑에 다음 줄을 추가하시면 됩니다:

password --md5 <password-hash>

<password-hash>를 /sbin/grub-md5-crypt 명령 출력값으로 교체하십시오[2].

시스템이 다음에 부팅되면 GRUB 메뉴에서 [p]를 누르신 후 GRUB 암호를 입력하시지 않으시면 편집기나 명령 인터페이스에 들어갈 수 없습니다.

불행이도 이러한 해결책 만으로는 침입자가 다중 부트 환경에서 비보안 운영 체제로 부팅하는 것을 방지할 수 없습니다. 이러한 이유로 /boot/grub/grub.conf 파일을 편집하셔야 합니다.

비보안 운영 체제의 title 부분을 찾으신 후 바로 아래 부분에 lock이라는 줄을 추가하십시오.

DOS 시스템에서 이 절은 다음과 유사하게 시작해야 합니다:

title DOS
lock

경고경고
 

이 방법이 제대로 작동하기 위해서는 /boot/grub/grub.conf 파일의 중심 부분에서 password 줄이 있어야 합니다. 그렇지 않으면 침입자가 GRUB 편집기 인터페이스에 접속하여 잠금 줄을 삭제할 가능성이 있습니다.

특정 커널이나 운영 체제에 다른 암호가 사용되도록 하시려면 암호 줄 다음 절에 lock이라는 줄을 첨가하시기 바랍니다.

각 절은 다음 예시와 유사한 줄로 시작하는 고유 암호로 보호됩니다:

title DOS
lock
password --md5 <password-hash>

4.2.2.2. LILO를 보호하는 암호

LILO는 GRUB 보다 단순한 부트로더로서 명령 인터페이스를 제공하지 않습니다. 따라서 침입자는 커널이 로딩되기 전에는 시스템에 상호 대화식 접근을 할 수 없습니다. 그러나 침입자가 단일 사용자 모드나 비보안 운영 체제로 부팅할 가능성은 여전히 존재합니다.

LILO를 보호할 암호를 설정하시려면 설정 파일의 전역 부분에 암호 지시어를 추가하시면 됩니다. 먼저 쉘 프롬프트를 여시고 루트 사용자로 로그인하신 후 /etc/lilo.conf 파일을 수정하시기 바랍니다. 첫번째 image 절 앞에 다음 예시와 유사한 암호 지시어를 추가하시기 바랍니다:

password=<password>

앞의 지시어에서 <password> 부분을 LILO의 암호로 바꾸어 입력하십시오.

중요중요
 

/etc/lilo.conf 파일을 편집하신 후 /sbin/lilo -v -v 명령을 실행하셔야 변경 사항이 효력을 발생합니다. 만일 암호가 설정되었지만 루트가 아닌 사용자가 파일을 읽을 수 있다면 LILO는 제대로 설치된 후 사용자에게 설정 파일의 허가가 올바르지 않다고 통지해줍니다.

전역 암호를 사용하는 것이 바람직하지 않다면 커널이나 운영 체제에 해당하는 절에 암호 지시어를 추가하실 수 있습니다. 이렇게 하시려면 image 줄 바로 밑에 암호 지시어를 추가하셔야 합니다. 마치시면 암호로 보호된 절의 시작 부분은 다음과 같이 나타납니다:

image=/boot/vmlinuz-<version>
        password=<password>

앞서 예시에서 <version>을 커널 버전으로 대체하시고 <password>를 커널에 사용되는 LILO 암호로 바꾸시면 됩니다.

사용자가 암호를 사용하지 않고 인수를 지정하는 것을 방지하면서도 암호를 확인하지 않고 커널이나 운영 체제가 부팅하는 것을 허용할 수 있습니다. 이렇게 하시려면 절에서 암호 줄 밑에 restricted 지시어를 추가하십시오. 이러한 절은 다음 예시와 유사하게 나타날 것입니다:

image=/boot/vmlinuz-<version>
        password=<password>
        restricted

<version>를 커널 버전으로, <password>를 커널에 사용된 LILO 암호로 대체하시기 바랍니다.

만일 restricted 지시어를 사용하신다면 절 내에 암호 줄도 있어야 합니다.

경고경고
 

/etc/lilo.conf 파일은 누구든 읽기 가능합니다. LILO를 암호 보호하신다면 모든 암호가 평문으로 되어 있으므로 루트 사용자만이 이 파일을 읽고 수정할 수 있게 설정하셔야 합니다. 루트로 로그인하신 후 다음 명령을 입력하시기 바랍니다:

chmod 600  /etc/lilo.conf

주석

[1]

시스템 BIOS는 제조업체에 따라 다르기 때문에 일부 BIOS는 두 가지 중 한가지 유형의 암호 보호를 지원하지만 다른 유형은 지원하지 않는 반면 다른 BIOS는 두가지 유형 모두 지원하지 않을 수도 있습니다

[2]

GRUB은 또한 암호화되지 않은 암호를 수용합니다. 그러나 보안상 이유로 md5 해시를 사용하시길 권장합니다.