본문 바로가기

정보보호

서버보안(Secure OS) S/W 소개 기사

 === 출처 : 시사컴퓨터 ===

서버보안의 마지막 방어선, 안전한 운영체계

서버보안으로 기존 보안의 한계를 넘자

국내 보안시장은 바이러스 백신, 방화벽, 침입탐지시스템 등 애플리케이션 단위의 보안시스템이 주류를 이루고 있다. 이러한 보안기술은 애플리케이션 수준에서 작동하기 때문에 침해 가능한 버그가 있을 수 있고, 시스템은 해킹 당하면 스스로 보호하지 못하는 근본적인 한계를 가지고 있다. 본지에서는 2회에 걸쳐 기존 보안시스템의 한계를 극복할 서버보안 프로그램과 새로이 부각되는 안전한 운영체계 기술을 소개하고자 한다. 지난 호 애플리케이션 보안시스템의 이점과 한계에 이어 이번 호에서는 커널 수준에서 보안문제를 다루는 운영체계 기술에 대해 살펴본다.
<편집자>

:: 그림 보기 ::
(그림1) 운영체계 보안기능
(그림2) 일반 컴퓨터 시스템 구조
(그림3) 참조모니터의 개념
(그림4) 보안커널 구현방법
(그림5) 동일한(identical) 운영체계
(그림6) 호환(Compatible) 운영체계
(그림7) 새로운 운영체계
(그림8) UNIX 시스템에서의 시스템 콜 후킹(System Call Hooking)
(그림9) 참조모니터의 구체도
(표1) 보안커널의 설계원리
(표2) 보안커널의 보안기능

Secure OS란 컴퓨터 운영체계상에 내재된 보안상의 결함으로 인하여 발생 가능한 각종 해킹으로부터 시스템을 보호하기 위해 기존의 운영체계 내에 보안기능을 통합시킨 보안커널(Security Kernel)을 추가로 이식한 운영체제의 보안커널 이다. 보안커널이 이식된 운영체계는 컴퓨터 사용자에 대한 식별 및 인증, 강제적 접근통제(MAC: Mandatory Access Control), 임의적 접근통제(DAC: Discretionary Access Control), 재사용 방지(Object Reuse Prevention), 침입 탐지(Intrusion Detection) 등의 보안 기능 요소를 갖추어야 한다(그림 1). 보통 보안커널은 안전한 운영체계 전체가 되기도 하며, 두 용어 사이의 의미는 혼용되기도 한다.

컴퓨터의 중심부, 보안커널


전통적인 컴퓨터 시스템의 구조는 그림 2와 같이 하드웨어, 운영체계 및 응용프로그램으로 구성된다. 그림에서 각각의 계층은 아래 계층에 있는 facility를 사용한다. 운영체계와 하드웨어는 보안관련으로 보안경계(Security Perimeter) 내부에 위치한다. 또한, 응용프로그램은 잘 정의된 시스템 콜을 사용하여 보안경계를 통해 운영체계에 접근한다. 사용자들은 시스템 외부에 있으며, 운영체계와 직접 통신하거나 응용프로그램을 통하여 시스템에 접근하는 것이다.
보안커널은 전통적으로 미국 등의 선진국으로부터 개념이 정립되어 왔으며 다양하게 정의를 내리고 있지만 대체로 다음과 같이 정리될 수 있다.

· 참조모니터(Reference Monitor)의 개념을 정의한 TCB(Trusted Computing Base)의 하드웨어, 펌웨어, 소프트웨어 요소
· 보안커널이란 시스템 자원에 대한 접근을 통제하기 위한 기본적인 보안절차를 구현한 컴퓨터의 중심부


참조모니터란 보안커널의 가장 중요한 부분으로 객체에 대한 접근통제기능을 수행하고 감사, 식별 및 인증, 보안 매개변수 설정 등과 같은 다른 보안메커니즘과 데이터를 교환하면서 상호작용을 한다(그림 3). 참조모니터는 항상 호출되어야 하고, 참조모니터에 대한 부정행위는 방지되어야 하며, 분석과 시험이 용이하도록 충분히 작아야되는 요구사항을 가지고 있다.
TCB는 보안정책의 시행을 책임지는 하드웨어, 펌웨어, 소프트웨어 및 이들의 조합을 포함하는 컴퓨터 시스템 내의 모든 보호 메커니즘으로서 기본적인 보호환경을 제공하며, 운영체계의 기본적인 작업(프로세스 활성화, 실행영역 교환, 메모리 보호, I/O 연산 등)에 대한 보안성 및 무결성을 감시하는 기능을 수행한다.

보안커널의 설계원리
보안 커널은 일반적으로 운영체계와 유사하며, 전통적인 운영체계 설계 개념을 사용한다. 보안커널에 요구되는 하드웨어도 거의 유사하다. 보안커널은 보안경계 내의 모든 주체와 객체를 통제해야 하며 프로세스, 파일시스템, 메모리 관리, I/O를 위한 자원을 제공해야 한다. 일반적으로 보안커널의 개념을 운영체계에 구현하기 위해서는 표 1과 같은 설계원리가 적용되고 있다.
보안커널 설계시 커널의 구조 설계와 함께 운영체계가 지원해야 할 보안기능에 대해서도 고려해야 하는데, 운영체계는 최소한 표 2의 보안기능을 제공해야 한다.

보안커널 구현 전략
보안커널은 일반적으로 운영체계와 유사하며, 전통적인 운영체계 설계 개념을 사용한다. 보안커널에 요구되는 하드웨어도 거의 유사하다. 즉, 보안커널은 보안경계 내의 모든 주체와 객체를 통제해야 하며 프로세스, 파일시스템, 메모리 관리, I/O를 위한 자원을 제공해야 한다.
주어진 컴퓨터 하드웨어 상의 안전하지 않은 운영체계(ISOS, INsecure Opera
ting System)에 보안커널을 구현하는 방법은 그림 4과 같이 세가지 방법으로 나눌 수 있다.

동일한(Identical) 운영체계
실행코드의 호환성을 제공하여 기존의 응용을 대체하는 방법이지만 기존의 운영체계 변경시(업그레이드 등) 새로운 배포 문제가 발생하여 더 많은 제약이 발생한다.
가상기계(Virtual Machine) 모니터 개념을 적용하며, 3개의 도메인(커널 도메인, 운영체계 도메인, 응용 도메인)으로 구성된 구조를 갖는다. 이 시스템의 구조는 그림 5와 같다.
이 구조에서 커널은 다중의 가상기계를 지원하는데, 각각은 원래 운영체계의 복사본을 실행시킨다. 각각의 운영체계는 다중의 응용과 사용자 서비스가 가능하고, 커널은 가상기계간의 수직적인 분리를 시행하며 커널이 보조메모리 상의 파일시스템을 관리할 수 있다. 그 방법의 예로는 각 가상기계마다 디스크의 비밀영역(private area)을 할당하는 것이다. 이 방법은 기존 운영체계의 소스코드를 가능한 많이 사용하는 것이다. 예로써 IBM VM/370, KVM 등을 들 수 있다.

호환(Compatible) 운영체계
기존의 ISOS를 완전히 재설계하는 방법으로 기존의 모든 응용이 지원되어야 한다. 해결 방법은 기존의 ISOS 인터페이스와 같게 에뮬레이터를 구현함으로써 응용프로그램이 실제 ISOS와 ISOS 에뮬레이터를 분별할 수 없도록 하는 것이며, ISOS 에뮬레이터와 커널 사이의 인터페이스 정의에는 제약이 없다. 이는 또한 커널이 외부에서 동작하며, 사용자 프로그램보다 특권(privilege)을 갖는 하나의 프로그램으로서 존재하는 운영체계 에뮬레이터를 구현하는 방법이다. 예로서는 UNIX 에뮬레이터를 보안커널의 최상위에서 실행시키는 KSOS를 들 수 있으나 비용상의 제한으로 제대로 구현되지는 못했다.
운영체계 에뮬레이터의 구조는 그림 6과 같이 가상기계와 유사한 세 단계 도메인 구조이며, 하드웨어와 커널간, 커널과 ISOS 에뮬레이터간의 인터페이스를 설계하는 방법으로 인터페이스를 위한 기능을 분할한다. 이는 원래의 운영체계 소스코드를 그대로 사용하여 에뮬레이터를 구현한다는 이점이 있다. 그러나 이 구조는 일부 기능들이 새로운 보안정책(Security Policy)에 대하여 안전하지 않으며 에뮬레이터 될 수 없다는 것과 일부 기능들은 안전하기는 하나 에뮬레이트 하기가 매우 어렵다는 것이 문제점이다. 기존의 운영체계를 커널화하는 프로젝트를 수행하기 전에 에뮬레이트할 기능에 대한 세심한 분석과 함께 정책을 위반하는가를 정확히 결정해야 한다.

새로운 운영체계
커널과 운영체계를 새롭게 설계함으로써 기존의 ISOS와 응용에 제약이 없게 하는 방법으로, 시스템 구조는 에뮬레이션의 경우와 유사하다. 구현 예로서는 SCOMP를 들 수 있다.
구조는 커널의 통제하에서 각 프로세스 내에서 운영체계 코드의 부분이 그림 6과 유사하지만, 운영체계가 구현되는 공유의 형태에 따른 제약 때문에 호환성이 없다. 따라서 보안정책에 따라 정보를 공유하기 위해 커널 프리미티브를 사용하기 위해서는 파일 시스템과 운영체계의 내부 데이터베이스를 설계하는 것이 더 나은 방법일 것이다.
주어진 컴퓨터 하드웨어 상의 안전하지 않은 운영체계(ISOS, INsecure Opera ting System)에 보안커널을 구현하는 방법에는 위에서 살펴본 것과 같이 세 가지 방법이 있다. 그 중 기존의 응용프로그램 호환성과 모듈성을 제공하기 위해 ISOS를 에뮬레이트 하는 방식이 많이 사용된다. 앞에서 설명한 참조모니터는 ISOS 에뮬레이터에 해당하게 된다.

정보 흐름 감시 모듈, 참조모니터
참조모니터는 안전한 운영체계에서 프로세스(주체)와 파일(객체)의 정보 흐름을 감시하는 보안모듈이다. 일반 운영체계에서 프로세스는 파일을 열기 위해 ‘open’ 시스템 콜을 호출하고, 파일에 정보를 쓰기 위해서는 ‘write’ 시스템 콜을 호출한다. 시스템 콜은 프로세스에서 파일로 데이터를 전달하는 인터페이스이다. 운영체계에서 시스템 콜을 이용하지 않고 프로세스가 파일의 내용을 읽기는 어려운 일이다. 운영체계에서 시스템 콜 호출 상황을 보면 시스템에서 어떠한 정보흐름이 일어나는지 알 수 있다.
참조모니터를 일반 운영체계에 구현하기 위한 방법 중 가장 널리 이용되는 방법은 정보흐름 통로가 되는 시스템 콜을 감시하는 것이다. 시스템 콜 후킹(System Call Hooking) 기술을 이용하면 쉽게 시스템 콜을 감시할 수 있다. 시스템 콜은 일반적으로 시스템 콜 테이블이라고 하는 배열 구조체로 이루어져 있다. 시스템 콜 번호는 배열 구조체에 저장되어 있는 시스템 콜 함수 포인터를 가리키는 번지이다. 시스템 콜 후킹은 시스템 콜 테이블에다 기존의 시스템 콜을 대치하는 새로운 시스템 콜 함수 포인터를 입력함으로 이루어진다. 대치되는 시스템 콜에는 보안모델과 보안정책이 적용된다. 그림 8은 시스템 콜 후킹을 나타낸 것이다.
참조모니터는 운영체계 커널과 독립적으로 동작할 수 있도록 모듈 형태로 구현되는 것이 최적이다. 리눅스의 경우는 소스가 공개되어 있어서 커널 소스를 수정하면 안전한 운영체계 구현을 쉽게 할 수 있다. 그러나 버전업이 빠르게 되는 리눅스 커널에 매번 안전한 운영체계를 구현하는 것은 너무나 비효율적이다. 모듈로 작성하면 이식성과 효율성이 높아진다.
참조모니터는 주체와 객체의 접근권한을 정의한 데이터베이스를 참조함으로 보안정책을 수행한다. 후킹으로 가로챈 시스템 콜은 객체에 대한 주체의 접근권한을 데이터베이스에 정의된 보안정책을 참고하여 판단한다. 그림 9는 참조모니터의 개념을 좀더 구체화한 것이다. 그림 9를 살펴보면 주체(프로세스)는 객체(파일)를 읽기 위해 ‘read’ 시스템 콜을 부른다. 실질적으로는 후킹된 ‘read’ 시스템 콜이 호출되고 주체와 객체의 보안등급을 비교한 후 보안정책에 어긋나면 퍼미션 에러 값을 되돌린다. 정상적이라면 원래의 ‘read’ 시스템 콜을 호출하여 요청한 오퍼레이션을 수행하도록 한다.

Secure OS 국내외 동향
안전한 운영체계의 연구는 국외뿐만 아니라 국내에서도 활발히 진행중이다. 외국에서는 오래 전부터 안전한 운영체계의 필요성을 느끼고 공개적으로 프로젝트를 수행되고 있다.
국내의 경우 국가기관보다는 기업이 주도적인 개발을 이끌고 있다. 다음은 국내의 대표적인 안전한 운영체계 개발 현황과 기능들 설명한 것이다.

(블로그 주인의 주석!!!)

* RedCastle SecureOS (레드게이트 : RedCastle)

  - RedCastle은 MLS(Multi Level Security)와 RBAC (Role Based Access Control)을 포함하는 MAC(Mandatory Access Contro)과 전통적인 방식의 임의적접근통제(DAC : CA의 eTrust Access Control (SEOS)의 주된 접근 통제 방식) 정책을 동시에 지원하는 강력하고도 안정된 SecureOS로서 2005년 현재 국내 SecureOS 시장을 주도하고 있다.

· Secuve TOS FG, Secuve TOS WG(시큐브) : 전자서명을 이용한 사용자 인증 방식을 채택하고 있으며, 해킹에 의해 시스템 정보가 불법적으로 파괴 또는 삭제되는 것을 막는 기능을 지원한다. 또한 참조모니터를 모듈로 구현하여 커널에 독립적으로 동작한다.

· RedOwl SecuOS(티에스온넷) : 다중등급 보안모델을 지원하며, 해킹 방지 기술이 구현되어 있다. SSL기반의 통합관리를 지원한다.
국외의 안전한 운영체계 개발 현황은 국내의 상황보다 좋다. 오픈소스(Open Source)로 진행중인 프로젝트도 상당수 있으며, 정부의 지원으로 진행중인 안전한 운영체계 프로젝트도 있다. 다음은 미국 정부에서 주도하는 안전한 운영체계에 대한 설명이다.

· Synergy 프로젝트 : 마이크로 커널(Micro kernel) 기반구조이며, 보안정책 서버(Security policy server), 암호 서브시스템(Cryptographic Subsystem), 인증 서브시스템(Authentication Subsystem)으로 구성되어 있다.

· DTOS(Distributed Trusted Operation System) : Synergy 프로그램중의 일부로 유연성 있는 보안 통제 제공을 목적으로 만든 안전한 운영체계의 프로토타입이다.

· Fluke/Flask 프로젝트 : DTOS 연구의 후속이며 다양한 보안정책을 수용할 수 있는 유연성지원을 목표로 하고 있다. 또한 내포(nested) 프로세스 모델을 적용한 것이 특징이다.

지금까지 2회 동안 현재 운영되고 있는 서버보안 프로그램과 새로이 부각되는 안전한 운영체계 기술에 대해 살펴보았다. 사이버 세계는 컴퓨터와 인터넷의 보급으로 급속히 확산되고 있다. 또한 컴퓨터 기술의 보편화로 새로운 유형의 해커와 해킹 기술들이 하루가 다르게 발전하고 있다. 이러한 환경에 현재 운용되고 있는 서버보안기술은 그 한계에 이르렀다. 이러한 보안 한계를 극복할 안전한 운영체계 기술은 자국의 정보자산을 보호하기 위한 마지막 방패막이 될 것이다.