본문 바로가기

OS & network/solaris

[김석의 보안특강③] 솔라리스 시스템 보안...'로그 관리'

요즘 데일리시큐에 연재는 솔라리스 보안글중 세번째 글입니다.

뭐, 일반적인 내용을 정리한 수준이라...관리 업무 하시는 분들이 한번 쭉~ 보시면 되겠네요.



http://www.dailysecu.com/news_view.php?article_id=6492


“로그 관리야 말로 침해사고 대응 업무에서 가장 기본적 업무”
모든 시스템이 그러하듯이 시스템에는 다양한 보안 문제가 발생할 수 있다. 보안 위협으로부터의 선제적 대응이 가장 우선시 되어야 하겠지만, 일단 사고가 발생하고 나면 무엇보다 증거로써의 로그 채증이 가장 우선시 되어야 한다.
 
시스템 포렌식 기술이 매우 중요하지만 손쉽게 증거를 수집할 수 있는 로그의 수집이야 말로 침해사고 대응 업무에서 가장 기본적인 업무라 할 수 있다.
 
일반적으로 시스템에는 크게 두 가지 형태의 로그가 존재한다.
 
1. 설치 로그
2. 운영 로그
 
1. 설치로그는 소프트웨어의 설치 및 패치와 같은 업무로 발생되는 로그이며 , 통상 보안과는 무관하게 여겨지기 쉽다.
그러나 해커는 허가 되지 않은 소프트웨어(이를 테면 백도어나 루트킷 등의 악성코드)를 시스템에 설치할 수 있고, 설치에 따른 로그가 시스템에 고스란히 남아 있을 수 있기 때문에 역시 눈여겨봐야 하는 로그다.
 
2. 운영로그는 일반적으로 시스템의 운영시에 발생하는 로그들로 시스템의 다양한 변경 사항을 기록한다. 보안 로그를 일반적으로 별도로 빼어 구분하고 있지만, 사실상 보안 로그 역시 운영로그의 일부로 볼 수 있다.
 
로그는 타입에 따라 아스키 텍스트 형태의 로그와 바이너리 타입의 로그로 나뉘어 있기 때문에 분석할 때에는 타입에 따라 분석을 진행해야 한다.
아스키 텍스트 로그는 사용자가 단순히 유틸리티 뷰어를 이용해 분석이 가능하고 편리하지만, 공격자 역시 해당 로그를 인지하고 있는 경우에는 위·변조가 되기 쉽다.
 
바이너리 로그의 경우는 상대적으로 아스키 텍스트 로그에 비해 접근이 제한되기 때문에 아스키 텍스트에 비해 위·변조가 어렵지만 불가능하진 않다.
 
솔라리스와 같은 유닉스 시스템은 로그가 한곳에 집중적으로 관리되기 보다는 각 어플리케이션의 위치에 따라 각 어플리케이션 로그가 생성되므로 특정 어플리케이션의 로그는 각각의 어플리케이션의 설정에서 확인해 보아야 한다.
 
일반적인 시스템 관련 로그는 아래 디렉토리에서 확인 할 수 있다.
 
-/var/sadm
-/var/adm
-/var/run (솔라리스 11에서는 /system/volatile 로 링크 )
-/var/log
 
1) /var/sadm
/var/sadm은 설치로그가 쌓이는 디렉토리로 각종 패키지 설치 정보와 시스템 설치 정보가 기록되는 디렉토리다.
초기에 시스템에 설치되면서 쌓이는 로그들과 패키지가 설치되면서 쌓이는 로그들이 주로 위치한다. 가장 대표적으로는 /var/sadm/install/contents 같은 설치 로그 파일이 있다.
 
2)/var/adm
일부 유닉스에서는 /usr/adm이나 /var/log에 주로 기록하지만 솔라리스 시스템에서는 /var/adm에 운영로그를 남긴다.
/var/adm의 가장 대표적인 로그 몇 가지만 살펴보면 아래와 같다.
 
①/var/adm/utmpx
솔라리스 시스템 설치시에 기본적으로 존재한다. 이 파일은 바이너리 파일로 직접 파일을 읽을 수 없다. 이 파일을 읽기 위해서는 who , w와 같은 명령어를 이용해야 한다.
일반적으로 사용자이름이나 터미널종류, 로그인 시간, 사용한 명령어와 같은 기본정보를 출력한다.
솔라리스 11에서는 해당 파일은 /system/volatile/utmpx로 링크 걸려 있다.
따라서 /var/run/utmpx 역시 같은 파일이다.
다음은 w 명령어 결과의 일부 화면이다.

 
②/var/adm/wtmpx
솔라리스 시스템 설치시 기본으로 존재한다. 사용자들의 로그인, 로그아웃과 같은 정보를 가지고 있으며, 시스템의 종료와 부팅 등에 대한 정보를 담고 있다.
이 파일 역시 바이너리 파일로 직접 파일을 읽을 수 없기 때문에 last 같은 명령어를 이용해야 한다.
일반적으로 사용자이름, 터미널종류, 원격 시스템의 IP 주소, 로그인시간, 로그아웃시간, 시스템 사용시간 등의 정보를 출력해 준다.
다음은 last 명령어 결과의 일부 화면 이다.

 
 
③/var/adm/loginlog
솔라리스 설치시부터 존재하는 다른 로그 들과 달리 기본적으로 존재 하지 않는다.
system V 계열 유닉스에서 반복적인 로그인 실패시 로그를 기록하는 파일이다.
솔라리스 시스템에서는 touch 명령어로 생성하면 된다. 해당 파일은 로그인 시도 5회 실패시에 로그를 기록한다. 통상적으로는 아래와 같은 절차로 해당 파일을 활성화 한다.
 
#touch /var/adm/loginlog
#chown root:sys /var/adm/loginlog
#chmod 600 /var/adm/loginlog
 
이와 관련한 설정은 /etc/default/login 파일에서 할 수 있다.
 
④/var/adm/sulog
솔라리스 설치시에 기본적으로 존재한다. 해당 파일은 su 명령을 수행했을 때의 성공, 실패에 때한 기록을 로그로 기록한다.
su를 이용하여 로그인한 사용자 정보는 /var/adm/utmpx와 /var/adm/wtmpx 등에는 기록되지 않으므로 반드시 수집해야 하는 중요 로그 정보 이다.
 
다음은 su 로그 파일 결과의 일부 화면 이다.
이 파일에서는 명령 실행시간, 성공과 실패 여부( +기호는 성공, -기호는 실패), 사용자 전환을 출력한다.

 
 
이와 관련한 설정은 /etc/default/su 파일에서 확인 할 수 있다.
 
⑤/var/adm/messages
솔라리스 설치 시에 기본적으로 존재한다. 해당 파일은 시스템 운영 전반적인 로그를 기록하는 파일로 장치나 파일시스템 문제와 같은 하드웨어 에러는 물론, 시스템 오류 및 커널 메시지 등을 기록한다.
가장 방대한 로그 파일로 주기적으로 순환되어 messages.0, messages.1 등이 생성된다.
해당 파일은 로그 메시지의 생성 시간, 시스템 이름, 메시지 생성 주체, ID 넘버, 종류와 메시지 같은 상세한 정보를 출력한다.
해당 파일은 인증에 관련한 내용도 함께 기록하는 파일로 눈여겨 봐야할 로그 파일 중 하나다. 아래는 해당 로그 파일의 내용 중 일부 이다.

 
 
3)/var/run (/system/volatile)
여기는 솔라리스에서 사용되는 SMF (Service Management Facility) 기반의 로그가 쌓인다.
svcs –xv 명령을 통해 SMF 부팅 과정상에서 생긴 문제에 대한 디버깅을 수행할 수 있으며, 시스템 SMF 서비스와 관련 있는 로그 파일들이 위치한다. 시스템 부팅 및 운영에 관련한 로그들이 기록된다.


 
4)/var/log
이 디렉토리에는 메일서비스, 가상화서비스(ZONE), 패키지 저장소 서비스(IPS) 등의 각종 로그가 쌓이는 디렉토리다.

 
 
/var/log의 가장 대표적인 로그 몇 가지만 살펴보면 아래와 같다.
 
①/var/log/syslog
해당 로그 파일은 메일 서비스에 관련한 로그 파일로 메일 서비스 관련한 전반적인 메시지를 저장한다.


 
형식은 /var/adm/messages와 동일하게 작성된다. /etc/syslog.conf에서 해당 로그 파일을 정의할 수 있다.
해당 파일은 logadm에 의해 순환되면 syslog.1 , syslog2 등으로 나뉘어서 순환된다.
 
② /var/log/zones
해당 파일은 디렉토리이며 솔라리스의 가상화 서비스인 ZONE에 관련한 서비스 메시지 로그 파일이 저장된다.
 
③/var/log/authlog
해당 파일은 syslog 데몬의 인증 관련 메시지를 기록한다.
해당 파일 역시 /etc/syslog.conf에서 정의하고 있다. 기본적으로는 해당 설정이 주석처리 되어 있어 활성화 되어 있지 않다. 아래는 /etc/syslog.conf 파일의 내용중 일부 이다.

 
 
해당 주석을 제거하고 아래와 같이 syslog 서비스를 재시작하면 로그를 생성한다.
 
#svcadm restart system-log
 
이 후 인증 관련한 이벤트가 발생하면 아래와 같이 로그를 기록한다.
아래는 /var/log/authlog 의 일부이다.

 
 
이외에도 시스템에는 다양한 형태의 로그가 서비스 마다 프로그램 마다 생성된다. 따라서 시스템 관리자나 보안 관리자는 설치된 프로그램을 파악하고 개별 로그 파일의 위치와 내용을 파악하여 주기적으로 해당 로그 파일을 분석할 필요가 있다.
 
일부 다루지 못한 로그 파일이 일부 있으나, 통상적으로 시스템에서 사용되는 전반적인 로그 파일은 대부분 언급한 파일이므로 해당 로그 파일을 면밀하게 분석한다면 보안 업무에 도움이 될 것이라고 생각한다.
 
[필자 소개]
김 석. 現 노브레이크 수석컨설턴트, 안산대학교 IT 응용보안과 겸임교수, 오라클 ACE Director(솔라리스). 이외 활동으로 김재벌의 IT이야기 블로그(blog.solaris.co.kr) 운영, 솔라리스 테크넷, 솔라리스 스쿨 운영자로 활동중. <이메일: ostoneo@nobreak.co.kr>
 
(※바쁘신 가운데 유용한 글 작성해 주신 김석님께 깊이 감사드립니다.)

[저작권자 ⓒ데일리시큐 무단 전재-재배포 금지]