출처 http://blog.naver.com/yosi3world/50083381120

 

리눅스 시스템 로그(Log) 분석

리눅스 시스템은 다양한 로그를 남긴다.

특히 서버와 관련된 로그 파일은 관리에 있어서 대단히 중요한 역할을 한다.

시스템에 이상이 생겼을 때 혹은 보안이 뚫려서 해킹을 당했을 때 이에 대한 1차적인 확인을 로그파일들에서 확인을 한다.

또한 어떤 문제점을 해결하는데 있어서 로그 파일은 중요한 역할을 담당한다.

리눅스에서는 /var/log 디렉토리에 시스템의 모든 로그를 기록 및 관리하고 일반적으로 텍스트 형식으로 저장되어 있어있다.

시스템의 /etc/syslog.conf 파일에는 거의 모든 시스템 로그파일들의 위치를 지정하고 있다.

간단한 문서 편집기나 cat 또는 less 명령어를 통해 그 내용을 볼 수 있다.

그러나 일부 로그 파일의 경우엔 텍스트 형식이 아닌데, btmp와 wtmp가 바로 그것인데,

이들은 각각 lastb와 last라는 명령어를 통해 그 내용을 확인할 수 있다.

로그 파일은 일정 주기로 정리할 필요가 있다.

그렇지 않다면 어느 순간엔 로그 파일이 파일 시스템을 모두 차지하는 상황이 발생할 수 있다.

여기서 리눅스의 모든 로그파일을 살펴보지는 못하지만 몇 가지만 살펴보도록 하자.

다음은 /var/log의 디렉토리에 있는 로그파일과 로그 디렉토리이다.

중요한 것 몇 가지만 살펴보겠다.

+ boot.log : 리눅스가 부팅이 될때 뿌려주는 모든 메시지를 기록하고 있다.

부팅시의 에러나 조치사항을 살펴보려면 이 파일을 참조해야 한다.

+ cron : 시스템의 정기적인 작업에 대한 로그를 기록하고 있다.

/etc/밑에 있는 파일들중 cron.hourly, cron.daily, , cron.weekly cron.monthly 파일들은 각각 시간별, 일별, 주별, 월별로 정기적으로 운영체제에서 자동으로 작업해야할 것에 대한 작업을 저장하고 있으며 지정한 일시에 실행이 되며 이들 작업을 한 후에는 /var/log/cron파일에 기록을 남기게 된다.

+ message : 운영체제에서 보내주는 실시간 로그를 관리하고 있으며 주로 콘솔로 이 메시지는 실시간으로 보여준다.

+ secure : 시스템의 접속에 관한 로그파일로서 언제, 누가, 어디에서 어떻게 접속을 했는가에 대한 로그를 기록하고 있다.

시스템의 불법침입등이 있었다고 의심이 될 때는 반드시 이 로그파일을 확인해야 한다.

+ xferlog : ftp로 로그인하는 사용자에 대한 로그를 기록하는 파일로서 /etc/ftpaccess에 그 설정파일을 가지면 ftp의 홈디렉토리는 /home/ftp이다.

이외에도 중요한 로그파일이 있는데 /var/spool에는 작업중에 일시적으로 저장되는 로그 및 작업들에 대한 기록이 남겨지는 곳으로 이중 메일에 관한 것만 살펴보면 다음과 같다.

+ /var/spool/mail

사용자들에 대한 메일을 보관하고 있는 디렉토리로서 메일을 한번이상 사용한 사용자는 사용자 계정 ID와 동일한 파일이 하나씩 존재한다.

메일을 읽은 후에 사용자의 메일 디렉토리로 저장하거나 메일을 삭제했을 경우에는 이 파일에서 메일내용이 삭제된다.

이 디렉토리에 있는 파일을 보기위해 "elm -f ID"로 하면 사용자의 메일을 확인할 수 있다.

물론 이 작업은 root 권한만이 가능하며 시스템관리자라고 해서 사용자의 메일내용을 함부로 확인할 수 있는 권리는 없다.

일반적으로 로그 파일을 점검할 때, 문제를 해결하기 위하여 리눅스에는 logrotate라는 프로그램을 사용한다. 이를 이용하면 주기적으로 로그 파일을 백업을 하고 일정 기간이 지나면 로그 파일을 삭제 정리한다.

레드햇 리눅스의 경우엔 /etc/logrotate.conf 라는 설정 파일이 있으며 이를 통해 logrotate를 설정할 수 있다.

로그파일 삭제하는 방법

/var/log/messages 파일 크기가 클 때 --> ‘0’ 으로 만드는 법

cat /dev/null > /var/log/messages 처럼 하면 된다.

리눅스 Log파일 종류

/dev/console [콘솔에 뿌려지는 메시지들(콘솔로그)]

/var/log/messages [모든 데몬의 시스템 로그]

/var/log/cron [crond 데몬 로그파일]

/var/log/maillog [sendmail,pop등의 메일관련 데몬의 로그]

/var/log/secure [보안인증 관련 메시지]

/var/log/xferlog [ftp(proftpd, vsftpd) 로그]

/dev/console [콘솔 로그]

/var/log/dmesg [부팅될 당시에 각종 메시지들을 저장]

/var/log/wtmp [시스템 전체 로그인 기록을 저장]

/var/log/utmp [현재 로그인 사용자에 대한 기록, 사용자 IP저장]

/var/log/lastlog [현재 로그인 사용자에 대한 기록]

/var/log/spooler [uucp, new 장치에서 위급상태(crit)이상인 메시지 기록]

/var/log/httpd/access_log [아파치 웹서버의 로그들을 기록]

/var/log/httpd/error_log [아파치 웹서버의 에러들을 저장]

시스템 각 계정의 최근 접속정보를 확인하는 lastlog

- lastlog 는 /etc/passwd 파일에 정의되어 있는 모든 계정의 최근 접속정보를 확인하는 명령어임.

- 주로 서버의 보안점검을 위하여 필수적으로 확인해 보아야하는 명령어. 간단히 lastlog 라고만 하면 모든 계정의 마지막 접속정보를 출력해 줌.

- 사용형식 : lastlog [ -u 계정명 ] [ -t 일자 ]

- lastlog 는 /var/log/lastlog 파일의 정보에 저장된 정보를 참조하여 결과를 출력함. /var/log/lastlog 파일은 바이너리파일로 되어있기 때문에 cat 이나 vi 등의 일반적인 방법으로는 확인할 수 없음.

- /var/log/lastlog 파일에는 각 계정의 최근 접속정보가 기록되는 파일임. 또한 /usr/include/lastlog.h 파일에 정의 된 포멧( format ) 으로 /var/log/lastlog 에 저장이 됨.

시스템 각 계정의 최근 접속정보 확인하기

- 간단히 lastlog 라고만 하면 서버의 모든 계정에 대한 최근 접속정보를 확인 할 수 있음.

- lastlog

특정 계정사용자의 시스템 최근 접속정보 확인하기

- 만약 특정 계정만의 최근 접속정보를 확인하고자 한다면 -u 옵션과 함께 사용하면 됨.

- lastlog -u stkim

지정한 최근까지의 시스템 접속정보 확인하기

- lastlog 는 최근 몇 일까지의 마지막 접속정보를 확인 할 수도 있음. " last -t 일자 " 와 같이 사용하면 지정된 일자까지에 접속한 최근 접속정보를 확인 할 수 있음.

- lastlog -t 30

Posted by no1ss
,