utmp 로그 파일
- 현재 로그인한 사용자의 상태정보를 담고 있는 로그 파일
- binary 파일로 되어 있으며 "w", "who", "finger"등의 명령어로 확인할 수 있다.
- 위치 : /var/run/utmp
- "w" 명령어
USER : 로그인 계정, TTY : 터미널 장치 명, FROM : 원격 호스트 주소, LOGIN@ : 로그인한 시간
IDLE : 아무 입력도 수행하지 않은 idle 시간, WHAT : 현재 수행하는 작업(명령어)
[root@ ~]# w
09:54:40 up 22 min, 4 users, load average: 0.26, 0.18, 0.18
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root :0 :0 09:36 ?xdm? 1:15 0.16s /usr/libexec/gn
root pts/0 :0 09:37 8:56 0.22s 0.22s bash
root pts/1 :0 09:44 0.00s 0.14s 0.01s w
user01 pts/2 192.168.56.201 09:54 8.00s 0.05s 0.05s -bash
[root@ ~]#
[root@ ~]# who
root :0 2018-08-22 09:36 (:0)
root pts/0 2018-08-22 09:37 (:0)
root pts/1 2018-08-22 09:44 (:0)
user01 pts/2 2018-08-22 09:54 (192.168.56.201)
wtmp 로그파일
- 사용자의 성공한 로그인/로그아웃, 시스템의 Boot/Shutdown 정보에 대한 히스토리를 담고 있는 로그파일
- binary 파일로 되어 있으며 "last"명령어로 확인할 수 있다.
- 위치 : /var/log/wtmp
- "last" 명령어
인자값 없이 실행하면 모든 계정에 대한 로그인/로그아웃 정보를 출력한다. 특정 계정에 대한 로그인/로그아웃 정보를 보려면 "last [ USER ]" 형식으로 실행한다
순서대로 계정명, 터미널 타입, 접속 주소, 로그인 시간, 로그아웃 시간
reboot 사용자를 통해 Boot 정보를 알 수 있다.
last user01
user01 pts/2 192.168.56.201 Wed Aug 22 09:54 still logged in
user01 pts/2 192.168.56.201 Wed Aug 22 09:54 - 09:54 (00:00)
user01 pts/2 localhost Wed Aug 22 09:44 - 09:46 (00:02)
user01 pts/0 :1 Tue Jul 3 15:32 - 16:44 (01:11)
user01 :1 :1 Tue Jul 3 15:32 - crash (01:19)
last reboot
reboot system boot 3.10.0-862.9.1.e Wed Aug 22 09:32 - 09:56 (00:24)
reboot system boot 3.10.0-862.9.1.e Wed Aug 22 09:08 - 09:56 (00:47)
reboot system boot 3.10.0-862.9.1.e Mon Aug 20 16:44 - 09:56 (1+17:11)
reboot system boot 3.10.0-862.9.1.e Fri Aug 17 10:24 - 09:56 (4+23:31)
reboot system boot 3.10.0-862.9.1.e Mon Aug 13 17:37 - 09:56 (8+16:18)
reboot system boot 3.10.0-862.9.1.e Mon Aug 6 15:04 - 09:56 (15+18:52)
lastlog파일
- 가장 최근에 성공한 로그인 기록을 담고 있는 로그 파일
- binary파일로 되어 있으며 "lastlog"를 통해 확인 가능
- 위치 : /var/log/lastlog
- lastlog 명령어
모든 계정의 최근 접속 기록을 확인할 수 있다.
"-u 계정명" 옵션으로 사용자를 지정하여 확인할 수 있다.
"-t 일수" 옵션으로 해당 일수 이내에 접속한 기록을 확인할 수 있다.
lastlog -t 5
사용자이름 포트 어디서 최근정보
root :0 수 8월 22 09:36:34 +0900 2018
user01 pts/2 192.168.56.201 수 8월 22 09:54:29 +0900 2018
gdm :0 수 8월 22 09:32:24 +0900 2018
btmp 로그 파일
- 실패한 로그인 시도에 대한 기록을 담고있는 파일
- binary파일로 되어 있으며 "lastb"명령어를 통해 확인할 수 있다.
- 위치 : /var/log/btmp
lastb
user01 ssh:notty 192.168.56.201 Wed Aug 22 09:59 - 09:59 (00:00)
user01 ssh:notty 192.168.56.201 Wed Aug 22 09:59 - 09:59 (00:00)
user01 ssh:notty localhost Wed Aug 22 09:44 - 09:44 (00:00)
history 로그 파일
- 각 계정별로 실행한 명령어에 대한 기록을 저장한 파일
- 각 계정별 홈 디렉토리에 존재
- ".쉘 종류_history" 형식의 텍스트 파일로 생성되며 "history"명령어를 통해 확인 가능
secure 로그 파일
- 주로 사용자/그룹 생성/삭제, 로그인 등의 사용자 인증에 대한 정보를 기록하고 있는 로그파일
- 원격에서 접속한 내역과 su명령을 수행한 내역 등이 저장된다.
- 위치 : /var/log/secure
messages 로그 파일
- 리눅스 시스템의 가장 기본적인 시스템 로그 파일로 시스템 운영에 대한 전반적인 메세지를 저장
- 주로 시스템 데몬들의 실행상황과 내역, 사용자들의 접속정보, TCP Wrapper 접근 제어 정보 등을 저장
- 위치 : /var/log/messages
dmesg 로그 파일
- 리눅스가 부팅될 때 출력되는 모든 메세지를 기록
- 부팅 시의 에러나 조치사항을 살펴보려면 이 파일을 참조
- 텍스트 형식의 로그파일을 보거나 dmesg명령을 통해 내용을 확인할 수 있다.
- 위치 : /var/log/dmesg
boot.log 로그 파일
- 리눅스가 부팅될 때 파일 시스템에 대한 체크, 서비스 데몬들의 실행 상태 등을 기록
- 성공 / 실패 여부가 기록됨
- 위치 : /var/log/boot.log
xferlog 로그 파일
- 리눅스 시스템의 FTP 로그 파일로서 proftpd, vsftpd 데몬들의 서비스 내역을 기록하는 파일
- FTP로 로그인하는 사용자에 대한 기록과 어떤 파일을 업로드/다운로드 했는지 기록된다.
- 위치 : /var/log/xferlog
cron 로그 파일
- 시스템의 정기적인 작업에 대한 로그, 즉 시스템 cron 작업에 대하여 기록하고 있는 파일
- /etc 디렉토리에 cron.hourly, cron.daily, cron.weekly, cron.monthly 들의 디렉터리들은 각각 시간별, 일별, 주별, 월별로
정기적으로 운영체제에서 자동 실행할 작업 스크립트 파일들이 존재하고 있다.
- 위치 : /var/log/cron
mail 로그 파일
- 사용자들에 대한 메일을 보고나하고 있는 디렉터리로서 메일을 한번 이상 사용한 사용자는 사용자 계정 ID와 동일한
파일이 하나씩 존재한다.
- 사용자 계정 생성 시에 /var/spool/mail 디렉토리 내에 생성하는 계정명과 동일한 메일 파일이 생성된다.
- 메일을 읽은 후에 사용자의 메일 디렉터리로 저장하거나 삭제했을 경우에는 이 파일에서 내용이 삭제된다.
- 위치 : /var/spool/mail
maillog 로그 파일
- sendmail 또는 qmail 등과 같은 메일 송수신 관련 내역들과 ipop 또는 imap 등과 같은 수신 내역들을 기록
- 메일에 관련된 거의 모든것을 기록
- 위치 : /var/log/maillog
1. 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) 로그 |
2. 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
④ 메일 로그 (/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 파일에 저장되고 바이너리 형태
옵션 | 설명 |
-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에 바이너리 파일로 기록된다.
- 파일 크기가 쉽게 커지기 때문에 관리가 필요한 파일 이다.
1. Log File 소개
- 컴퓨터 시스템의 모든 사용내역을 기록하고 있는 파일을 의미 한다.
- 컴퓨터 시스템에 해킹사고가 발생할 경우 로그파일을 근거로 사고원인과 해커를 추적 한다.
- 로그파일 자체가 해커의 의해 삭제되면 추적 자체가 불가능하게 되므로 로그파일 보호 필요
1) Linux / Unix Log File
- Linux / Unix 대부분의 로그 파일 저장 경로는 "/var/log"에 저장 (위치 변경 가능)
- Linux log 파일은 일반적으로 텍스트 형식으로 저장
- 텍스트 형식의 log 파일 : (cat , less) 명령어, vi 편집기를 통하여 내용 확인 가능
- 텍스트 형식이 아닌 log 파일(바이너리 형식) : btmp 및 wtmp log는 텍스트 형식이 아니라서 cat , less 및 vi 편집기로 하려고 하면 글씨가 깨져서 나오기 때문에 특정 명령어를 쳐야 확인이 가능하다.
- 시스템과 관련된 데몬은 syslogd / klogd 들이 존재 한다.
2) Windows Log File
- 윈도우는 로그 대신 이벤트라는 정보를 시스템 운영 전반에 걸쳐서 저장 한다.(이벤트 로그)
- 기본 이벤트는 시스템에서 발생한 모든 이벤트의 상황들을 저장하는 응용 프로그램 이벤트, 보안 이벤트, 시스템 이벤트가 존재 한다.
- IIS 서버를 운영하는 경우 웹, FTP 로그가 따로 존재 한다.
2. Linux Log File
1) 로그 관련 데몬
① 로그 데몬
▶ syslogd
- 커널과 여러 가지 시스템 프로그램은 각종 에러와 경고 메시지, 기타 일반적인 메시지들을 출력하는데 syslogd는 메시지들을 파일로 기록하는 데몬 이다.
▶ klogd
- 부팅 후에 부팅과 관련된 메시지를 보기 위해서는 dmesg 명령어를 사용 한다.
(실제 /var/log/dmesg 라는 파일의 정보를 가지고 오는 것이 아니다.)
- 시스템에는 부팅과 관련된 메시지를 포함하여 커널 관련 메시지를 담는 약 8196 byte의 버퍼 크기를 갖고 메시지를 기록하는데 이 메시지를 기록하는 것이 klogd 데몬
② 관련 파일
- /etc/rc.d/init.d/syslog : 실행과 관련된 시크립트 파일로 실질적인 실행파일 syslogd와 klogd 데몬을 모두 실행시킨다.
- /etc/syslog.conf : syslog 데몬의 환경설정 파일
- /etc/sysconfig/syslog : syslogd/klogd의 시작과 관련된 스크립트의 환경 파일 이다.
2) /etc/syslog.conf 파일 분석
- syslog.conf 파일은 시스템 로그데몬 'syslogd' 이 실행이 될때 참조되는 로그설정 파일로써 관련된 로그파일들이 어떤 경우에 어떤 파일에 남겨지는가에 대하여 정의 한다.
① 기본 구성형식
- selector field와 action field 두 필드로 구성
- selector field(선택자 필드) : 어떤 것을 기록할 것인가 설정하는 부분이다.
- action field(액션 필드) : 어느파일에 로그를 기록할 것인가를 설정하는 부분이다.
- 선택자 필드에는 메시지 종류(facility)와 메시지 우선 순위(priority) 지정이 가능하다.
- 액션 필드에는 선택자 필드에서 설정한 메시지들이 전달될 곳을 지정 한다. ( 콘솔, 파일명, 사용자 또는 원격 시스템이 사용 될 수 있는 값)
② 메시지 종류 (facility)
- 메시지를 발생시키는 포로그램의 유형을 나타낸다.
- facility의 종류
메시지 종류 | 설명 |
* | 모든 서비스를 의미 |
auth | login과 같이 인증프로그램 유형이 발생한 메시지 |
authprive | 개인 인증을 요하는 프로그램 유형이 발생한 메시지 |
cron | cron, at과 같은 프로그램이 발생한 메시지 |
daemon | telneted, ftpd과 같이 daemon이 발생한 메시지 |
kern | 커널이 발생한 메시지 |
lpr | 프린트 유형의 프로그래이 발생한 메시지 |
mail 시스템이 발생한 메시지 | |
mark | syslogd에 의해 만들어지는 날짜 유형 |
news | 유즈넷 뉴스 프로그램 유형이 발생한 메시지 |
syslog | syslog 프로그램이 유형이 발생한 메시지 |
user | 사용자 프로세스 |
uucp | UUCP 시스템이 발생한 메시지 |
local0 ~ local7 | 여분으로 남겨둔 유형 |
※ facility 뒤에 .none을 붙이면 해당 facility를 제외하곘다는 의미 (mail.none은 메일 관련 메시지를 제외한다는 뜻이다.)
③ 메시지 우선 순위(priority)
- 위험의 정도를 가리키며 설정된 위험의 정도보다 높아야 메시지를 내보낸다.
- 레벨 앞에 '='을 사용할 경우 해당 레벨의 위험도와 같은 경우를 의미
- priority의 종류 (위험 레벨이 낮은 것부터 높은 순서로 나열)
우선 순위 | 설명 |
* | 발생하는 모든 상황에 대한 메시지 |
debug | 프로그램을 디버깅할 때 발생하는 메시지 |
info | 통계, 기본정보 메시지 |
notice | 특별한 주의를 요하나 에러는 아닌 메시지 |
warning | 주의를 요하는 경고 메시지 |
err | 에러가 발생하는 경우의 메시지 |
crit | 크게 급하지는 않지만 시스템에 문제가 생기는 단계의 메시지 |
alert | 즉각적인 조정을 해야 하는 상황 |
emerg | 모든 사용자들에게 전달되어야 할 위험한 상황 |
none | 어떠한 경우라도 메시지를 저장하지 않음 |
④ action 종류
종류 | 설명 |
file | 해당 file에 내용을 추가 |
@host | 지정된 호스트로 메시지를 보냄 |
user | 지정된 사용자의 스크린으로 메시지를 보냄 |
* | 현재 로그인되어 있는 모든 사용자의 스크린으로 메시지를 보냄 |
# vim /etc/syslog.conf 파일
1. 모든 info메시지를 기록하되, mail, news, authpriv, cron은 제외 한다.
2. 개인인증관련은 /var/log/secure에 기록 한다.
3. 모든 메일관련 메시지는 /var/log/maillog에 기록 한다.
4. cron관련 메시지는 /var/log/cron에 기록 한다.
5. 모든 emerg이상의 에러가 발생하면 모든 사용자에게 알려준다.
6. uucp, news의 crit 정보기록은 /var/log/spooler에 기록 한다.
7. 부트 메시지는 /var/log/boot.log에 기록 한다.
3. 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) 로그 |
4. Log File 분석
① 콘솔 로그 (/dev/console)
- 커널(kernel)에 관련된 내용을 시스템콘솔에 뿌려주는 로그 이다.
- messages 내용과 일치하지는 않지만 시스템에 관련된 중요한 내용들(시스템풀, 다운 등)에 대한 로그를 관리자에게 알리고자 함이 목적이다.
- 출력을 파일로 저장하는 것이 아니라 장치명(/dev/console)을 사용하여 콘솔로 로그를 뿌려준다.
- timestamp, 호스트명, 커널 메시지 내용 등이 기록 되었다.
② 시스템 로그 (/var/log/messages)
- 주로 접속 시 인증에 관한 것과 메일에 관한 내용, 시스템에 관한 변경사항 등 시스템에 관한 전반적인 로그를 기록하는 파일 이다.
- timestamp, 호스트명, 데몬명, 메시지 내용 등이 기록 된다.
- 시스템 관리자에 의해서 가장 소중하게 다루어지는 로그 이다.
(보안사고가 발생시에 가장 먼저 분석을 해야하는 파일이다.)
- 메시지 내용은 su 실패에 대한 로그, 특정 데몬이 비활성화된 로그, 부팅 시 발생된 에러 등 다양한 로그들을 포함한다.
- syslog facility에 의하여 남은 로그로 /etc/syslog.conf에서 어떻게 설정이 되어 있느냐에 따라 남는 정보의 종류가 달라진다.
- 사용명령어 : dmesg (/var/log/messages를 출력한다.)
# tail -f /var/log/messages
# dmesg
# vim /var/log/messages
③ 보안 로그 (/var/log/secure)
- 모든 접속과 관련하여 언제 어디서 어떤 서비스를 사용했는지 기록 한다.
- timestamp, 호스트명, 응용프로그램명[pid], 메시지 내용이 기록되어 있다.
- 보통 login, tcp_wrappers, xinetd 관련 로그들이 남는다.
- ps -ef라는 옵션 외에도 aux라는 옵션으로 확인 가능하다.
( 예 : ps aux | grep xinetd )
- 실행중인 xinetd의 PID저장 파일은 /var/run/xinetd.pid
# tail -f /var/log/secure
# ps aux | grep xinetd
# vim /var/log/secure
④ 메일 로그 (/var/log/maillog)
- sendmail이나 pop등의 실행에 관한 기록 이다.
- 메일을 주고받을 때에 이 로그파일에 기록(smtp와 pop에 관한 로그)
- 실행중인 sendmail의 PID저장 파일은 /var/run/sendmail.pid
- timestamp, 호스트명, 데몬명[pid], 메시지 내용 기록
# tail -f /var/log/maillog
# vim /var/log/maillog
⑤ 크론 로그 (/var/log/cron)
- 시스템의 정기적인 작업에 대한 모든 작업한 기록을 보관하고 있는 파일이다.
(crond에 의해서 생성되는 로그가 기록되는 파일)
- 크론데몬의 crond가 언제 어떤작업을 했는가를 확인 가능히다.
- crond의 의해서 실행되었던 데몬(프로세스, 응용프로그램 등)들이 기록 되었다.
- 실행중인 crond의 PID저장 파일은 /var/run/crond.pid
- /etc/ 디릭토리 밑에 있는 cron.hourly, crondaily, cron.weekly, cron.monthly 파일들에 기록되어 있는 작업을 실행한 후에 cron 파일에 log를 기록한다.
- timestamp, 호스트명, 데몬명[pid], 메시지 내용이 기록되어 있다.
# tail -f /var/log/cron
# vim /var/log/cron
⑥ 부팅로그 (/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 정보만을 출력한다. |
# last
⑨ /var/log/utmp
- 시스템에 현재 로그인한 사용자들에 대한 상태를 기록한다.
- /var/run(Linux) 혹은 /var/adm, /etc/(Solaris)등에 위치하며 바이너리 형태로 저장되어 vi 편집기 등으로 읽을 수 없다.
- utmp(x) 파일은 기본적으로 사용자 이름, 터미널 장치 이름, 원격 로그인 시 원격 호스트 이름, 사용자 로그인한 시간 등을 기록 한다.
- 사용자 명령어 : who, w, whodo, uesrs, finger
- "w"는 utmp(x)를 참조하여 현재 시스템에 성공적으로 로그인한 사용자에 대한 snapshot을 제공해 주는 명령으로 해킹 피해 시스템 분석 시에 반드시 실행해 보아야 하는 명령어이다.
# w
# who
# users
# finger
※ wtmp, wtmpx와 파일 포맷은 동일하나 ump(x)에는 현재 시스템에 대한 정보가 남고 wtmp(x)에는 누적된 정보가 남는다는 것이 가장 큰 차이점 이다.
⑩ /var/log/lastlog
- /etc/passwd 파일에 정의되어 있는 모든 계정의 최근 접속 정보를 확인 가능하다.
- 사용자의 최근 로그인 시간을 사용자 이름, 터미널, IP 주소, 마지막 로그인 시간 출력
- /var/log/lastlog 파일에 저장되고 바이너리 형태
- 사용 명령어 : lastlog
옵션 | 설명 |
-u / --login | 접속 이름 |
-t / --time | 날짜 (현재 시간부터 입력하나 날짜까지 접속자 검색) |
-h / --help | 도움말 |
# lastlog
⑪ FTP 로그 (/var/log/xferlog)
- ftp나 ncftp등의 접속이 이루어 졌을 때 이 로그파일에 기록이 된다.
- ftp를 사용했을 때 이 로그파일에 기록되고, 업로드 파일과 다운로드한 파일들에 대한 자세한 정보가 기록 저정된다.
# tail -f /var/log/xferlog
# cat xferlog | more
⑫ 웹 로그 (/var/log/httpd/access_log, /var/log/httpd/error_log)
▶ Access log
- 웹사이트에 접속했던 사람들이 각 파일들을 요청했던 실적을 기록해놓은 목록을 저장한다.
- 방문자의 IP또는 도메인 네임, 방문자가 파일을 요청한 시간, 방문자가 웹서버에 요청한 처리 내용(Get, Put, Head), 방문자가 요구한 파일의 이름, 파일의 크기 및 처리결과 등의 데이터를 제공한다.
▶ Error log
- 요청한 홈페이지가 없거나 링크가 잘못되는 등의 오류가 있을 경우에 생성된다.
⑬ /var/log/btmp
- 로그인 시도 5번 이상 실패한 로그 기록을 확인 가능하다.
- 계정명, 접속 콘솔/터미널 유무, IP, 시간 정보 출력
- /var/log/btmp에 바이너리 형태로 저장도니다.
- 사용자 명령어 : lastb
# lastb
⑭ History (해당 계정의 home directory/ .bash_history)
- 접속한 계정에서 사용했던 명령어의 내용만 보여준다.
- root의 경우 ~/.bash_history에 사용한 명령어가 저장된다.
- 저장되는 로그의 위치를 변경하려면 export HISTFILE="경로/파일이름" 을 입력 한다.
# history
⑮ Pacct (/var/account/pacct)
- 시스템에 들어온 사용자가 어떤 명령어를 실행시키고 어떠한 작업을 했는지에 대한 사용 내역 등이 기록 된다.
- 사용된 명령어의 argument와 그 명령어가 시스템 내 어느 파일 시스템의 어느 디렉토리에 실행되었는지는 기록되지 않는다.
- /var/account/pacct에 바이너리 파일로 기록된다.
- 파일 크기가 쉽게 커지기 때문에 관리가 필요한 파일 이다.
- 사용자 명령어 : lastcomm / acctcom
4. Linux Log 관리
1) logrotate 의미
- /var/log 디렉토리 안에 있는 많은 로그파일은 기존의 파일에 덧붙여지게 되므로 크기는 계속 커지게 된다.
- 이를 방지하기 위해서 로그 파일을 조각으로 나눌 수 있는데, 이런 작업을 하는 프로그램이 logrotate 이다.
2) logrotate 특징
▶ 로그 자동 관리를 위한 로테이트 처리
- crond에 의해서 주기적으로 실행되는 logrotated 데몬에 의해 수행된다.
- 로테이트(rotate) 작업내용은 로그파일 지르기(rotate), 보관, 삭제, 압축, 메일로 보내기 등
- 해당 조건체크의 실행은 crond에 의해 주기적으로 자동 실행되지만, 로테이트 작업이 발생하기 위해서는 해당 조건에 해당되어야 한다.
- /etc/logrotate.conf파일과 /etc/logrotate.d/ 디렉토리 내에 있는 파일들에서 해당 조건 설정한다.
▶ 로테이트(rotate) 처리
- 해당 날짜 또는 용량 이상이 되었을 때 로그파일을 로테이트(size)
- 로테이트 작업 직전과 직후에 특정작업을 수행 가능하다.
(prerotate/endscript, postrotate/endscript)
- 로테이트 작업을 하면서 압축 / 비압축이 가능하다. (compress, nocompress)
- 로테이트 후에 보관할 파일의 수를 지정 가능하다.(rotate)
- 로테이트 후에 생성되는 파일의 소유주와 퍼미션 등을 설정 가능하다. (create)
- 로테이트 후에 생성되는 파일의 확장자 임의로 지정 가능하다. (extension)
# vim /etc/logrotate.conf
1. weekly : 로그파일에 대해서는 일주일(weekly) 마다 rotate
2. rotate 4 : 최대 4번까지 rotate를 허용 한다.
(logfile, logfile.1 ~ logfile.4까지의 로그파일이 생성)
3. create : rotate한 후에 비어있는 로그파일을 생성
4. compress : 로그파일을 압축하는 옵션 이다. (기본 값은 활성화되어 있지 않다.) 용량문제가 크게 되지 않는다면 압축을 하지 않는 것이 좋다.
5. include /etc/logrotate.d ; 대부분 RPM패키지로 설치되는 데몬들은 이 디렉토리에 로그파일이 생성 된다.
(로그파일을 rotate시킬 수 있도록 하는 설정이다.)
6. no packages won wtmp -- we'll rotate them here : 아래에 있는 로그파일(wtmp)은 어떤 패키지에 의해서도 설정되지 않기 때문에 아래에서 따로 설정한다. 다른 로그파일들은 /etc/logrotate.d 내의 파일들에서 모두 설정한다.
/var/log/wtmp {
monthly
minsize 1M
create 0664 root utmp
rotate 1
}
한달마다 rotate 하며 최소 크기는 1M, 최대 1회까지만 그리고 rotate 관련파일인 utmp파일을 생성한다.
※ 리눅스 서버에서 logrotate은 /etc/cron.daily 디렉토리에 cron작업으로 등록되어 있어 매일이 실행되도록 설정되어 있다.
===================================================
보안기사 필수 Log 파일
===================================================
1. utmp
1) 현재 시스템에 로그인한 사용자의 로그인 정보 저장.
2) 형식 : 바이너리 형식
3) 확인 : who, w, finger (명령어)
4) 경로 : /var/run/utmp : find / | grep utmp (확인)
2. wtmp
1) 전체 사용자의 로그인 및 로그아웃 정보를 저장.
2) 형식 : 바이너리 형식
3) 확인 : last (명령어)
4) 경로 : /var/log/wtmp : find / | grep wtmp (확인)
3. secure
1) 텔넷이나 SSH 등의 원격 족속등에서 발생한 인증 정보를 로그로 저장
2) 형식 : 텍스트
3) 확인 : 파일 편집기(vi, vim), cat, tail(실시간 확인 : -f)
3) 특정파일 검색 방법 cat secure.1 | grep ftp
4. lastlog
1) 각 사용자의 최근 로그인 시간, 사용자 이름, 터미널, 마지막 로그인 시간 등이 로그로 저장
2) 형식 : 바이너리 형식
3) 확인 : lastlog
4) 경로 : /var/log/lastlog
5. btmp (= faillog)
1) 5회 이상 실패한 로그인 시도 정보를 로그로 저장
2) 형식 : 바이너리 형식
3) 확인 : lastb
4) 경로 : /usr/bin/lastb
6. messages
1) 리눅스 시스템의 로그인 기록, 디바이스 정보, 시스템 설정오류, 파일 시스템, 네트워크 세션 기록 등 전반적인 시스템 동작내용이 기록되는 로그 파일
※ iptables -L : 방화벽 정책
※ 메일 로그
7. sulog (su가 사용한 모든 흔적들을 저장)
1) su 명령 사용 내역이 기록되는 로그파일
[출처]
https://itragdoll.tistory.com/13
https://blog.naver.com/kdi0373/220522832069
'ㆍ Linux' 카테고리의 다른 글
서버 상태 파악, 리눅스, Linux (0) | 2023.06.09 |
---|---|
Ephemeral port, Well-Known Port, Registered Port, Dynamic Port, 임시 포트, 등록 포트, 시스템 포트 (0) | 2023.06.08 |
[Linux, CentOS] CentOS 8, 방화벽, firewalld (0) | 2021.01.12 |
[Linux, CentOS] CentOS 8 네트워크 관리 명령어, nmcli (0) | 2020.10.10 |
[Linux, CentOS] netstat, 네트워크 상태 확인 (0) | 2020.10.07 |