솔라리스 OS 로그 분석

8
REPORT (솔라리스10 로그 분석과 설정) 과제점수 : (기한내 제출 : / 내용충실도 : / 내용 논술력 : ) 과 : 컴보2A 번 : 2013011073 과목명 : 운영체제보안 담당교수 : 박경수교수님 제출자 : 박동진 제출일자 : 2014/05/14

Transcript of 솔라리스 OS 로그 분석

Page 1: 솔라리스 OS 로그 분석

REPORT

(솔라리스10 로그 분석과 설정)

과제점수 : (기한내 제출 : / 내용충실도 : / 내용 논술력 : )

학 과 : 컴보2A 학 번 : 2013011073 과목명 : 운영체제보안 담당교수 : 박경수교수님 제출자 : 박동진 제출일자 : 2014/05/14

Page 2: 솔라리스 OS 로그 분석

- 2 -

<제목 차례>

1. 개요

2. 로그 종류 분석가. utmp

나. wtmp

다. su

라. pacct

마. 쉘종류별 명령어 기록

바. syslog

사. loginlog

아. Xferlog

3. 로그관리하기가. 시스템시간 설정과 로그 백업

나. BSM을 통한 로깅

4. 결론

Page 3: 솔라리스 OS 로그 분석

(그림 2-가) utmp 데몬확인과 위치

1. 개요보안에서의 로그는 필수적인 요소이다 어떤 이벤트가 어디서 발생했는지 몇시에 어떤 작업이 실시되었는지 등등 이러한 것들을 기록하고 분석하여 보안에 활용하면 회사의 자료 보안유지에 유용하다 이에 따라 오라클에서 만든 유닉스, 솔라리스 10을 이용하여 유닉스 로그 종류와 설정 방법을 알아볼 것이다 환경은 기존쉘에서 bash쉘로 변경했으며 root로 putty접속을위해 따로 root로 접속가능하도록 설정해두었다 또한 Locale도 ko에서 ko.UTF-8 로변경하였다

2. 로그 종류 분석기본적으로 솔라리스는 각종 로그가 저장되는 디렉토리들이 있다 /var/adm 과 /var/log 이다. 데몬이나 백그라운드 서비스마다 따로 로그들을 생성 하는것도 많은 만큼 각종 로그를 생성시키는 데몬들과 그역할들을 알아보자

가. utmp

utmp데몬은 유닉스의 가장기본적인 로그를 제공하는 데몬으로 /usr/include/utmp.h 의 서술되어있는 형식으로 텍스트가아닌 이진파일로 로그가 기록된다 그렇기 때문에 vi나 cat으로 로그를 확인하는게 아니라 특정명령어를 사용해 로그를 볼 수 있다

w, who등을 통해 현제 시스템에 로그인된 사용자계정, 쉘, IP정보를 알 수 있고 whodo명령어를 통해 각 접속된 계정별로 수행되고있는 작업을 볼 수 있다 finger 명령어는 접속시간을 볼수있으며 users같은 경우는 필자의 솔라리스10에 는 없다

나. wtmp

wtmp 는 utmp 의 서식지정파일인 utmp.h를 그대로 사용하며 바이너리파일로 데이터를 저장한다 ps –e |grep wtmp 를해본결과 데몬은 잡히지않았고 find / -name wtmp를 이용해 실행파일을 찾는것도 실패했다 이를보아 utmp를 그냥 분리시켜 논 것에 불과한거같다 wtmp는 last [키워드] 명령어를 시스템이 재부팅된 시간 콘솔을 이용한 시간, ssh를 이용한 시간등을 알 수 있다 아래의 그림은 last reboot 명령어를 실행한 결과이다

Page 4: 솔라리스 OS 로그 분석

- 2 -

(그림 2-나) last reboot 실행 결과

다. su

su는 switch user의 약자로 권한 변경에 대한 로그이다 /var/adm/sulog에 기록되며 su 명령어에 대한 로그가 저장되어있다 +는 성공이고 –는 실패이며 /etc/default/su 를통해 sulog가 저장되는 경로를 다른곳으로 변결할 수 있다 아래의 그림은 roo에서 test계정으로 su한 기록과 일부러 su root 후에 비밀번호 입력을 틀리게 입력하고 sulog를 살핀것이다

(그림 2-다) sulog

라. pacct

pacct 로그는 기본으로 동작하지 않으며 사용자가 로그인한순간부터 로그아웃까지 입력한 명령어들과 사용한 터미널종류, 시간등을 저장한다 그렇기 때문에 자원을 많이 소모하고 주로 대형시스템에서 사용자별 요금을 부과할 때에 사용된다 바이너리형태로 저장되기 때문에 데몬을 실행하고 acctcom명령어로 출력해보면 cpu점유율, 명령어 실행시작 시간등 상세한 정보들이 나온다 실습은 하려했으나 책에 명령어는 실행되지않는다 인터넷에 검색해보니etc/init.d/acctadm start 인거같은데 프로세스도 안잡히고 로그위치도 알수가없다

Page 5: 솔라리스 OS 로그 분석

- 3 -

(그림 2-마) bash쉘에서 history

마. 쉘종류별 명령어 기록

csh쉘, bash쉘, sh쉘(솔라리스기본) 들에서 실행한 멸령어는 각 계정의 홈디렉토리에 쉘이름_history 파일로 저장이된다, 텍스트파일형태로 저장이되며 600권한이기 때문에 파일소유자만 볼수있지만 공격자에게 정보를 줄 가능성도있다

옆의 그림은 bash 쉘상태에서 history 명령어를 친결과이다 보다시피 순번대로 이전에 친 명령어들이 나열되어 나오기 때문에 만약 공격자가 history파일을 열어볼수있다면 크나큰 위협이 될 것이다

바. syslog

syslog 데몬은 시스템의 로그들을 수집하여 로깅한다 수집하는 로그와 수준은 /etc/syslog.conf 파일에 설정되어 있으며 vi에디터로 수정가능하다 열어보면 왼쪽의 문자열과 오른쪽의경로로 나눌수있겠는데 왼쪽이 일종의 로깅 조건이고 오른쪽은 로깅할 경로이다 기본적으로 /dev/sysmsg, /var/adm/messages가 설정되어있다 cat이나 more 그리고 grep으로 error, bad, wrong 등의 키워드로 분석하여 시스템을 튜닝한다 열어보면 커널관련 부분만 나와있어 그림은 생략하였다

사. loginlog

이로그는 로그인 시도에 대한 로깅을 수행하는 것으로 기본적으로 실행은 되지않는다 /etc/default/login 파일 loginlog관련 설정파일이며 기본적으로 로그파일은 /var/adm/loginlog 에 저장되는거 같다 RETRIES=5, SYSLOG_FAILED_LOGINS=5 앞의 주석을 제거고 뒤의 5를 1로 수정한다 이는 로그인시도 1번실패시 로그를 기록하고 5번실패시 세션을 완전히 끊어버리는 설정이다 w!를 통해 강제로 저장하고 재부팅후 잘못된로그인을 5번시도하면 아래처럼 세션을 다시시작해야한다

Page 6: 솔라리스 OS 로그 분석

- 4 -

(그림 2-사) 세션이 끊어진모습

아. Xferlog

이로그같은 경우에는 ftp를 위한 로그이다 wtmp, utmp 를통해 ftp 로그인을 로깅할수있지만 데이터전송 부분도 로깅이 가능하다 어떤파일을 전송했고, 복사했는지 등에 대해 로깅이 가능하며 FTP 서비스 데몬 동작시 에 –l 옵션을 부여하면된다 inetadm –l svc:/network/ftp:default 를통해 ftp 실행 파일을 알아보고 inetadm –M svc:/network/ftp:default exec="/usr/sbin/in.ftpd –a –l" 를입력한다 그리고 /etc/ftpd/ftpaccess 파일에 Xferlog 로깅 부분의 주석을제거한다 svcadm enable svc:/network/ftp:default 로 ftp서버를 가도시키고 svcs -a | grep ftp로 ftp서비스가 돌아가는지 확인한다 사진은 ftp 서버 가동확인했고 파일전송도 실제로 전송했는데 로그파일을 찾을수가없다 xferlog도 아니고 ftp*로도 최상위 디렉토리부터 찾아봤지만 보이지 않으니 넘어가겠다

3. 로그관리하기이제 시스템별로 로그종류를 알았으니 이를 관리하는 법을 알아볼 것이다. 로그를 남기는것도 중요하지만 이를 관리하는것도 중요하다.

가. 시스템시간 설정과 로그 백업

로그를 남길 때는 시스템 시간을 맞추는 것이 중요하다. 연계된 시스템이나 로그가 필요할 때 시간이 부정확하면 쓸모없는 로그가 되기 때문이다 그렇기에 유닉스는 NTP라는 시간

Page 7: 솔라리스 OS 로그 분석

- 5 -

을 맞추는 프로토콜이 존재하는데 이를 통해 시스템간 시간을 정확하게 동기화 시킬 수 있다 간단히 ntpdate와 time.bora.net같은 시간서버 주소를 입력하면 시스템시간이 해당 서버의 시간에 맞추어 진다. 이를 지속적으로 동기화 하려면 /etx/inet 에위치한 ntp.client파일은 ntp.conf파일로 고치고 안에 서버목록을 time.bora.net 과 time.nist.org 같이 타임서버들을 추가해준다 그리고 svcadm 명령어를 이용해 ntp서비스를 동작시킨다

(그림 3-가) NTP 서비스 가동모습

로그파일 백업은 불필요한 로그파일 관리와 공격자가 로그를 삭제해도 해당로그를 보존하는데에 유용하다 이는 logadm을 이용해 가능한데 logadm은 파일 크기나 양을 기준으로 해당 로그를 삭제하거나 분리, 이동 시킬 수 있다. logadm 설정파일은 /etc/logadm.conf으로 설정한다 설정방법은 관련자료들을 참조하도록하고 /usr/sbin/logadm을 crontab 에 추가하면 된다

나. BSM을 통한 로깅

BSM은 솔라리스용 커널 기반 로깅 모듈이다. 시스템 자원을 많이 소모하기 때문에 기본적으로 동작하지않으며 특정 계정이나 시스템동작에 집중적인 로그가 필요할떄에 사용한다 설치법은 커널에 대해 수정이 필요하므로 싱글모드로 실행후 /etc/security/bsmconv명령을 실행하면 된다. BSM에 대한 각종설정은 /etc/security 디렉토리에서 할수있으며audit_startup 같은경우는 BSM이 시작할때의 설정이며 audit_control 같은 경우 log를 저장할 위치와 로깅할 이벤트(동작)을 지정할 수 있다 이벤트는 로그인, 파일 쓰기, IPC, 파일실행등 매우 광범위하게 설정할 수 있다.

(그림 3-나) aidut_contorl

위의그림은 로그파일을 저장할 위치를 설정하고 flags항목에는 파일을 만들고, 삭제할 때

Page 8: 솔라리스 OS 로그 분석

- 6 -

로깅을 한다는뜻이며 minfree는 로그파일을 저장하는 파티션에 사용용량이 80%이상이면 관리자에게 알려준다는뜻이다 그밑의 naflags는 lo 이있는데 이는 모든사용자계정의 로그인 로그아웃에대해 로그를 남기겠단 뜻이다 이렇듯 직접적인 로깅설정을 할 수 있고 audit_user 파일은 계정별로 로그를 지정할 수 있다. audit_event파일은 fs,fd같은 flags 항목에 쓰이는 이벤트목록을 상세히 볼 수 있고 또 이벤트관리가도 새로 추가할 수 있다

이렇게 생성한 로그정책과 설정을 적용한 로그를 보는 방법은 praudit이다

(그림 3-나-2) 로그출력하기

위의 그림 은 로컬에서 root로 로그인 성공한부분과 ssh로 로그인이 성공한 부분이다 이렇게 BSM은 광범위하고 상세하기 로깅을 할 수 있다

4. 결론로그는 분명 보안과 성능 튜닝에있어 필수적인 요소지만 그렇다고 너무 세세하고 불필요한 로그도 생성하면 시스템 성능 저하가 생길 우려가 있으므로 syslog, xferlog, sulog 같은 개별적 로깅 모듈을 없애고 BSM처럼 하나로 통합하고 설정을 세세하게 설정이 가능케 하면 성능최적화와 동시에 정확하고 필요한 로깅을 할수있을꺼같다, 또한 텍스트로 출력하는게아닌 차트나 그래픽으로 표현가능한 툴도 개발된다면 강력한 보안도구가 될꺼같다