log

김승윤·2021년 11월 9일
0

제가 리눅스를 접하면서 가장 많이 들은 말은 휴먼 에러입니다. 정말 아무것도 모르던 초반에는 오류가 뜨면 겁부터 먹고 어떻게 해결할지 막막해 주위 사람들에게 해결해달라고 부탁하기 바빴습니다. 하지만 저를 가르쳐주신 선생님께서 항상 하시던 말씀 "오류가 뜨면 겁부터 먹지 말고 어떤 오류인지 확인하고 로그를 보는 습관을 길러라."

대부분의 오류는 결국 제 손이 만들어내는 것입니다. 자세히 들여다보면 어디 부분이 잘못됐는지 결국 찾을 수 있습니다.

그렇다면 오류를 해결하기 위해 보는 로그는 무엇이고 확인하는 방법은 어떤 것이 있는지 알아보겠습니다.

log란

로그는 시스템의 모든 사용 내역을 기록하고 있는 파일을 의미합니다.

  • Linux/Unix 대부분의 로그 파일 저장 경로는 /var/log에 저장됩니다.
    Linux log 파일은 일반적으로 텍스트 형식으로 저장되기 때문에 "cat", "vi" 로 내용 확인이 가능합니다. log 파일(바이너리 방식)은 특정 명령어를 쳐야 확인이 가능합니다.

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

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

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라는 옵션으로 확인 가능합니다.

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

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

  • 보통 login, tcp_wrappers, xinetd 관련 로그들이 남습니다.

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

    • 예 : ps aux | grep xinetd
  • 실행중인 xinetd의 PID저장 파일은 /var/run/xinetd.pid

메일 로그 (/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 -RIP를 제외시킨 로그 정보를 출력합니다.
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을 제공해 주는 명령어입니다.

  • 해킹 피해 시스템 분석 시 비중있게 다룹니다.

/var/log/lastlog

  • 사용 명령어 : lastlog

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

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

  • /var/log/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에 바이너리 파일로 기록됩니다.

  • 파일 크기가 쉽게 커지기 때문에 관리가 필요한 파일입니다.

0개의 댓글