강좌
클라우드/리눅스에 관한 강좌입니다.
해킹&보안 분류

리눅스마스터1급 : 시스템 보안을 위한 물리적 접근 관리

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터1: 시스템 보안을 위한 물리적 접근 관리

 

 




리눅스 및 서버어플리케이션이 설치되어 운영되고 있는 장비에 접근 및 제어를 할 수 있는 권한을 의미 한다.

 

 

 

쉽게 이야기 하면 장비의 전원버튼을 누르고 전원케이블을 빼거나 연결하고 네트워크 케이블을 연결 하거나 제거하는 등의 실제 물리적인 힘을 가할 수 있는 부분이며 악의적인 경우 시스템을 파손 할 수도 있다.

 

 

 

이는 명시적인 허가권보다 직접 로컬의 환경을 점검 하고 개선하는 것부터 시작해야 한다.

 

 

 

여기에 필요한 것부터 하나씩 살펴보도록 하자.

 

 

 

물리적인 접근 관리

 

일반적으로 서버 시스템의 경우 랙(Rack)에 보관되어 운영되고 있다.

 

 

 

서버가 운영되고 있는 랙에 접근을 할 수 있는 사용자는 누구라고 명시적으로 알린다고 해도, 사용자들이 이동할 수 있는 공간에 있다면 명시적으로 접근을 허가받지 못한 사용자도 접근을 할 수 있으며 특히 시건장치가 없다면 아무나 열어서 접근을 하게 된다.

 

 

 

 

 

첫째. 물리적인 접근 관리를 위해서는 사용자들이 상주 하는 공간과는 다른 공간에 격리가 필요하다.

 

 

 

많은 사람이 있는 곳이라면 고의적이지 않은 여러 가지 문제가 발생하게 된다.

 

 

 

간단하게 케이블(전원, 네트워크, ..)이 사용자의 몸에 걸려 느슨해지거나 잘못 만져서 전원 버튼을 누르는 경우처럼 다양한 사고를 유발할 수 있는 문제점을 안고 있다.

 

 

 

 

둘째. 격리된 공간에 대한 시건장치가 필요하다.

 

 

 

시건장치를 해제 할 수 있는 키는 물리적 접근이 가능한 그룹에만 주도록 한다.

 

 

 

격리된 공간에 시건장치가 없다면 악의적인 사용자가 접근하여 파손, 유출등을 시도할 수 있다.

 

 

 

격리되어 다른 사용자의 접근이 드물기 때문에 어떠한 침해 행위를 하여도 누가 하였는지 어떤 경로로 하였는지 확인할 수 없다

 

셋째. CCTV등을 이용한 내부 공간의 모니터링 및 격리 공간으로 접근 사용자 모니터링이 필요하다.

 

 

 

CCTV또는 상주 인력이 존재하지 않는다면 접근이 허가된 사용자중에 누가 어떤 의도로 침해를 했는지 확인할 수 없으며 우연히 허가 받지 못한 사용자가 접근을 하여도 확인 및 조치를 할 수 없다.

 

 

 

 

 

넷째. 격리된 공간에 가지고 갈수 있는 소지품에 대한 제한이 필요하다.

 

 

 

허가된 사용자 중에 악의적인 의도가 있어 파손에 필요한 소지품을 지참한다면 심각한 문제가 야기될 수 있다.

 

 

 

 

다섯째. 저장매체를 반출입시 저장매체에 대한 확인이 필요하다.

 

 

 

접근이 허용된 관리자중 악의적인 의도에 의해 내부 정보 유출등의 문제를 예방하기 위해서는 반입 출입 되는 저장매체에 대한 인허가와 인가된 매체라도 매체에 대한 확인 및 저장된 데이터에 대한 확인 절차가 필요하다.

 

 

 

 

 

장비의 접근 관리

 

 

장비에 대한 접근 관리를 한다는 것은 장비의 전원 버튼을 누르거나 각종 케이블의 연결 및 제거가 가능하며 입력 장치와 출력 장치를 이용해 서버에 접근이 가능한 권한을 관리 한다는 것이며 이러한 권한을 가질 수 있는 것은 시스템 관리 및 오퍼레이터의 권한을 가진다는 의미이다.

 

 

 

 

 

만약 누군가 불법적인 접근을 하였을 때 관리자가 작업하던 서버 인풋 아웃풋 장치가 연결되었으며 수퍼 유저의 권한으로 터미널이 연결 되어있다면 접근한 자의 의도에 따라 정보유출, 장비 파손, 시스템 침해 등의 심각한 문제가 발생할 수 있다.

 

 

 

 

 

그리고 대부분의 OS는 재부팅을 한 후 부트로더에서 수퍼 유저의 접근권한을 취득할 수 있다.

 

 

 

이를 이용하면 입력 출력 장치연결 만으로도 위에서 살펴본 다양한 보안적 위험요소가 발생 하게된다.

 

 

 

이러한 문제들로 인해 장비에 접근하는 권한을 강화 하는 방법에 대해 살펴보자.

 

BIOS 접근 제한

우리가 흔히 펌웨라고 부르는 부분이기도 하며 x86 하드웨어에서 각 하드웨어적인 장치를 관리하고 부팅이 가능한 장치를 통한 부팅 순서들을 지정할 수 있다.

 

 

 

각 장치들의 정보를 부트로더가 참조할 수 있도록 각 장치의 정보 및 링크들을 부트로더로 넘겨주는 역할을 한다.

 

 

 

여기서 장치들의 설정 및 부팅 순서를 설정하는 부분이다 보니 악용될 경우 심각한 상태를 초래 할 수 있다.

 

 

 

 

 

부트로더의 접근 제한

부트로더는 앞서 언급한 BIOS에서 넘어온 장치 정보를 이용하여 커널 및 각 장치에 필요한 모듈을 로드시켜 커널이 완벽하게 오퍼레이팅 시스템으로 역할을 할 수 있도록 해준다.

 

 

 

즉 부트로더는 로드 시킬 커널을 선택할 수 있으며 리눅스가 부팅시 사용할 runlevel을 설정 할 수 있다.

 

 

 

만약 root의 권한이 없는 사용자가 리눅스 시스템을 리부팅 후 runlevel 1로 부팅을 시도 한다면 root의 권한을 얻게 된다.

 

 

 

 

 

이러한 상황을 회피하거나 지연하기 위해서 부트로더의 보안이 필요하며 리눅스 시스템에서 주로 사용하는 부트로더는 grublilo에서는 부팅시 조작을 위해 패스워드를 사용하여 조작하도록 하는 부분이 있다.

 

 

 

이를 설정하여 위와 같은 상황을 회피하거나 지연을 시키는 것이 가능하다.

 

 

 

 

 

grub에서 패스워드 설정은 /etc/grub.confpassword 항목을 추가하는 것으로 가능하다 하지만 md5 형식의 패스워드를 구하기 위해서는 아래와 같이 해야 한다.

 

 

 

 

 

 

 

 

 

# grub

Probing devices to guess BIOS drives. This may take a long time.

 

 

GNU GRUB version 0.97 (640K lower / 3072K upper memory)

 

[ Minimal BASH-like line editing is supported. For the first word, TAB

lists possible command completions. Anywhere else TAB lists the possible

completions of a device/filename.]

grub> md5crypt

md5crypt

Password: 1234

1234

Encrypted: $1$NmiJB1$aw5RYmB6ppAFlupAHMUSW.

 

 

 

 

 

 

grub.conf에서 아래와 같이 추가 하면 된다.

 

 

 

 

 

 

 

 

 

# grub.conf generated by anaconda

#

# Note that you do not have to rerun grub after making changes to this file

# NOTICE: You have a /boot partition. This means that

# all kernel and initrd paths are relative to /boot/, eg.

# root (hd0,0)

# kernel /vmlinuz-version ro root=/dev/sdb5

# initrd /initrd-[generic-]version.img

#boot=/dev/sdb

default=5

timeout=5

splashimage=(hd0,0)/grub/splash.xpm.gz

hiddenmenu

password -md5 $1$NmiJB1$aw5RYmB6ppAFlupAHMUSW.

 

 

 

 

 

lilo의 경우 구버전 linux에서 주로 사용을 하고 있으며 최신의 배포본의 경우 대부분 grub를 사용하고 있다.

 

 

 

 

이도 grub와 마찬가지로 “password”, “restricted”라는 지시자를 이용한다.

 

 

 

 

 

- password 지시자는 부팅시 반드시 패스워드를 입력 받도록 하며 lilo.confpassword="패스워드"를 추가 하면된다.

 

 

 

 

- restricted 특별한 옵션을 사용할 경우 조건에 따라 패스워드를 요구한다.

 

 

 

각 커널이미지 마다 다르게 설정 가능하다.

 

 

 

 

 

패스워드를 설정한 경우라도 100%안전하지는 않다.

 

 

 

높은 수준의 해커가 강한의지를 가지고 침입을 하면 시간 지연의 효과밖에 볼 수 없다.

 

 

 

하지만 잘못된 사용자의 오작동등을 방지하기에는 좋은 방법이다.

 

 

 

 

 

그리고 패스워드를 설정하여도 부팅 디스크를 변경하여 부팅 하는 경우는 전혀 동작하지 않는다.

 

 

 

이런 부분까지 신경쓰기위해서는 BIOS에서 부팅 디스크를 사용할 디스크로 고정 하고 나머지 부팅 디바이스는 제거후 BIOS와 부트로더에 패스워드설정을 하게되면 디바이스를 변경하여 부팅하는 부분에 대해서도 방어가 가능하다.

 

 

 

 

 

 

터미널 접근 제한

 

xlock : 사용자가 지정한 패스워드를 입력하기 전까지 X11 로컬 디스플레이를 잠그는 명령이다.

 

 

 

해당 프로그램은 X11이 포함되어있는 모든 배포판에서 지원하는 명령이며 xlock이 동작하면 모든 새로운 접속을 거부하게 되며 xlock이 실행된 단말기에서 지정된 패스워드를 입력해야 잠금 상태에서 해제가 된다.

 

 

 

세부적인 내용은 man page를 참조하기 바란다.

 

 

 

 

vlock : 하나 이상의 세션(가상 콘솔)을 잠글 때 사용 되는 명령이다.

 

 

 

해당 명령은 로컬 세션을 잠글 때 사용하며 직렬터미널이나 원격 터미널을 이용하여 vlock processkill 하게 되면 잠금 상태도 사라진다.

 

 

 

작업중인 로컬 세션을 보호 할 수는 있지만 다른 터미널등으로 접속하는 것 까지 막지는 못하며 xdm등의 X11 시스템이 사용되는 곳에서 사용가능하다.

 

 

 

 

nologin : root를 제외한 다른 사용자의 접근을 차단하는 방법이다.

 

 

 

pam“account required pam_nologin.so” 이와 같은 설정이 있을 경우 사용할 수 있으며 /etc/nologin 파일을 생성하는 것으로도 root를 제외한 모든 사용자의 접근을 거부하게 된다.

 

 

 

정전이나 침해를 당해 파일들이 유실된 상황에서 일반사용자들이 자신의 계정으로 작업을 하거나 ftp를 이용해 파일을 업로드 하거나 다운로드를 한다면 많은 문제점을 야기 할 수 있다.

 

 

 

이러한 경우 원격의 접속을 차단하고 로컬시스템의 관리자만이 작업을 할 수 있도록 하며 이러한 긴급상황에서 사용할 수 있는 방법이다.

 

 

 

 

 

확인 방법

어떠한 상태를 점검하느냐에 따라 확인하는 부분이 달라지지만 먼저 일반적인 물리적 상태를 점검하기 위해서는 장비에 이상한 점이 없는지 확인을 해야 한다.

 

 

 

 

 

USB, 추가된 HDD, 등의 부팅가능한 저장매체가 추가되지 않았는지

파손을 시도한 흔적은 없는지

물리적으로 이상한 점은 없는지

연결필요성이 없는 케이블등이 연결되어 있지는 않은지

 

그리고 재부팅의 흔적은 없는지 확인 해야 한다.

 

 

 

재부팅의 흔적을 확인하기 위해서는 로그를 확인 해보아야 하는데 로그 확인 시 점검해야할 사항은 아래와 같다.

 

 

 

 

 

불완전한 기록은 없는지

 

이상하거나 잘못된 timestamp는 없는지

 

재부팅등의 로그는 없는지

 

사라지거나 지워진 기록은 없는지

 

접속 이력

 

사용자를 전환한 기록은 없는지     

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,038 명
  • 현재 강좌수 :  35,818 개
  • 현재 접속자 :  88 명