Linux OS/기본

Log 정리

서버엔지니어 2023. 3. 12.
728x90

Log File의 종류

- 기본적인 로그들은 syslogd에 의해서 제어가 되며, syslogd의 설정파일인 /etc/syslog.conf 파일을 수정함으로써 이 파일들의 저장위치와 저장파일명을 변경 가능하다.

- 보안을 위하여 숨김속성(.으로 시작하는 디렉토리)의 디렉토리를 다른곳에 만들어 숨김속성파일(.으로 시작하는 파일)을 만들어서 찾기 힘든 곳에 보관 할 수 있다.

 

로그이름 로그 파일명  관련 데몬  설명 
커널 로그  /dev/console  kernel  콘솔에 뿌려지는 로그 
시스템 로그  /var/log/messages  syslogd  리눅스 커널로그 및 주된 로그 
보안 로그  /var/log/secure  xinetd  보안 인증 관련 로그 
메일 로그 /var/log/maillog  sendmail popper  메일 로그 
(sendmail에 의한 로그) 
크론 로그  /var/log/cron  crond  crond에 의한 로그 
부팅 로그  /var/log/boot.log  kernel  시스템 부팅시의 로그 
커널 부트 메시지 로그  /var/dmesg  kernel  부팅될 당시의 각종 메시지들 저장
커널 로그  /var/log/wtmp  kernel  시스템 전체 로그인 기록 저장 
커널 로그 /var/log/utmp  kernel  현재 로그인 사용자에 대한 기록, 사용자 ip 저장 
FTP 로그  /var/log/xferlog  ftpd  ftp 로그 
웹 로그  /var/log/httpd/access_log  httpd  아파치(웹서버) 로그 저장 
웹 로그 /var/log/httpd/error_log  httpd  아파치(웹서버) 에러 저장 
네임서버 로그  /var/log/named.log  named  네임서버(DNS) 로그 

 

Log File 분석

 

① 콘솔 로그 (/dev/console)

- 커널에 관련된 내용을 시스템 콘솔에 뿌려주는 로그이다.

- 시스템에 관련된 중요한 내용들(시스템풀, 다운 등)에 대한 로그를 관리자에게 알리고자 함이 목적이다.

- 출력을 파일로 저장하는 것이 아니라 장치명(/dev/console)을 사용하여 콘솔로 로그를 뿌려준다.

- timestamp, 호스트명, 커널 메시지 내용 등이 기록 되었다.

 

② 시스템 로그 (/var/log/messages)

- 사용명령어 : dmesg (/var/log/messages를 출력한다.)

- 주로 접속 시 인증에 관한 것과 메일에 관한 내용, 시스템에 관한 변경사항 등 시스템에 관한 전반적인 로그를 기록하는 파일이다.

- timestamp, 호스트명, 데몬명, 메시지 내용 등이 기록된다.

- 시스템 관리자에 의해서 가장 소중하게 다루어지는 로그이다.

- 보안사고가 발생시에 가장 먼저 분석을 해야하는 파일이다.

- 메시지 내용은 su 실패에 대한 로그, 특정 데몬이 비활성화된 로그, 부팅 시 발생된 에러 등 다양한 로그들을 포함한다.

- syslog facility에 의하여 남은 로그로 /etc/syslog.conf의 설정에 따라 남는 정보의 종류가 달라진다.

 

③ 보안 로그 (/var/log/secure)

- 모든 접속과 관련하여 언제 어디서 어떤 서비스를 사용했는지 기록한다.

- timestamp, 호스트명, 응용프로그램명(pid), 메시지 내용이 기록되어있다.

- 보통 login, tcp_wrappers, xinetd 관련 로그들이 남는다.

- ps -ef라는 옵션 외에도 aux라는 옵션으로 확인 가능하다.

( 예 : ps aux | grep xinetd )

- 실행중인 xinetd의 PID저장 파일은 /var/run/xinetd.pid

- 로그인 인증 관련 기록

- telnet, ssh 를 통해 접속한 유저 인증 정보를 기록합니다

 

④ 메일 로그 (/var/log/maillog)

- sendmail이나 pop등의 실행에 관한 기록이다.

- 메일을 주고받을 때에 이 로그파일(smtp, pop)에 기록이다

- 실행중인 sendmail의 PID저장 파일은 /var/run/sendmail.pid

- timestamp, 호스트명, 데몬명(pid), 메시지 내용 기록

 

⑤ 크론 로그 (/var/log/cron)

- 시스템의 정기적인 작업(crond)에 대한 모든 작업한 기록을 보관하고 있는 파일이다.

- 크론데몬의 crond가 언제 어떤작업을 했는가를 확인 가능히다.

- crond의 의해서 실행되었던 데몬(프로세스, 응용프로그램 등)들이 기록 되었다.

- 실행중인 crond의 PID저장 파일은 /var/run/crond.pid

- /etc/ 디릭토리 밑에 있는 cron.hourly, crondaily, cron.weekly, cron.monthly 파일들에 기록되어 있는 작업을 실행한 후에 cron 파일에 log를 기록한다.

- timestamp, 호스트명, 데몬명(pid), 메시지 내용이 기록되어 있다.

 

⑥ 부팅로그 (/var/log/boot.log)

- 시스템의 데몬들이 실행되거나 재시작되었을 때 기록되는 로그 파일이다.

- 부팅 시의 에러나 조치 사항을 확인할 때 활용이 가능하다.

- timestamp, 호스트명, 데몬명(pid), 메시지 내용이 기록 된다.

 

⑦ 커널 부트 메시지 로그 (/var/dmesg)

- 시스템이 부팅할 때 출력되었던 메시지를 로그 기록한다.

 

⑧ /var/log/wtmp

- 사용 명령어 : last

- 사용자들의 로그인-로그아웃 정보 기록이다

- 바이너리 형태이며 지금까지 사용자들의 로그인, 로그아웃 히스토리를 모두 누적형태로 저장된다.

- 시스템의 셧다운, 부팅 히스토리까지 포함한다.

- 해킹 피해 시스템 분석 시 비중있게 다룬다.

 

옵션

 

설명

last [계정명]

계정명을 입력하면 사용자별 로그 정보를 출력한다.

last -f [파일명]

지난 파일에 대해서 로그를 점검시 -f 옵션 뒤에 해당 파일명을 입력

last -R

IP를 제외시킨 로그 정보를 출력한다.

last -a

로그 정보를 출력할 때 IP를 뒤로 배치해서 출력한다.

last -d

외부에서 접속한 정보와 reboot 정보만을 출력한다.

 

⑨ /var/log/utmp

- 사용자 명령어 : who, w, whodo, uesrs, finger

- 시스템에 현재 로그인한 사용자들에 대한 상태를 기록한다.

- 리눅스에서는 /var/run 혹은 /var/adm, 솔라리스에서는 /etc등에 위치하며 바이너리 형태로 저장되어 vi 편집기 등으로 읽을 수 없다.

- utmp(x) 파일은 기본적으로 사용자 이름, 터미널 장치 이름, 원격 로그인 시 원격 호스트 이름, 사용자 로그인한 시간 등을 기록 한다.

- w 명령어는 utmp(x)를 참조하여 현재 시스템에 성공적으로 로그인한 사용자에 대한 snapshot을 제공해 주는 명령어이다.

- 해킹 피해 시스템 분석 시 비중있게 다룬다.

※ wtmp, wtmpx와 파일 포맷은 동일

ump(x)는 현재 시스템에 대한 정보, wtmp(x)는 누적된 정보

 

⑩ /var/log/lastlog

- 사용 명령어 : lastlog

- /etc/passwd 파일에 정의되어 있는 모든 계정의 최근 접속 정보를 확인 가능하다.

- 사용자의 최근 로그인 시간을 사용자 이름, 터미널, IP 주소, 마지막 로그인 시간 출력

- /var/log/lastlog 파일에 저장되고 바이너리 형태 계정별 마지막 로그인 정보 기록 로그 파일 정보를 분석해 출력해줍니다

 

없을 경우 yum install shadow-utils

touch /var/log/lastlog

lastlog

 

옵션

 

설명

-u / --login

접속 이름

-t / --time

날짜

(현재 시간부터 입력하나 날짜까지 접속자 검색)

-h / --help

도움말

 

⑪ FTP 로그 (/var/log/xferlog)

- ftp나 ncftp 등의 접속이 이루어 졌을 때 이 로그파일에 기록이 된다.

- ftp를 사용했을 때 이 로그파일에 기록되고, 업로드 파일과 다운로드한 파일들에 대한 자세한 정보가 기록 저정된다.

 

⑫ 웹 로그 (/var/log/httpd/access_log, /var/log/httpd/error_log)

▶ Access log

- 웹사이트에 접속했던 사람들이 각 파일들을 요청했던 실적을 기록해놓은 목록을 저장한다.

- 방문자의 IP또는 도메인 네임, 방문자가 파일을 요청한 시간, 방문자가 웹서버에 요청한 처리 내용(Get, Put, Head), 방문자가 요구한 파일의 이름, 파일의 크기 및 처리결과 등의 데이터를 제공한다.

▶ Error log

- 요청한 홈페이지가 없거나 링크가 잘못되는 등의 오류가 있을 경우에 생성된다.

 

⑬ /var/log/btmp

- 사용자 명령어 : lastb

- 로그인 시도 5번 이상 실패한 로그 기록을 확인 가능하다.

- 계정명, 접속 콘솔/터미널 유무, IP, 시간 정보 출력

- /var/log/btmp에 바이너리 형태로 저장도니다.

 

⑭ History (해당 계정의 home directory/ .bash_history)

- 접속한 계정에서 사용했던 명령어의 내용만 보여준다.

- root의 경우 ~/.bash_history에 사용한 명령어가 저장된다.

- 저장되는 로그의 위치를 변경하려면 export HISTFILE="경로/파일이름" 을 입력 한다.

 

⑮ Pacct (/var/account/pacct)

- 사용자 명령어 : lastb

- 시스템에 들어온 사용자가 어떤 명령어를 실행시키고 어떠한 작업을 했는지에 대한 사용 내역 등이 기록 된다.

- 사용된 명령어의 argument와 그 명령어가 시스템 내 어느 파일 시스템의 어느 디렉토리에 실행되었는지는 기록되지 않는다.

- /var/account/pacct에 바이너리 파일로 기록된다.

- 파일 크기가 쉽게 커지기 때문에 관리가 필요한 파일 이다.

 

anaconda.syslog

/var/log/anaconda.syslog

시스템이 설치 되는 과정에서 하드웨어 관련 정보를 기록하는 로그

리눅스 설치시 커널부터 하드웨어의 자세한 정보를 담고 있으며 설치의 전반적인 내용을 보여줍니다

 

audit

/var/log/audit/

리눅스 감사 시스템 데몬 로그

설정된 감사 룰에따라 시스템 정보를 기록합니다

 

[기타 리눅스 관련 로그]

/var/log/utmp : 현재 시스템에 로그인한 각 사용자의 상태를 저장하는 바이너리 파일

* 명령어 w, who, finger 등으로 확인 가능합니다!

/var/log/wtmp : 성공한 로그인 / 로그아웃 정보 히스토리 로그

* 명령어 last 로 확인 가능합니다!

/var/log/btmp : 실패한 로그인 정보 히스토리 로그

* 명령어 lastb 로 확인 가능합니다!

/var/log/vtmp : 로그인, 로그아웃, 시스템 재부팅 관련 로그

/var/log/xferlog : ftp 데이터 전송에 관한 로그

/var/log/conman : 유닉스 도메인 스트림 소켓 로그

/var/log/httpd : 웹서버를 사용할 경우 httpd 데몬 관련 로그가 기록

/var/log/ppp : Point to Point 프로토콜 데몬 로그

/var/log/rpmpkgs : 설치된 패키지들의 목록을 기록

/var/log/Samba : Samba 관련 로그

/var/log/spooler : UUCP, NEW 장치에 위험상태 이상의 로그 발생시 메시지 기록

/var/log/vbox : Virtual Box 관련 로그

 

 

========================================================================

 

dmesg (driver message)

dmesg 명령어는 시스템 부팅 메세지를 확인하는 명령어

커널에서 출력되는 메세지를 일정 수준 기록하는 버퍼 역할을 수행

커널 부팅 중에 에러가 났다면 어느 단계에서 에러가 났는지 범위를 좁히고 찾아내는데 도움

 

dmesg 로그 파일 위치

/var/log/dmesg

 

dmesg 로그 파일 위치

/var/log/dmesg

 

* 모든 메세지를 삭제하며 입력 이후에 새롭게 로그 쌓기

dmesg -c

 

* 하드 디스크 정보 확인

dmesg | grep sda

 

* SCSI 타입의 하드디스크 정보 확인

dmesg | grep SCSI

 

* IDE 타입의 하드디스크 정보 확인

dmesg | grep hda

 

* NIC 정보 확인

dmesg | grep eth

 

* USB 장치에 관한 정보

dmesg | grep usb

 

* 커널 정보 확인

dmesg | grep Linux

 

* 부팅 시간의 기준

dmesg 메세지 중 아래와 같은 메세지는 부팅이 끝나고 나서

__init 으로 표시된 메모리를 해제 할 때 나오는 메세지이다.

 

리눅스 부팅하는데 걸리는 시간 약 3.3 초

[ 3.321866] Freeing init memory: 216K

 

댓글