UNIX/Redhat

리눅스 로그 파일 설명, syslog.conf

99iberty 2013. 7. 29. 10:22

 

http://blog.naver.com/PostView.nhn?blogId=piremi&logNo=140049755731&redirect=Dlog&widgetTypeCall=true

 

원본은 2008년 글입니다. (RHEL 5.xx)

 

 

1. 로그분석
로그분석은 시스템관리와 보안에 상당히 중요하다. 리눅스에서는 기본적으로 모든 행동이 기록이 되어
로그파일로 남는다.


2. 로그분석관련 파일
(1) /var/log 디렉토리 : 대부분의 로그관련 파일들이 위치하는 디렉토리이다.
(2) 주요파일
1) /var/log/messages
ㄱ. 설명: 시스템의 표준 에러관련 메시지가 기록되는 파일로 syslogd 라는 데몬에 의해 설정된
사항들이 기록된다. 기본적으로 루트권한자만이 읽고 쓸 수 있다.
ㄴ. 로그예
[root@www root]# cat /var/log/messages
-- 생략 --
Feb 1 19:50:55 www 2월 1 19:50:55 su(pam_unix)[32176]: session closed for user root
=> (설명) 시스템로그는 4개의 부분으로 구성되어 있다.
1. 날짜 및 시간
2. 메시시가 발생한 호스트네임
3. 메시지를 발생한 내부 시스템이나 응용프로그램의 이름
4. 자체적으로 발생한 메시지, 보통 콜론(:)으로 구분된다.
2) /var/log/dmesg : 시스템이 부팅할 때 출력되었던 메시지가 로그로 남겨진다. 보통 커널 부트
메시지 로그라고 한다.
3) /var/log/secure : 모든 접속과 관련하여 언제 어디서 어떤 서비스를 사용했는지 기록한다.
보통 login, tcp_wrappers, xinetd 관련 로그들이 남는다.
4) /var/log/xferlog : FTP 접속 관련작업을 기록한다. 보통 wu-ftpd에 의해 발생된 로그이다.
5) /var/log/cron : cron데몬이 실행했던 작업을 기록한다.
6) /var/log/maillog : sendmail의 메일관련 작업을 기록한다.
7) /var/log/lastlog : telnet을 이용한 접속을 기록한다. 바이너리파일로 lastlog라는 명령으로
확인한다.
8) /var/log/wtmp : 콘솔모드, telnet, ftp로 접속한 기록과 시스템을 재부팅한 기록, 접근지등을
기록한다. 역시 바이너리파일로 되어 있으며, last라는 명령으로 확인한다.
9) /var/log/boot.log: 부팅시에 출력되는 모든 메시지를 기록한다. 부팅시의 에러등을 확인할 수
있다.
10) /var/log/cron: 시스템의 정기적인 작업을 수행하는 cron관련 로그를 기록하는 파일이다.
11) /var/log/sa : sysstat라는 패키지에 의해 기록되는 로그파일들이 위치하는 디렉토리이다.
(참고1) 'w'이라는 현재 로그인한 사용자들의 작업을 보여주는 명령이 있는데 이 명령은 utmp라는
바이너리 파일의 기록을 보여준다. 이 파일의 위치는 /var/run/utmp이다.

3. 로그관련 데몬
(1) 로그데몬
1) 설명: 시스템과 관련된 대부분의 로그는 syslogd가 하고 추가로 klogd라는 데몬이 있다.
ㄱ. syslogd : 커널과 여러가지 시스템 프로그램들은 각종 에러와 경고 메시지, 기타 일반적인
메시지들을 출력한다. 이런 메시지들을 파일로 기록하는 데몬이다.
ㄴ. klogd : 부팅후에 부팅과 관련된 메시지를 보려면 dmesg라는 명령을 친다. 이 명령은 실제
/var/log/dmesg라는 파일의 정보를 가지고 오는 것이 아니라, 시스템에는 부팅과
관련된 메시지를 포함하여 커널관련 메시지를 담는 약 8196bytes의 버퍼크기를 갖고
메시지를 기록하는 데 이 메시지를 기록하는 데몬이 klogd이다.
(2) 관련파일
1) /etc/rc.d/init.d/syslog : 실행과 관련된 스크립트파일로 실질적인 실행파일이다. syslogd와
klogd 데몬을 모두 실행시켜 준다.
2) /etc/syslog.conf : syslog데몬의 환경설정파일이다.
3) /etc/sysconfig/syslog : syslogd 와 klogd의 시작과 관련된 스크립트의 환경파일이다.

4. /etc/syslog.conf 파일분석
(1) 기본 구성형식
facility.level action
(2) facility : 메시지를 발생시키는 프로그램의 유형을 나타낸다.
* facility의 종류
cron : cron, at과 같은 프로그램이 발생한 메시지
auth : login과 같이 인증프로그램 유형이 발생한 메시지
authprive : 개인 인증을 요하는 프로그램 유형이 발생한 메시지
daemon : telnetd,ftpd등과 같이 daemon이 발생한 메시지
kern : 커널이 발생한 메시지
lpr : 프린트 유형의 프로그램이 발생한 메시지
mail : mail 시스템이 발생한 메시지
mark : syslogd에 의해 만들어지는 날짜유형
news : 유즈넷 뉴스 프로그램 유형이 발생한 메시지
syslog : syslog 프로그램이 유형이 발생한 메시지
user : 사용자 프로세스
uucp : UUCP 시스템이 발생한 메시지
local0-local7 : 여분으로 남겨둔 유형
(참고2) facility 뒤에 .none을 붙이면 해당 facility를 제외하겠다는 의미이다. 예를 들어 mail.
none은 메일 관련 메시지를 제외한다는 뜻이다.
(3) level : 위험의 정도를 가리키며 설정된 위험의 정도보다 높아야 메시지를 내보낸다. 레벨 앞에
'='을 사용할 경우 해당 레벨의 위험도와 같은 경우를 의미한다.
* level의 종류 (위험 레벨이 낮은 것부터 높은 순서로 나열)
debug : 프로그램을 디버깅할 때 발생하는 메시지
info : 통계, 기본정보 메시지
notice : 특별한 주의를 요하나 에러는 아닌 메시지
warning : 주의를 요하는 경고 메시지
err : 에러가 발생하는 경우의 메시지
crit : 크게 급하지는 않지만 시스템에 문제가 생기는 단계의 메시지
alert! : 즉각적인 조정을 해야 하는 상황
emerg : 모든 사용자들에게 전달되어야 할 위험한 상황
(4) action : 메시지를 보낼 목적지나 행동 들에 관한 설정
* 종류
file : 해당 file에 내용을 추가
@host : 지정된 호스트로 메시지를 보냄
user : 지정된 사용자의 스크린으로 메시지를 보냄
* : 현재 로그인되어 있는 모든 사용자의 스크린으로 메시지를 보냄
(5) 사용예
1) *.=crit;kern.none /var/log/critical
=> 모든 facility가 발생하는 것중에서 crit레벨과 같은 수준의 메시지를 /var/log/critical이라
는 파일로 저장하는데 커널에서 발생하는 메시지는 제외한다.
2) *.emerg *
=> 모든 emerg이상의 에러가 발생하면 모든 사용자에게 알려준다.
(참고3) /etc/syslog.conf 파일예
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;news.none;authpriv.none;cron.none /var/log/messages
=> 모든 info메시지를 기록하되, mail,news,authpriv,cron은 제외
# The authpriv file has restricted access.
authpriv.* /var/log/secure
=> 개인인증관련은 /var/log/secure에 기록
# Log all the mail messages in one place.
mail.* /var/log/maillog
=> 모든 메일관련 메시지는 /var/log/maillog에 기록

# Log cron stuff
cron.* /var/log/cron
=> cron관련 메시지는 /var/log/cron에 기록
# Everybody gets emergency messages, plus log them on another
# machine.
*.emerg *
=> 모든 emerg이상의 에러가 발생하면 모든 사용자에게 알려줌
# Save mail and news errors of level err and higher in a
# special file.
uucp,news.crit /var/log/spooler
=> uucp, news의 crit정보기록은 /var/log/spooler에 기록
# Save boot messages also to boot.log
local7.* /var/log/boot.log
=> 부트 메시지는 /var/log/boot.log에 기록
#
# INN
#
news.=crit /var/log/news/news.crit
news.=err /var/log/news/news.err
news.notice /var/log/news/news.notice

5. 로그파일관리
(1) logrotate : /var/log 디렉토리안에 있는 많은 로그파일은 기존의 파일에 덧붙여지게 되므로
크기는 계속 커지게 된다. 이를 방지하기 위해서 로그 파일을 조각으로 나눌 수
있는데, 이런 작업을 하는 프로그램이 logrotate이다.
(2) /etc/logrotate.conf : logrotate의 설정 파일로 로그 파일을 조각으로 나눌 수 있다.
* 기본 설정
# see "man logrotate" for details
# rotate log files weekly
weekly // 아래에 특별히 명시하지 않은 로그파일에 대해서는 일주일(weekly) 마다
//rotate한다.
# keep 4 weeks worth of backlogs
rotate 4 // 최대 4번까지 rotate를 허용한다. (logfile, logfile.1 ~ logfile.4까지의 로그
//파일이 생성된다.

# send errors to root
errors root // 에러가 발생하면 root 사용자로 메일을 보낸다.

# create new (empty) log files after rotating old ones
create // rotata한 후에 비어있는 로그파일을 생성한다.

# uncomment this if you want your log files compressed
#compress // 로그파일을 압축하는 옵션이다. 기본값은 활성화되어 있지 않다. 용량문제가
//크게 되지 않는다면 압축을 하지 않는 것이 좋다.

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d // 대부분 RPM패키지로 설치되는 데몬들은 이 디렉토리에 로그
//파일이 생성된다. 이 로그파일을 rotate시킬 수 있도록 하는
//설정이다.
# no packages own lastlog or wtmp -- we'll rotate them here
// 아래에 있는 로그파일(wtmp, lastlog)은 어떤 패키지에 의해서도 설정되지 않기 때문에 아래
//에서 따로 설정한다. 다른 로그파일들은 /etc/logrotate.d내의 파일들에서 모두 설정하고 있
//다.

/var/log/wtmp {
monthly
create 0664 root utmp
rotate 1
}
// 한달마다 rotate 하며 최대 1회까지만 rotate한다. 관련파일인 utmp파일을 생성한다.


# system-specific logs may be configured here
//시스템에 특별한 로그들은 여기에 적는다. 예를 들어lastlog에 대해 만들어 보면

/var/log/lastlog {
monthly
rotate 3
}
// 한달마다 rotate하며 최대 3회까지 rotate한다.
(3) /etc/logrotate.d 디렉토리: 각종 응용프로그램의 로그관리를 위한 디렉토리이다. 이 디렉토리
내에 응용프로그램의 이름으로 파일이 설정되어 있다.
(4) 참고
리눅스 서버에서 logrotate은 /etc/cron.daily 디렉토리에 cron작업으로 등록되어 있어 매일
실행되도록 설정되어 있다.