본문 바로가기

보안

보안기사 - UNIX/Linux 로그

* 참고
일반적으로 UNIX는 /var/adm 디렉토리, Linux는 /var/log 디렉토리에 저장
리눅스는 /etc/syslog.conf 파일에서 시스템 로그 파일들의 위치를 지정
서버에는 여러 개의 로그 파일이 있으며 이들 로그를 남기든 데몬들 또한 다양(syslogd, sendmail, httpd, named, xinetd 등)

주요 로그 파일


utmp(x)

현재 로그인한 사용자의 상태정보를 담고 있는 로그 파일
binary 파일이므로 'w', 'who', 'finger' 등의 명령어 이용
Linux :  /var/run/utmp,     Unix(SunOS) :   /var/adm/utmpx

wtmp(x)

성공한 로그인/로그아웃 정보, 시스템의 boot/shutdown 정보(reboot 사용자)에 대한 히스토리 담고 있는 로그파일
binary 파일이므로 'last' 명령 사용
Linux :  /var/log/wtmp,     Unix(SunOS) :   /var/adm/wtmpx

lastlog

가장 최근(마지막으로) 성공한 로그인 기록 담고 있는 로그 파일
binary 파일이므로 'lastlog'(linux), 'finger'(linux, unix) 명령 사용
Linux :  /var/log/lastlog,      Unix(SunOS) :   /var/adm/lastlog

* lastlog -u 계정명, lastlog -t 일수
* finger 계정명

btmp(Linux), loginlog(Unix)

실패한 로그인 시도에 대한 기록 담고 있는 로그 파일
Linux :  /var/log/btmp,    binary 파일이므로 'lastb'명령 사용
Unix :  /var/adm/loginlog,    텍스트 파일

sulog(Unix)

su 명령 사용한 결과 저장한 파일
Unix :  /var/adm/sulog,    텍스트 파일
Linux :  /var/log/secure 파일에 su 명령 사용한 결과가 남는다
+는 su 명령 성공, -는 su 명령 실패 의미   ~ root 계정으로의 su 실패는 주의해서 봐야함

acct/pacct

로그인한 모든 사용자가 로그아웃할 때까지 입력한 명령어와 터미널 종류, 프로세스 시작 시간 등을 저장한 로그
binary 파일이므로 'lastcomm' 명령 사용
Linux :  /var/account/pacct,  기본 생성되는 로그파일 아니므로 'accton  /var/account/pacct' 명령 실행 필요
Unix :  /var/adm/pacct,   기본 생성되는 로그파일 아니므로 '/usr/lib/acct/accton  /var/adm/pacct' 명령 실행 필요

history

각 계정별로 실행한 명령어에 대한 기록 저장. 각 계정별 홈 디렉터리에 존재
'.쉘종류_history' 형식으로 생성
텍스트 파일,  'history' 명령 존재

secure(Linux)

사용자/그룹 생성/삭제, 로그인 등의 사용자 인증에 대한 정보 기록  ~  서버보안에 아주 민감하고 중요
Linux :  /var/log/secure

messages(Linux)

리눅스 시스템의 가장 기본적인 시스템 로그 파일로 시스템 운영에 대한 전반적인 메시지 저장
주로 시스템 데몬들의 실행상황과 내역, 사용자들의 접속정보, TCP Wrapper 접근 제어 정보 등을 저장

dmesg(Linux)

리눅스가 부팅될 때 출력되는 모든 메시지를 기록
부팅 시의 에러나 조치사항을 살펴볼 때 참조
텍스트 파일,  'dmesg' 명령
Linux :  /var/log/dmesg

boot.log(Linux)

리눅스가 부팅될 때 파일 시스템에 대한 체크, 서비스 데몬들의 실행 상태 등을 기록하고 있는 로그파일, 초기 기동되는 프로세스의 성공/실패 여부를 확인 가능

xferlog(Linux)

리눅스 시스템의 FTP 로그 파일
proftpd 또는 vsftpd 데몬들의 서비스 내역을 기록
FTP로 로그인하는 사용자에 대한 로그 기록, 어떤 파일 업로드/다운로드 하였는가에 대해 상세히 기록
Linux :  /var/log/xferlog
(p.94 참고)

cron

Linux :  /var/log/cron

maillog

Linux :  /var/log/maillog

mail

'메일 박스' 같은 거 (계정별로 존재)
Linux :  /var/spool/mail

syslog 설정 및 관리


개요

[syslogd 동작 방식]

유닉스 시스템은 syslog 표준 인터페이스(api)를 통해 커널 및 응용 프로그램에 의해 발생하는 로그를 체계적으로 생성, 관리

커널 및 응용 프로그램이 syslog API를 통해 로그를 생성하면 syslogd 데몬 프로세스가 syslog.conf 설정 파일을 참조하여 지정한 로그 파일, 콘솔, 외부 서버 등에 로그를 기록

syslog API 사용 구문 :  syslog(priority, "%s", "로그 문자열")

/etc/syslog.conf 파일은 시스템 로그 데몬(syslogd)이 실행될 때 참조되는 로그 설정 파일로, 어떤 로그 어디에 남길지 로그 저장 규칙이 정의되어 있다

    facility.priority; facility.priority;...    action(logfile-location)

리눅스는 기존 syslog를 개선한 rsyslog를 주로 사용

  • 취약점
    syslog는 기밀성, 무결성, 가용성 등 정보보호 특성 고려하지 않고 개발되었다
    ~ UDP(514포트)를 통해 로그 전송시 공격자가 syslog메시지를 모니터링하여 중요 정보 알아낼 수 있으므로 다음을 제공하도록 권고
    1. 로그 전송 신뢰성 보장 위해 TCP 이용
    2. 기밀성 보장 위해 payload를 보호할 수 있는 BEEP(the Blocks Extensible Exchange Protocol) 이용

facility : 로그 생성 서비스

facility 설명
* 모든 서비스
auth
authpriv
인증 및 보안 관련 메시지
cron cron 데몬과 atd 데몬에 의해 발생되는 메시지
daemon telnet, ftp 등과 같은 데몬에 의한 메시지
kern kernel에 의한 메시지, 커널 메시지
lpr 프린터 데몬(lpd)에 의해 발생되는 메시지
mail sendmail, pop, qmail 등의 메일 시스템에서 발생되는 메시지
news USENET 등과 같은 뉴스시스템에 의해 발생되는 메시지
uucp uucp에 의한 시스템 메시지
user 사용자에 의해 생성된 프로세스
syslog syslogd에 의해 발생되는 메시지
local0~local7 시스템 부팅 메시지 기록, 기타 여분 서비스(확장)에 사용하기 위함

priority : 로그 수준(level)

priority 설명
Emergency(emerg) 시스템이 전면 중단되는 패닉 상태, 전체 공지가 필요한 상황
alert 즉각적인 조치가 필요한 상황 (시스템 데이터베이스 오류 등)
critical(crit) 하드웨어 등의 심각한 오류가 발생한 상황
error(err) 일반적인 에러/오류가 발생한 상황
warning 경고 메시지
notice 에러/오류는 아니지만 관리자의 조치가 필요한 상황 (정상 상황이지만, 의미있어서 관리자 확인 필요)
information(info) 의미 있는 정보 관련 메시지
debug 디버깅용 메시지

facility에 로그 수준을 지정하게 되면 해당 수준 이상의 상황이 발생했을 때 로그가 남게 된다
'*'는 모든 로그 수준의 로그, 'none'은 로그를 남기지 않겠다는 의미

action

로그를 어디에 남길 것인지를 결정

로그 파일 :   파일명(경로) 지정
콘솔 :   /dev/console로 지정
원격로그서버 :   '@호스트 주소'를 통해 지정한 호스트로 로그 전송
user :   지정된 사용자의 스크린으로 메시지 전송
* :   현재 로그인되어 있는 모든 사용자의 스크린으로 메시지 전송

example

authpriv.*      /var/log/secure
      authpriv에 속하는 서비스의 모든 로그 수준의 로그를 /var/log/secure로그 파일에 기록

*.info;mail.none;authpriv.none;cron.none      /var/log/messages
      *.info는 모든 서비스에 대한 info 수준 이상의 로그를 /var/log/messages로 그 파일에 기록하되
      mail, authpriv, cron서비스에 대해서는 로그를 /var/log/messages 로그파일에 기록하지 말라

*.emerg      *
      모든 서비스의 emerg 수준 이상의 로그를 모든 사용자에게 보내라

리눅스 로그 관리


로그 모니터링

/var/log/secure와 같은 텍스트 형식의 로그를 실시간으로 계속 모니터링 하려면 tail -f /var/log/messages 명령을 이용

로그파일 순환(rotate) 관리

  • why?
    syslog나 데몬 프로세스가 출력하는 로그 파일을 그대로 방치하면
    사이즈가 커지면서 관리가 어려워지고, 디스크를 많이 차지하게되어 시스템 장애가 발생할 수 있다.
    너무 커서 열리지가 않는 등 제대로 읽기 어려움

  • logrotate
    시스템 로그파일을 관리하기 위한 도구로 로그파일 순환, 압축 등의 기능을 가지고 있다.

    구분 위치
    logrotate 데몬 /usr/sbin/logrotate
    logrotate 데몬 설정 파일 /etc/logrotate.conf
    logrotate 적용할 프로세스/데몬 설정파일 /etc/logrotate.d
    logrotate한 작업내역 보관할 파일 /var/lib/logrotate.status