㈜안랩코코넛 컨설팅사업부 심봉권 컨설턴트
bkshim@coconut.co.kr

기업 및 개인의 자산을 안전하게 보호하기 위한 최선의 방법은 주기적인 취약점 점검 및 제거와 같은 예방활동일 것이다. 하지만 보안에 있어서 "완벽한 보안은 없다" 라는 말처럼 어떠한 보안도 해킹 기술을 앞지를 수 없으며, 신규 취약점에 대한 보안패치가 발표되거나 보급되기 이전 짧은 시간내에 웜 또는 바이러스 형태로 전세계 네트워크를 통해 전파되는 이른바 제로데이 공격(Zero-day Attack)이 곳곳에서 발견되고 있기 때문에 언제든 네트워크에 연결되어 있는 정보자산은 해킹에 노출되어 있다고 볼 수 있다.

그렇다면 보안사고가 발생할 것을 대비하여 보안관리자 혹은 자산의 관리자는 무엇을 할 수있을까? 컴퓨터의 모든 일련의 작업은 로그라는 정보로 저장되게 된다. 이러한 로그는 다음과 같은 용도로 활용될 수 있다.

컴퓨터 관련 범죄가 일어났을 경우 해킹의 흔적을 찾기 위해 관리자는 시스템에 저장되어 있는 로그를 분석하게 된다. 이렇게 분석된 자료는 단순히 해킹의 흔적을 찾기 위한 수단뿐 아니라 여러가지 용도로 활용될 수 있는데, 예를 들어 해킹에 이용된 공격기법을 로그분석을 통해 발견할 수 있다면 시스템의 취약점을 제거하는데 사용될 수 있으며, 공격에 대한 근원지를 찾아낼 수 있다면 공격으로 인한 자산의 손실에 대해서 공격자에게 법적 책임을 묻기 위해 로그를 증거로 제출할 수 있을 것이다.

이렇듯 보안관리를 위해서는 시스템에서 발생할 수 있는 취약점 점검 및 제거와 같은 예방활동도 중요하지만 만일의 사고에 대비하여 로그를 관리하고 주기적으로 분석하는 작업 또한 중요한 것을 알 수 있다. 하지만 많은 관리자들은 로그관리 및 분석에 대해서 어려움을 겪고 있다. 이번호에서는 이런 관리자분들께 도움을 드리고자 로그관리방안과 함께 분석방법을 알아보고자 한다.

로그를 간단히 요약하자면 시스템의 모든 기록을 담고 있는 데이터라고 할 수 있다. 이 데이터에는 성능, 오류, 경고 및 운영 정보 등의 중요 정보가 기록되며, 특별한 형태의 기준에 따라 숫자와 기호 등으로 이루어져 있다. 하지만 로그를 분석하지 않고 그대로 활용하기란 매우 어렵다. 웹 서버의 경우 많게는 하루에 수백메가에서 기가단위의 로그가 쌓이기도 하며, 이러한 로그를 일일이 살펴보기란 쉽지 않기 때문이다. 대량의 로그를 필요로 하는 정보로 만들어 내는 행위를 로그분석이라 할 수 있으며, 이에 대한 정의를 다음과 같이 내릴 수 있다.

"로그분석이란 로그 데이터를 분석하여 필요로 하는 유용한 정보를 만들어내는 행위"

로그 데이터 분석을 통해 얻을 수 있는 정보는 다음과 같이 다양하게 활용되고 있다.
외부로부터의 침입 감지 및 추적
시스템 성능관리
마케팅 전략으로 활용
시스템의 장애 원인 분석
시스템 취약점 분석

앞에서도 언급을 했지만 로그 데이터의 중요성을 다시 한번 정리하자면 다음과 같다.
-시스템에서 발생하는 모든 문제에 대한 유일한 단서
-시스템에서 발생한 오류 및 보안 결함 검색이 가능
-잠재적인 시스템 문제를 예측하는데 사용될 수 있음
-장애 발생시 복구에 필요한 정보로 활용
-침해사고 시 근거 자료로 활용
-각종 법규 및 지침에서 관리 의무화

로그분석에 필요한 정보로는 로그 설정방법, 파일의 저장위치, 로그에서 나타내는 정보를 들 수 있다. 그리고 로그를 관리하기 위해서는 로그의 실시간 저장 및 무결성을 확보해야 하는데 이를 위해서는 시스템의 로컬에 로그를 저장하기 보다는 원격 로그서버를 구축하거나 DB서버와 연동을 통해 로그를 저장하는 방식을 추천한다. 다수의 시스템을 관리하는 경우에는 중앙 집중식의 원격 로그서버를 구축하여 운영하는 방안이 효율적이며, 주기적으로 로그를 백업하여 시스템 오류 및 장애로 인한 로그의 손실을 최대한 줄여야 한다.

앞에서 로그관리 및 분석의 필요성에 대해서 간단히 언급했다. 하지만 로그는 OS와 Application 별로 로그를 관리하는 방안이나 로그에서 나타내는 정보가 다른 관계로 각 로그에 대한 이해가 선행되어야 한다. 이번호에서는 모든 로그를 다루기 어려운 관계로 가장 많이 사용되고 있는 OS인 Windows에 대해서 다루기로 한다.
3.1 이벤트 로그의 이해
Windows 시스템에서는 시스템의 로그가 이벤트 로그형식으로 관리되며, 이벤트 로그를 확인하기 위해서는 Windows 의 이벤트 뷰어를 이용해야 한다. 이벤트 뷰어를 이용한 개별 이벤트 확인방법은 다음과 같다.

이벤트 뷰어 실행방법 : [시작] -> [제어판] -> [관리도구] -> [이벤트 뷰어]

Windows 시스템은 응용 프로그램 로그, 보안 로그, 시스템 로그와 같은 세가지 로그를 이벤트에 기록하며, OS 구성에 따라 디렉토리 서비스 로그, 파일 복제 서비스 로그, DNS 서버 로그 가 추가될 수 있다.
각 이벤트 로그에는 헤더정보와 이벤트 설명을 포함한다.

① 이벤트 헤더 : 이벤트 헤더에는 이벤트영역들에 대한 내용을 설명하고 있다.
② 이벤트 설명 : 이벤트에 대한 상세 설명이 제공되며, 여기에는 영향을 받는 리소스들과 기타 다른 기술정보들이 포함되어 있다.
이벤트 뷰어에는 아래와 같은 다섯 가지 이벤트 유형을 표시한다.

3.2 감사 정책 및 구성 방법
감사정책이란 개체 액세스, 로그온/로그오프, 감사 정책 설정 변경 등의 보안 관련 로그를 기록하며, 지정한 이벤트 범주의 사용자나 시스템 동작을 기록하도록 정책 설정이 가능하다. 감사정책의 자세한 설명 및 로그 관리를 위한 권장값은 다음과 같다.
3.3 감사 정책 구성 방법
감사 정책을 구성하기에 앞서 유의해야 할 사항을 알아보기로 하자.

첫번째로 지나치게 넓은 범위의 감사 범위 설정으로 중요 로그의 검색에 어려움이 발생할 수 있다. 불필요한 로그를 저장하고 관리하는 것은 비단 검색의 어려움뿐 아니라 시스템의 리소스를 불필요한 곳에 쓰게 되는 문제도 있다. 이로 인해 시스템의 성능저하 및 로그관리의 어려움이 발생할 수 있으므로 시스템 감사 구성에 필요한 항목을 사전에 선정함으로써 시스템 운영시 필요한 로그만을 관리해야 할 것이다.

두번째로 잘못된 최대 이벤트 로그의 크기 설정 시 용량 한계로 시스템이 중지될 수 있다. 시스템 장애가 발생한다는 것은 서비스를 위해 서버를 운영하는 기업에선 엄청난 손실을 가져다 줄 수 있다. Windows 시스템 설치 시 이러한 문제를 방지하게 위해 Default 설정으로 오래된 항목 덮어쓰기 옵션이 설정되어 있다. 하지만 공격자가 임의로 생성시킨 로그로 인해 중요 로그가 삭제될 수 있는 문제 발생 가능성이 존재한다. 이 문제는 자동 로그 백업 또는 원격로그서버 구성을 통해 해결이 가능하다.

감사 정책을 구성하는 방법으로는 크게 로컬보안정책 설정을 이용하는 방법과 보안 템플릿을 이용한 감사 정책 구성방법이 있다. 지금부터는 각 감사 정책의 구성방법에 대해서 상세하게 알아보기로 하자.

① 로컬보안정책 설정을 이용한 감사 정책 구성
로컬보안정책을 이용한 감사 정책을 구성하기 위해서는 로컬 컴퓨터의 Administrators 그룹의 구성원이거나 적절한 권한이 위임된 사용자여야 한다. 구성방법은 다음과 같다.

로컬보안정책 실행방법 : [시작] -> [설정] -> [제어판] -> [관리도구] -> [로컬보안정책]

② 보안 템플릿을 이용한 감사 정책 구성
보안 템플릿이란 보안 구성을 표시하는 파일로 로컬 컴퓨터 및 그룹 정책 개체 적용하거나 보안 분석에 사용된다. 자세한 설명은 다음 URL을 참조하기 바란다.

보안 템플릿 : http://www.microsoft.com/technet/prodtechnol/windowsserver2003/ko/library/ServerHelp/ea9858dc-9bf1-4a42-ada6-090237ad178a.mspx?mfr=true

보안 템플릿을 이용한 감사 정책 구성 시 장점으로는 구성에 필요한 적절한 보안 설정을 수정하는 과정을 보안 템플릿을 이용하여 스크립트로 자동화가 가능하며, 로컬 권한과 보안 설정, 로컬 그룹 구성원, 서비스, 파일과 디렉토리 접근 권한, 레지스트리 키 사용 권한 등의 설정이 가능하다. 또한 도메인이 구성되어 있지 않은 네트워크의 여러 컴퓨터에 동일한 보안 구성을 손쉽게 적용이 가능하다. 간단하게 정리하자면 보안정책을 스크립트화하여 자동으로 설정 및 관리가 가능하다는 점이다. 이는 대량의 서버를 운영할 경우 매우 유용하게 사용될 수 있다.


보안 템플릿을 이용한 감사 설정방법은 다음과 같다.
보안 템플릿 도구 구성
보안 템플릿 생성
구성할 템플릿과 현재 보안 설정 비교 분석
로컬 컴퓨터에 보안 템플릿 적용

여기에서 보안 템플릿을 생성하는 방법은 언급을 하지 않겠다. 보안 템플릿 생성 및 설정을 위해 이해해야할 범위가 너무 넓기 때문이다. 이에 대한 자세한 설명은 MS사에서 제공하고 있는 보안 템플릿 페이지를 참고하기 바라며, 기회가 된다면 다음 Lecture 에서 다시 설명하기로 하겠다.

보안 템플릿을 이용하여 감사 정책을 구성하다 보면 Windows 에서 기본으로 제공되는 보안 템플릿이 있는 것을 확인할 수 있다. 각각의 템플릿 및 이에 대한 의미는 다음과 같다.



3.4 로그 분석
감사로그 설정이 완료 되었다면 시스템을 운영하면서 필요한 모든 이벤트가 보안 이벤트에 저장이 될 것이다. 하지만 앞서 설명한 것과 같이 로그를 저장하는 것만으로는 시스템에서 어떠한 일이 발생되고 있는지 확인이 불가능 하다. 이를 위해서는 로그를 검색하고 분석하는 일련의 작업이 주기적으로 이루어져야 한다.

먼저 이벤트 로그에 대한 검색 및 필터링하는 방법에 대해서 알아보기로 하자.

모든 이벤트 로그는 특정 이벤트를 찾거나 이벤트 하위 집합을 보기 위해 로그를 검색 또는 필터링 할 수 있다. 다음 그림은 감사 정책이 변경되었을 경우 발생되는 이벤트를 검색하는 방법 및 잘못된 계정 또는 패스워드로 인한 로그인 실패 이벤트에 대해서 필터링 하는 방법에 대해서 보여주고 있다.

이벤트 검색 방법 : [시작] -> [제어판] -> [관리 도구] -> [이벤트 뷰어] 보기 메뉴에서 찾기 탭 클릭 : 감사 정책이 변경된 이벤트 검색 (이벤트 ID 612)

이벤트 필터링 : [시작] -> [제어판] -> [관리 도구] -> [이벤트 뷰어] 의 보기 메뉴에서 필터 탭 클릭 : 잘못된 계정 또는 패스워드로 인한 로그인 실패 필터링 (이벤트 ID 529)

모든 이벤트 로그는 이벤트 ID 또는 상세설명의 필드를 통해 공격패턴에 대해서 분석이 가능하다.
각 이벤트 로그에 대한 상세 설명은 다음 URL 을 통해 확인할 수 있다.

http://www.microsoft.com/korea/technet/security/prodtech/windows/windows2000/staysecure/secops06.asp
http://www.microsoft.com/korea/technet/security/guidance/secmod128.asp

다음은 보안 이벤트 분석에 참고할만한 이벤트 몇가지를 정리해 놓은 것이다.

실제 시스템의 해킹으로 인해 발생했던 로그에 대해서 몇가지 사례를 통해 로그분석에 대한 이해를 돕고자 한다. 여기에서 언급되는 사례 외에도 로그의 이해 및 분석 방법을 응용함으로써 다양한 보안이벤트 및 공격 등을 탐지해 낼 수 있다.
4.1 Brute force 공격 시도
계정 잠김 정책이 설정되어 있을 경우 계정 또는 패스워드의 잘못된 입력으로 계정이 잠길 수 있다. 보안 이벤트에서 대량의 로그인 실패 이벤트 또는 계정 잠김에 관련된 이벤트 검색을 통해 이러한 유형의 공격을 확인할 수 있다.
4.3 허가되지 않은 IP 에서의 터미널서비스 접속 시도
허가되지 않은 IP에서 터미널서비스 접속 및 터미널 서비스 인터넷 사용자 계정의 패스워드 변경시도를 확인할 수 있다.
로그 설정 및 분석방법에 대해서 간단히 알아 보았다. 마지막으로 로그관리를 위한 효율적인 방안에는 어떠한 것들이 있으며, 로그관리 및 분석을 위한 자동화된 툴에 대해서 알아보기로 하겠다.

5.1 이벤트 로그 보호
이벤트 로그 항목의 유지 관리 및 보안을 위해 다음과 같은 방법을 이용할 수 있다.
-저장을 위한 정책을 정의하고 모든 이벤트 로그를 덮어쓰기 적용
-게스트가 이벤트 로그에 액세스하지 못하도록 보안 정책을 설정
-보안 로그의 내용을 지우려는 시도가 있는지 판별하기 위해 성공 및 실패 모두에 대한 시스템 이벤트 감사를 수행 (이벤트 ID 517, 612)

5.2 최대 이벤트 로그 크기
이벤트 로그의 크기를 잘못 설정하여 시스템 장애가 발생할 수 있다는 내용을 앞에서 언급한바 있다. 이러한 장애 및 로그의 손실을 줄이기 위해서는 관리되는 시스템에 쌓이는 로그량을 분석하여 이벤트 로그의 크기를 결정해야 한다.

평균 이벤트는 약 500바이트를 소비한다. 이를 염두해 두고 이벤트 로그 크기를 다음과 같이 산정할 수 있다.
-4주 기준으로 하루에 약 1000개의 이벤트 발생시
-500바이트 * 1000이벤트/일 * 30 = 15,000,000 바이트

5.3 로그 백업
로그 데이터는 다음과 같은 3가지 형식으로 백업이 가능하다.
-이벤트 로그(.evt)
-텍스트(탭 구분 형식)(.txt)
-CSV(쉼표 구분 형식)(.csv)

로그 백업 방법 : [시작] -> [제어판] -> [관리 도구] -> [이벤트 뷰어] 확장 후 보관할 로그의 메뉴중 다른 이름으로 로그 파일 저장을 클릭 -> 파일 저장 위치와 파일 이름 지정

5.4 로그 관리 도구
이벤트 로그의 경우 Unix 계열의 Syslog와는 로그를 외부로 전송할 수 있는 기능을 제공하고 있지 않아 로그백업 및 관리의 어려움이 있다. 이를 해결하기 위해 MS사에서는 다음과 같은 별도의 로그 관리 및 분석도구를 제공하고 있다.

1) 이벤트 로그를 주기적으로 텍스트 형태로 저장하는 방법
Windows 2000 Server Resource Kit 에 포함되어 있는 Dumpel.exe 를 이용하여 이벤트 로그를 탭으로 구분한 텍스트 파일로 덤프가 가능하다. 자세한 내용은 아래 URL 을 참고한다.
-참고사이트 :
http://support.microsoft.com/default.aspx?scid=kb;ko;602023#appliesto

2) 다수의 서버를 이벤트 분석 도구
EventCombMT 도구를 이용하여 여러 서버의 이벤트 로그를 동시에 분석할 수 있으며, 각 서버마다 검색 기준에 포함되는 별도의 실행 스레드를 열 수 있다. 이 도구는 다수의 서버가 도메인 컨트롤러로 연결되어 있을 경우 유용하게 쓰일 수 있다.
-참고사이트 :
http://www.microsoft.com/korea/technet/security/prodtech/windows/windows2000/staysecure/secops06.asp

-참고 사이트 : http://www.microsoft.co.kr

,