[로그 관리 및 분석] 로그파일 관리( logrotate )

1. logrotate

– logrotate 는 시스템에 있는 모든 로그파일들을 관리할 수 있으며 이들 로그파일들을 자리고( rotate ), 보관하고, 삭제하고, 압축하고, 메일로 보내주는 등의 작업을 할 수 있게 함.

– logrotate 를 이용하여 리눅스서버에서 기록되는 로그파일에 대하여 여러 가지 작업을 자동화 할 수 있음.

– 특정날짜 또는 특정용량이상이 되었을 때 로그파일을 로테이트( 교체 ) 한다. ( size )

– 로테이트작업 직전과 직후에 특정작업을 수행할 수 있다.( prerotste / endscript, postrotate / endscript )

– 로테이트 작업을 하면서 압축을 하거나 하지않을 수 있다.( compress, nocompress )

– 로테이트 후에 보관할 파일의 수를 지정할 수 있다.( rotate )

– 로테이트 후에 생성되는 파일의 소유주와 퍼미션등을 설정할 수 있다.( create )

– 로테이트 후에 생성되는 파일의 확장자를 임의로 지정할 수 있다.( extension )

2. logrotate 파일구성

– logrotate 는 리눅스가 설치되면서 대부분 패키지형태로 기본 설치가 됨.

– 데몬( 위치 ) : /usr/sbin/logrotate : 데몬의 위치 및 데몬프로그램

– 데몬설정파일 : /etc/logrotate.conf : 설정파일

– 설정디렉토리 : /etc/logrotate.d : logrotate 에 적용할 각종로그파일들을 보관하는 디렉토리

– 상황파일 : /var/lib/logrotate.status : logrotate 한 작업내역을 보관할 파일

– cron( 일단위 ) : /etc/cron.daily/logrotate : logrotate 는 주기적으로 실행이 되어야 하므로 cron 에 의해 일단위로 실행이 됨.

– /usr/sbin/logrotate 는 logrotate 의 데몬프로그램임. crond 에 의해 주기적으로 실행이 됨.

– /etc/logrotate.conf 파일은 logrotate 가 실행이 되면서 읽어들인 후 각각의 로그파일들을 이 파일의 설정에 의하여 자르거나( rotate ), 삭제하거나, 압축을 하게 됨.

– /etc/logrotate.d 파일은 각각의 로그파일들에 대한 개별적인 설정파일들이 존재하는 디렉토리이며, 추가로 적용할 로그파일에 대한 설정을 여기서 하면 됨.

– /etc/cron.daily/logrotate 파일은 주기적으로 실행이 될 logrotate 를 cron 에 넣어둔 것.

3. logrotate.conf 샘플

– /var/log/messages : 대상로그파일, 즉, logrotate 에 의해서 작업될 로그파일( messages ) 을 절대패스로 지정해둔 것. 그 다음의  ” { ” 부터 ” } ” 까지는 이 로그파일에 대한 개별적인 설정이 됨.

– monthly : 대상로그파일( /var/log/messages ) 을 순환시킬 주기이며, monthly 이므로 한달에 한번씩 이 파일이 순환( rotate )되게 됨. 순환주기에는 daily, weekly, monthly 등이 있음.

– compress : 순환( rotate ) 된 파일이  gzip 에 의해서 압축이 됨. 반대의 옵션은 nocompress 이며 압축을 하지 않게 됨.( 순환되어 새로 생성되어 저장되고 있는 로그파일은 압축이 되지 않음.)

– rotate 2 : 순환되는 파일갯수를 지정함. 0 부터 시작하게됨.

– mail : 순환되어 지정된 갯수를 넘게되는 로그파일은 지정된 메일주소로 메일이 보내지게 됨. 메일을 보내지 않으려면 nomail 이라고 하면 됨.

– errors : 지정된 log 파일의 logrotate 작업시에 에러가 발생을 하면 지정된 메일주소로 메일을 발송하게 됨.

– postrotate / endscript :지정된 로그파일에 logrotate 작업이 끝이 난 이후에 실행할 작업을 설정해 둔 것. 대부분 이 부분에 설정되는 작업은 rotate 된 로그파일의 데몬을 재시작시키는 작업임. 반대의 작업을 하려면 즉, logrotate 작업 전에 실행할 작업이 있다면 postrotate / endscript 대신에 prerotate / endscript 를 사용하면 됨.

4. logrotate 주요옵션

– -f, –force : 강제순환 시킴. 이 옵션은 새로운 항목을 추가한 후에 로그파일을 순환시키거나 옛날 로그파일이 이미 삭제되어 새로운 로그파일이 생성되어 로그기록이 계속되고 있을 경우에 유용한 옵션임.

– -s, –state < statefile > : 기본 상황파일은 /var/lib/logrotate.status 파일 대신에 지정한 state 파일을 사용함.

– –usage : logrotate 의 기본 사용법을 간단히 보여줌.

– compress : 순환되는 로그파일을 gzip 으로 압축하게 됨. nocompress 와는 반대임.

– nocompress : 순환되는 로그파일의 압축을 하지 않음. 반대는 compress 임.

– create mode owner group : 순환되어 생성되는 로그파일의 파일퍼미션( mode ) 과 소유자( owner ) , 그리고 그룹소유자( group ) 를 지정한 것.

– daily : 로그파일을 일 주기로 순환 시킴.

– weekly : 로그파일을 주 주기로 순환  시킴.

– monthly : 로그파일을 한달 주기로 순환 시킴.

– errors address : logrotate 실행 후에 순환되어 생성되는 파일의 이름 뒤에 확장자로 붙일 확장자명을 지정함. 만약 compress 라는 옵션으로 gzip 으로 압축을 했다면 gz 라는 확장자가 뒤에 붙게 됨.

– ifempty : 로그파일이 비어있는 경우에도 rotate( 순환 ) 을 하게 됨. 기본값임.

– notifempty : ifempty 와는 반대로 로그파일이 비어있을 경우에는 순환을 하지 않음.

– mail address : logrotate 작업후에 이전로그파일을 지정된 메일주소로 메일을 보냄.( 특정한 경우의 로그파일은 보내지 않을 수 도 있음. )

– postrotate / endscript : logrotate 작업 이후에 지정된 작업( 스크립트 ) 을 실행함.

– prerotate / endscript : logrotate 작업 이전에 지정된 작업( 스크립트 ) 를 실행함.

– rotate count : logrotate 의 실행결과 순환되는 파일들의 총 갯수임. 즉, logrotate 의 결과 삭제되거나 지정된 주소로 메일을 보내기 전의 총 파일갯수라고 이해하면 됨. 그리고 rotate 0 로 설정하고 나면 이전파일은 순환과 함께 삭제되어 버림.

– size size : logrotate 의 결과 순환됨 결과 파일사이즈가 지정한 크기를 넘지 않도록 함. 지정하는 방법은 100k, 100M 등으로 용량단위를 붙여서 지정하면 됨.

[로그 관리 및 분석] 로그데몬 컨트롤하기

1. 로그데몬 및 실행스크립트

– 로그데몬은 /sbin/syslogd 에 존재함. 서버관리자는 이 데몬파일의 사이즈 및 생성일자 및 파일퍼미션등의 관리를 해야함. 해킹을 당했을 때에는 이들 파일의 사이즈 및 퍼미션등이 변경되어 있을 수가 있음. 대부분 rtipwire 라는 파일시스템 무결성 검사툴을 설치하여 사용하는 것이 바람직 할 것임.

– 이 데몬( /sbin/syslogd ) 을 실행시키려면 /etc/rc.d/init.d 에 syslog 라는 스크립트가 존재함. 이 스크립트( /etc/rc.d/init.d/syslog ) 를 통해 로그데몬을 실행시킴.

2. 로그데몬 실행 및 종료

– /sbin/syslogd 를 실행시키고 종료시키는 것은 /etc/rc.d/init.d/syslog 라는 스크립트를 통해서 하면 됨.

– 직접 데몬을 실행시킬 수도 있지만, 스크립트를 통해서 실행시키는 것이 일반적.

– /etc/rc.d/init.d/syslog start

– /etc/rc.d/init.d/syslog restart

– /etc/rc.d/init.d/syslog stop

– syslogd 란 데몬이 실행이 되었다라는 의미는 /etc/syslog.conf 파일에 설정된 것처럼 관련된 이벤트가 발생을 했을 경우에 지정된 로그파일에 기록을 하게 된다는 것을 의미.

[로그 관리 및 분석] /etc/syslog.conf 파일의 설정포멧

1. /etc/syslog.conf 파일

– /etc/syslog.conf 파일은 시스템 로그데몬( syslogd ) 이 실행이 될 때 참조되는 로그파일 설정파일로서 관련된 로그파일들이 어떤경우에 어떤 파일에 남겨지는가에 대한 설정내용을 가지고 있음.

– 시스템로그데몬( syslogd )이 실행이 될 때( 이 데몬은 시스템부팅시에 실행이 됨 ) 환경파일( /etc/syslog.conf ) 을 읽게되며, 관련 로그를 설정된 곳의 파일에 남겨두게 됨.

– 형식 : facility.prioriry                                   logfile-location
A          B                                                      C
” A 서비스( 데몬 ) 에 대하여 B 의 경우에 해당하는 상황이 발생하였을 때에 C 파일에 그 기록을 남겨라 ”
즉, facility 는 해당서비스를 의미함. mail,cron, kern, uucp 등이 이에 해당함. priority 는 각 서비스( facility ) 들의 상황정도는 나타내는 우선순위임. logfile-location 은 해당 서비스의 로그내용이 기록될 파일위치를 지정한 것.

– facility : 서비스이름( 메세지의 종류 )
auth : 로그인과 같이 사용자 인증에 관한 메시지
authpriv : 보안 및 승인에 관한 메시지
cron : crond 데몬과 atd 데몬에 의해 발생되는 메시지
daemon : telnet, ftp 등과 같은 데몬에 의한 메시지
kern : kernel 에 의한 메시지로서 커널메시지라고 함.
lpr : 프린터데몬인 lpd 에 의해 발생되는 메시지
mail : sendmail 또는 pop 또는 qmail 등의 메일에 의해 발생되는 메시지
news : innd 등과 같은 뉴스시스템에 의해 발생되는 메시지
uucp : uucp 에 의한 시스템에 의한 메시지

– priority( 메시지의 우선순위를 의미함 )
emerg : 최상위. 매우 위험한 상황
info : 단순한 프로그램에 대한 정보 메시지
notice : 에러가 아닌 알림에 관한 메시지
warning : 주의를 요하는 메시지
err : 에러가 발생한 상황
crit : 급한상황은 아니지만 치명적인 시스템 문제발생 상황
alert : 최하위, 즉각적인 조치를 취해야 하는 상황
none : 어떠한 경우라도 메시지를 저장하지 않음.

[로그 관리 및 분석] 기본로그파일의 종류와 이해

1. 리눅스 서버에서 발생되는 기본적인  로그 두가지

– 커널로그 : kernel messages 라고 하는 것으로 klogd 라는 데몬에 의해 생성

– syslogd 데몬에 의해 생성되는 로그

– 시스템관리에 있어서 주기적으로 확인 및 점검해야 할 사항들 중에 가장 중요한 것이 로그파일들이다. 시스템에 이상이 있거나 보안의 위험을 감지하기 위해서는 시스템에서 남겨지는 메시지를 확인해야 함. 모든 시스템에는 특정작업이 발생한 후에는 반드시 로그가 남겨지며, 관리자는 이를 정기적으로 점검을 해야 함.
시스템에 이상이 생겼을 때 혹은 서버보안에 문제가 있어 해킹을 당했을 때 이에 대한 1차적인 확인을 로그파일을 통해서 할 수 있음.

– 리눅스에서는 /var/log 디렉토리에서 시스템의 모든 로그를 기록 및 관리하고 있음.

– 시스템의 /etc/syslog.conf 파일에서 시스템 로그파일들의 위치를 지정함.

2. /var/log 의 디렉토리에 있는 로그파일과 로그디렉토리

– boot.log : 리눅스가 부팅이 될 때 출력되는 모든 메시지를 기록함. 부팅시의 에러나 조치사항을 살펴보려면 이 파일을 참조해야 함

– cron : 시스템의 정기적인 작업에 대한 로그, 즉 시스템 cron 작업에 대한 기록을 하고 있는 파일. /etc/디렉토리 에는 cron.hourly, cron.daily, cron.weekly, cron.monthly 디렉토리들이 있음. 이 디렉토리들은 각각 시간별, 일별, 주별, 월별로 정기적으로 운영체제에서 자동실행할 작업스크립트 파일들이 존재하고 있음. 이들 작업이 실행되고 난 이후에는 이 로그파일( /var/log/cron ) 에 실행내역을 기록함.

– messages : 리눅스 시스템의 가장 기본적인 시스템로그파일로서 시스템 운영에 대한 전반적인 메시지를 저장함. 주로 시스템 데몬들의 실행상황과 내역, 그리고 사용자의 접속정보등의 로그기록내역을 기록함.

– secure : 주로 사용자들의 원격로그인 정보를 기록하고 있는 로그파일로서 서버보안에 아주 민감하고 중요한 파일임. 특히 tcp_wrapper( xinetd ) 의 접속제어에 관한 로그파일로서 언제, 누가, 어디서, 어떻게 접속을 했는가에 대한 로그를 기록하고 있음. 시스템의 불법침입등이 있었다고 의심이 될 때에는 반드시 이 로그파일을 확인해야 함.

– xferlog : 리눅스시트메의 FTP 로그파일로서 proftpd 또는 vsftpd 데몬들의 서비스내역을 기록하는 파일. 즉, ftp 로 로그인 하는 사용자에 대한 로그를 기록과 어떤파일을 업로드/다운로드 하였는가에 대한 상세기록을 함. 따라서 어떤 특정한 파일이 시스템으로 FTP 서비스에 의해서 업로드되었을 때에나 또는 시스템외부로 다운로드 되었을때에 이 파일의 기록내역을 확인해 보면 날짜, 파일명, 디렉토리명등의 주요 정보를 확인 할 수 있음.

– /var/spool/mail : 사용자들에 대한 메일을 보관하고 있는 디렉토리로서 메일을 한번 이상 사용한 사용자는 사용자 계정 ID 와 동일한 파일이 하나씩 존재함. 사용자 계정생성시에 /var/spool/mail 디렉토리 내에 생성하는 계정명과 동일한 메일파일이 생성됨. 메일을 읽은 후에 사용자의 메일디렉토리로 저장하거나 메일을 삭제했을 경우네는 이 파일에서 메일내용이 삭제 됨.
이 디렉토리에 있는 파일을 보기위해 ” elm -f ID ” 로 하면 사용자의 메일을 확인할 수 있음. 일반 사용자들은 elm 을 이용하여 자기자신의 mail 내용만을 확인 할 수 있으며, root 권한으로는 모든 사용자의 메일내용 확인이 가능함.

3. 시스템을 모니터링 한다는 말의 의미는 여러 가지가 있을 수 있음. 하지만 거의 대부분 시스템 모니터링은 시스템에서 남겨지는 로그파일을 통해서 이루어짐. 즉, 시스템관리자로서 시스템을 모니터링하기 위해서는 로그파일을 반드시 확인하고분석해야 한다는 의미.

[리눅스 일반] 파일 압축 유틸리티 bzip2/bunzip2 실무

1. 리눅스 압축유틸리티 bzip2, 압축해제 유틸리티 bunzip2

– compress 로 압축된 파일은 uncompress 로 풀어야하며, gzip 으로 압축된 파일은 반드시 gunzip 으로 풀어야 하는 것처럼, bzip2 로 압축된 압축파일은 반드시 bunzip2 로 풀어야 함.

– bzip2  는 복구용 유틸리티인 bzip2recover 라는 것이 있어 손상된 bzip2 압축파일을 복구할 수도 있음.

– 사용형식 : bzip2 [ -cdfkqstvzVL123456789 ] [ 파일명 … ]
bunzip2 [ -fkvxVL ] [ 파일명 … ]

2. bzip2 로 특정 파일압축하기와 bunzip2 로 압축파일 풀기

– bzip2 TestFile

– bunzip2 TestFile.bz2

3. bzip2 와 bunzip2 로 두개 이상의 파일의 압축과 압축해제

– bzip2 *

– bunzip2 *

4. bzip2 로 압축된 파일을 bzip2 로 해제하기

– -d 옵션을 사용하면 bzip2 명령어로도 압축해제를 할 수 있음.

– bzip2 -d TestFile.bz2

5. bzip2 로 압축한 파일과 동인한 파일 존재하더라도 덮어쓰기

– -f 옵션을 하용사면 압축후에 동일한 파일이 존재하더라도 덮어쓰게 할 수 있음.

– bzip2 -f TestFile