05 로그와 취약점 관리
로그 및 취약점과 관련하여 다음의 내용을 살펴보도록 하겠습니다.
로그란 무엇을 말하는 걸까요? 로그는 바로 시스템의 처리 내용이나 이용 상황을 시간의 흐름에 따라 기록한 것을 말합니다.
로그는 접속 및 이용이 빈번할 경우 대량으로 생성되므로 항상 관리가 필요한데요. 이는 취약점 관리 시에도 중요한 자료로 쓰입니다.
로그 관리 LOG
1. 운영 체제의 로그 관리
로그 관리
먼저 운영체제의 로그 관리 중 윈도우의 로그 관리에 대해 알아보겠습니다. 윈도우는 이벤트라고 불리는 중앙 집중화된 형태로 로그를 수집 및 관리하고 있습니다. 감사 정책은 기본적으로 수행하기 않게 설정되어 있는데, 감사 정책을 설정한 경우는 특정 동작의 성공, 실패에 따라서 선택적으로 로깅을 수행할 수 있습니다.
그렇다면 로그 수집을 위해서는 어떻게 해야 할까요? ‘제어판’ – ‘관리 도구’ – ‘로컬 보안 정책’ 창에서 ‘로컬 정책’ - ‘감사 정책’ 부분에서 설정할 수 있습니다.
윈도우의 로그 종류는 객체 액세스 감사, 계정 관리 감사, 계정 로그인 이벤트, 권한 사용 감사, 로그인 이벤트 감사, 디렉터리 서비스 액세스 감사, 정책 변경 감사, 프로세스 추적 감사, 시스템 이벤트 등이 있습니다.
먼저 개체 액세스 감사는 특정 파일이나 디렉터리, 레지스트리 키, 프린터 등과 같은 객체에 대한 접근을 시도하거나 속성 변경 등을 탐지하는 것이며, 계정 관리 감사는 신규 사용자,
그룹의 추가, 기존 사용자 그룹의 변경, 사용자의 활성화나 비활성화, 계정 패스워드 변경 등을 감사합니다. 계정 로그인 이벤트는로그온 이벤트 감사와 마찬가지로 계정의 로그인에 대한 사항을 로그로 남기는데, 이들의 차이점은 전자는 도메인 계정의 사용으로생성되는 것이며, 후자는 로컬 계정의 생성입니다. 권한 사용 감사는 권한 설정 변경이나 관리자 권한이 필요한 작업을 수행할 때 로깅합니다.
로그인 이벤트 감사는 로컬 계정의 접근 시 생성되는 이벤트 감사입니다. 계정 로그인 이벤트 감사에 비해 다양한 종류의 이벤트를 확인합니다. 디렉터리 서비스 액세스 감사는 시스템 액세스 제어 목록이 지정되어 있는 액티브 디렉터리 객체에 접근하는 사용자에 대한 감사 로그입니다. 정책 변경 감사는 사용자 권한 할당 정책, 감사 정책 또는 신뢰 정책의 변경과 관련된 사항을 로깅합니다. 프로세스 추적 감사는 사용자 또는 응용프로그램이 프로세스를 시작하거나 중지할 때, 해당 이벤트가 발생합니다. 시스템 이벤트는 시스템의 시동과 종료, 보안 로그 삭제 등 시스템의 주요한 사항에 대한 이벤트 로깅합니다.
이번에는 윈도우의 이벤트 뷰어에 대해서 자세히 알아보도록 할까요? 제어판-관리도구- 이벤트 뷰어 항목에서 수집된 로그의 목록을 확인 할 수 있습니다. 그리고 각 로그에 대한 세부 항목 또한 확인 할 수 있습니다.
이벤트 뷰어에는 종류, 날짜 및 시간, 원본 및 범주, 이벤트, 사용자, 컴퓨터 등의 내용을 표시합니다. 먼저 종류는 성공 감사와 실패 감사를 말하고, 날짜, 시간은 로그를 날짜와 시간을 나타냅니다. 원본, 범주는 로그와 관계 있는 영역, 이벤트는 윈도우에서 각 로그 별로 고유한 번호를 부여, 로그를 분석할 때 이 번호를 알고 있는 경우 빠른 분석이 가능합니다. 사용자는 관련 로그를 발생시킨 사용자를 말하고, 컴퓨터는 관련 로그를 발생시킨 컴퓨터를 말합니다.
유닉스 로그는 윈도우와 달리 일반적으로 중앙 집중화 되어 관리되고 있지 않습니다. 유닉스 시스템에 따라 로그가 저장되는 장소는 다르며, 일반적인 로그 생성 위치는 다음과 같습니다.
유닉스의 로그 종류에는 UTMP, WTMP, secure, history, syslog가 있습니다.
UTMP는 유닉스 시스템의 가장 기본적인 로그 정보입니다. 로그인 계정, 환경, 디바이스, 쉘 프로세스 ID, 형식, 로프오프 여부와 시간 등을 로깅하고 있습니다, UTMP는 텍스트가 아닌 바이너리 형태로 저장됩니다. w,who, whodo, finger 등의 명령을 사용하여 로그의 정보를 확인할 수 있습니다.
wtmp는 utmp 데몬과 유사한 로그 관리 데몬입니다. 사용자의 로그인, 로그아웃, 시스탬의 재부팅에 대한 정보를 기록하고 있습니다. last 명령어를 이용하여 내용을 확인할 수 있습니다.
secure는 페도라, CentOS, 레드햇 등의 리눅스에서 원격지 접속 로그와 su 및 사용자 생성 등 보안과 직접적으로 연관된 정보를 로깅하고 있습니다. 일반 유닉스에서는 su 로그는 /var/adm/sulog 파일에 텍스트 형식으로 로깅하고 있습니다.
history는 명령 창에서 실행 했던 명령을 기록하고 있습니다. history 명령어를 통해 확인 가능합니다.
syslog는 시스템의 운영과 관련한 전반적인 로그를 기록하고 있습니다. /var/log/messages 파일에 저장되며, 하드웨어의 구동, 서비스의 동작과 에러 등을 로깅합니다.
2. 데이터베이스의 로그 관리
데이터베이스의 로그 관리는 서비스 특성상 많은 데이터 요청이 빈번하게 발생합니다. 일반적으로 로그인 정보 이외에 데이터베이스 접근 및 데이터 처리 로그를 기록하고 있지 않습니다. 데이터에 대한 접근 및 데이터 처리 로그는 데이터 유출과 직접적인 관련이 있기 때문에 시스템 성능과 관련하여 수용할 수 있는 범위 내에서 적절하게 로깅 정책을 적용시켜야 합니다.
MS-SQL은 SQL server management studio에서 서버를 선택하여 특정 데이터 베이스 서버에 대한 로깅을 설정할 수 있습니다. 속성팝업 창의 [보안] 메뉴에서 ‘로그인 감사’와 CS 감사 추적’을 통해 설정이 가능합니다. MS-SQL은 기본적으로 실패한 로그인에 한정되어 로그를 수집합니다. C2 감사 추적은 데이터 베이스가 생성, 삭제, 변경되는지에 대한 자세한 정보를 로깅하고 있습니다.
빈번한 접속이 있는 데이터 베이스의 경우 대량의 로그가 생성되므로 주의해야 합니다.
오라클의 감사로그를 활성화 시키기 위해서는 오라클 파라미터 파일의 audit_trail 값을 DB 또는 true 값으로 설정해야 합니다. AUDIT_TRAIL 값과 내용은 살펴보면 NONE 또는 FALSE은 데이터베이스 감사 비활성, DB 또는 TRUE는 데이터베이스 감사 활성, OS는 감사 로그를 OS상의 파일로 저장하며 경로명은 audit_file_dest에 의해 지정합니다.
오라클은 문장 감사와 권한 감사로 구분됩니다. 문자 감사는 지정된 문장을 실행시켰을 경우에 로그를 기록하며, 권한 감사는 특정한 권한을 사용 했을 때 로그를 기록하게 됩니다.
3. 응용프로그램의 로그 관리
응용프로그램의 로그 관리는 응용프로그램 중 보안과 관련되어 중요도가 가장 높은 서비스로 웹 서버와 FTP 서버가 있습니다. 이 두 서버는 내부 네트워크 침입을 위한 경로로 활용되거나, 웹 서버에 저장된 개인정보가 유출될 수 있기 때문에 보안에 더욱 신경을 써야 합니다. IIS 웹 서버를 운영하고 있는 경우 [제어판]-[관리 도구]-[IIS(인터넷 정보 서비스)]-[IIS]에서 로그를 확인할 수
있습니다. 아파치 웹 서버는 access_log에 로그가 저장됩니다.
4. 네트워크 장비의 로그 관리
네트워크의 경우 대량의 트래픽이 생성되지만, 대부분의 트래픽이 일시적으로 존재합니다.
로그를 수집/관리할 수 있는 시스템으로는 네트워크 보안 시스템, 네트워크 관리 시스템, 네트워크 장비 인증 시스템이 있습니다.
먼저 네트워크 보안 시스템은 침입 차단 시스템, 침입 탐지 시스템, 침입 방지 시스템 등 다양한 보안 시스템을 통해 로그를 기록할 수 있습니다. 이러한 보안 시스템의 로그는 통합로그 관리 시스템을 활용하여 수집/관리가 가능합니다. 네트워크 관리 시스템은 네트워크 트래픽 모니터링 시스템과 네트워크 관리 시스템의 로그입니다. 네트워크 장비 인증 시스템은 대규모 네트워크를 운영하는 경우
라우터나 스위치의 인증을 일원화 하기 위해 인증 서버로 TACACS+(Terminal Access controller Access-Control System Plus)를 활용하며, 인증 서버를 통해 네트워크 장비에 대한 인증 시도 및 로그인 정보를 확인합니다.
취약점 관리
1. 취약점 관리 방법
취약점 관리
이번에는 취약점 관리 방법에 대해 알아볼까요? 패치 관리는 시스템에 존재하는 여러 가지 오류 및 취약점을 해결하기 위한 방법입니다. 보안 설정을 잘 해 놓아도 시스템 자체에 존재하는 취약점으로 인해 웜이나 바이러스에 시스템이 노출될 수 있습니다.
화면과 같이 운영 체제나 데이터베이스 등은 시스템에 취약점 및 오류를 해결하기 위해 정기적으로 패치가 수행되고 있습니다. 자동 업데이트를 통해 패치 또는 서비스 팩을 최신 상태로 유지하는 것이 좋습니다.
2. 응용 프로그램 취약점 관리
응용프로그램은 특정 기능을 수행할 때 운영체제의 권한을 사용하고 있습니다. 응용프로그램에 존재하는 취약점을 악용하여 공격자가 운영체제의 중요 권한을 획득할 수 있기 때문에 프로그램의 용도에 따라서 프로세스 실행 권한을 제한하는 것이 좋습니다.
특히 웹 서비스의 경우 외부에 노출되어 있기 때문에 웹 서버 보안에 더욱 신중해야 합니다. 그래서 윈도우 IIS에서 그 실행 프로세스 권한을 별도로 만들어 사용하고, 유닉스 nobody와 같이 제한된 계정 권한을 사용합니다. 응용프로그램을 통한 운영체제의 접근 제한으로는 일부 응용프로그램 중 운영체제의 파일이나 명령의 실행이 가능합니다. 그리고 응용프로그램의 동작과 관련하여
운영체제에 접근할 수 있는 함수나 기능이 있으면 그 적절성을 검토해야 합니다.
3. 정보 수집 제한
정보 수집 제한이란 응용프로그램을 통해 운영체제의 직접적인 영향을 미치지 않는 경우에도 특정 기능을 통해 운영체제의 정보가 노출될 수 있는 것을 말합니다. 예를 들어 유닉스에서 이메일을 보낼 때 수신자가 있는 시스템의 sendmail 데몬에 해당 계정이 존재하는지 확인하기 위한 과정으로 일반 계정은 vrfy(verify) 명령을, 그룹은 expn(expansion) 명령을 내부적으로 수행합니다. 그리고
일반 사용자가 Telnet을 이용해 시스템에 존재하는 계정의 목록을 파악 가능합니다. 이러한 정보들은 시스템의 취약점을 찾기 위한 기초 정보로 활용될 수 있기 때문에 적절한 수집 제한이 필요합니다.
4. 불필요한 서비스 및 악성 프로그램의 확인과 제거
시스템의 취약점을 해결하기 위해 불필요한 서비스와 프로그램을 확인하고 제거하는 방법이 있습니다.
응용프로그램을 통한 운영체제의 정보 수집 제한은 시스템에서 실행 중인 서비스의 목록을 확인하고 사용하지 않는 서비스는 제거하는 것이 바람직합니다.
현재 동작 중인 프로세스를 확인하기 방법으로는 윈도우에서는 windows 작업관리자, 유닉스에는 ps –ef 명령을 통해 확인 할 수 있습니다.
현재 열려 있는 포트를 확인하기 위해서는 netstat –an 명령을 통해 확인할 수 있습니다. 시스템에 열려 있는 포트를 확인하고 사용하지 않는 포트는 닫아 시스템의 보안을 향상 시킬 수 있습니다.
5. 악성 프로그램 탐지 툴 이용
잘 알려진 악성 프로그램은 대부분의 백신 툴을 이용하여 탐지와 제거가 가능합니다. 주기적인 악성 프로그램 탐지를 통해 시스템의 안정성을 향상시킬 수 있습니다. 리눅스나 유닉스는 백신 툴이 많이 부족하기 때문에 정기적으로 수동 점검을 수행해야 합니다.
6. 무결성 검사
무결성 검사는 시스템에 어떤 변화가 일어나는지 테스트하는 것으로 MD5 해시 기법을 많이 사용합니다. MD5 해시 기법이란 관리자는 주요 파일의 MD5 값을 주기적 수집, 검사하여 변경되는 파일의 내역을 확인하는 것, 변경하지 않거나 시스템 운영상 변할 일이 없는 파일이 변경되는 것을 발견하여 이에 대한 조치 수행하는 것을 말합니다.
'정보 보호' 카테고리의 다른 글
07 서비스 거부 공격 (1) | 2016.01.26 |
---|---|
06 윈도우 보안 (0) | 2016.01.26 |
04 접근 제어와 권한 관리 (1) | 2016.01.26 |
03 계정과 패스워드, 세션 관리 (0) | 2016.01.26 |
02 물리적 보안 (5) | 2016.01.26 |