어렵당
3. 리눅스/유닉스 로그파일 본문
리눅스/유닉스 로그파일
-------------------------------------
utmp(or utmpx)
: 현재 로그인한 사용자의 상태정보를 담고있는 로그파일
(( 리눅스 ))
- 확인 명령어 : w, who, finger
(w 명령어를 통해서 IDLE 유휴시간(명령없이 대기하고있는 시간)과 터미널 정보 그리고 어떤 명령을 실행했는지도 알수있기 때문에 주로 사용)
- 파일경로 : /var/run/utmp
(( 유닉스 ))
- 확인 명령어 : 리눅스와 동일
- 파일경로 : /var/adm/utmpx
-------------------------------------
wtmp(or wtmpx)
: 사용자의 성공한 로그인/로그아웃 정보, 시스템 Boot/Shutdown 정보에 대한 히스토리를 담고있는 로그파일
(( 리눅스 ))
- 확인 명령어 : last
- 파일경로 : /var/log/wtmp
(( 유닉스 ))
- 확인 명령어 : 리눅스와 동일
- 파일경로 : /var/adm/wtmpx
-------------------------------------
lastlog
: 가장 최근에(마지막으로) 성공한 로그인 기록을 담고있는 로그파일
(( 리눅스 ))
- 확인 명령어 : lastlog, finger 계정명
lastlog - u 계정명 (해당 계정의 정보만 확인 가능)
lastlog -t 일수 (해당 일수 이내에 접속한 기록 확인 가능)
finger 계정명 (해당 계정의 정보 확인 가능)
- 파일경로 : /var/log/lastlog
(( 유닉스 ))
- 확인 명령어 : finger 계정명 (유닉스는 finger만 지원)
- 파일경로 : /var/adm/lastlog
-------------------------------------
btmp / loginlog
: 실패한 로그인 시도에 대한 기록을 담고있는 파일
(( 리눅스 ))
- 확인 명령어 : lastb
- 파일 경로 : /var/log/btmp
(( 유닉스 )) ( 5회 이상 실패한 로그만 기록 )
- 확인 명령어 : 파일 직접 확인(vi, cat, tail, top, more 등)
- 파일 경로 : /var/adm/loginlog
-------------------------------------
sulog
: su(switch user) 명령을 사용한 결과를 저장한 파일
(( 리눅스 ))
- 확인 명령어 : X ( 리눅스는 별도의 로그파일이 없고 /var/log/secure 로그파일에서 확인 가능 )
- 파일경로 : /var/log/secure
(( 유닉스 ))
- 확인 명령어 : 파일 직접 확인(vi, cat, tail, top, more 등)
- 파일경로 : /var/adm/sulog
(로그내용중 +는 su성공, -는 su실패를 의미)
-------------------------------------
acct / pacct
: 시스템에 로그인한 모든 사용자가 로그아웃할때까지 입력한 명령어/터미널 종류/프로세스 시작 시간 등을 저장한 로그
: 로그가 워낙 많이 저장되기 때문에 기본적으로 비활성화되어있음
(( 리눅스 ))
- 확인 명령어 : lastcomm
- 활성화 명령 : accton /var/account/pacct
- 파일경로 : /var/account/pacct
(( 유닉스 ))
- 확인 명령어 : 리눅스와 동일
- 활성화 명령 : /usr/lib/acct/accton /var/adm/pacct
- 파일경로 : /var/adm/pacct
* 특정 명령어를 사용한 사용자 조회
'lastcomm 명령어' 또는 'lastcomm --command 명령어'
* 특정 사용자가 실행한 명령어 조회
'lastcomm 사용자' 또는 'lastcomm --user 사용자'
-------------------------------------
history
: 계정별 실행한 명령어에 대한 기록을 저장한 파일
(( 리눅스 ))
- 확인 명령어 : history
- 파일경로 : /home/계정명/.bash_history ( 계정별 홈 디렉터리에 숨김파일로 존재)
(( 유닉스 ))
- 확인 명령어 : 리눅스와 동일
- 파일경로 : 리눅스와 동일
-------------------------------------
secure
: 사용자/그룹 생성 및 삭제, 로그인 등의 사용자 인증에 대한 정보를 기록하고 있는 로그파일
(( 리눅스 ))
- 확인 명령어 : 파일 직접 확인(vi, cat, tail, top, more 등)
- 파일경로 : /var/log/secure
유닉스는 없음
-------------------------------------
messages
: 리눅스 시스템의 가장 기본적인 시스템 로그파일로 시스템 운영에 대한 전반적인 메시지를 저장하고 있다
: 주로 시스템 데몬들의 실행상황과 내역, 사용자들의 접속정보, TCP Wrapper 접근제어 정보 등을 저장
: 무차별 모드(Promiscuous Mode) 설정 시 해당 로그도 저장
(( 리눅스 ))
- 확인 명령어 : 파일 직접 확인(vi, cat, tail, top, more 등)
- 파일경로 : /var/log/messages
유닉스는 없음
-------------------------------------
dmesg
: 리눅스가 부팅될 때 출력되는 모든 메시지를 기록. 부팅 시의 에러나 조치사항을 확인할때 필요
(( 리눅스 ))
- 확인 명령어 : 파일 직접 확인(vi, cat, tail, top, more 등)
- 파일경로 : /var/log/dmesg
유닉스는 없음
-------------------------------------
boot.log
: 리눅스가 부팅될 때 파일시스템에 대한 체크, 서비스 데몬들의 실행 상태 등을 기록하고 있는 로그파일로 성공/실패 여부를 확인할 수 있다
(( 리눅스 ))
- 확인 명령어 :파일 직접 확인(vi, cat, tail, top, more 등)
- 파일경로 : /var/log/boot.log
유닉스는 없음
-------------------------------------
xferlog
: 리눅스 시스템의 FTP 서비스 로그파일
: vsFTP, ProFTP 등 다양한 FTP 서버 프로그램에서 서비스 내역을 기록하고 있다
: FTP 접속 일시, 원격 호스트와 사용자 정보, 업로드/다운로드한 파일 등 다양한 정보를 상세하게 기록한다
(( 리눅스 ))
- 확인 명령어 : 파일 직접 확인(vi, cat, tail, top, more 등)
- 파일경로 : /var/log/xferlog
유닉스는 없음
* ftp에서 쓰는 명령어 : put(업로드), get(다운로드)
* xferlog 로그 형식 예시
: Fri Sep 13 09:20:30 2024 3 192.168.0.20 34200 /home/user/testfile.html b T i g testuser ftp 1 * i
: Fri Sep 13 09:20:30 2024 / 3 / 192.168.0.20 / 34200 / /home/user/testfile.html / b / T / i / g / testuser / ftp / 0 / * / i
- 전송 날짜 및 시간 : Fri Sep 13 09:20:30 2024
- 전송 소요시간(초 단위) : 3초
- 원격 호스트 주소(접속 사용자 IP) : 192.168.0.20
- 전송 파일 크기(byte 단위) : 34200byte
- 전송 파일명 : /home/user/testfile.html
- 전송 유형 : b
a : ascii(아스키/텍스트)
b : binary(바이너리)
- 액션 플래그 : T
_ : underbar(액션없음)(실무에선 이게 대부분)
C : compressed(파일이 압축됨)
U : uncompressed(압축된 파일이 해제됨)
T : archived(tar)(파일이 아카이브됨)(tar로 묶임)
- 전송 방향 : i (방향은 서버 기준)
i : incoming(서버로 파일 들어옴 = 업로드)
o : outgoing(서버에서 파일이 나감 = 다운로드)
d : delete(서버에 있는 파일 삭제)
- 접근 방식 : g
r : real(로컬 시스템 계정)
a : annoymous(익명 계정)(ID가 annoymous이고 비밀번호가 없는 계정)
g : gurest(게스트 계정)(FTP서버에서 FTP접속만을 위해서 만든 가상의 계정)
- 사용자명 : testuser
(?로 되어있으면 annoymous계정)
- 서비스명 : ftp
- 인증방법 : 0
0 : 없음(보통 0)
1 : RFC 931인증
- 인증된 사용자 ID : *
- 완료 상태 : i
c : complete(전송 성공)
i : incomplete(전송 실패)
* ascii(아스키)와 binary(바이너리) 설명
ascii(아스키) : 개행처리 제어문자를 자동으로 변환해주는 모드
OS마다 텍스트 데이터의 개행처리 제어문자(행과 행을 구분할때 사용한는 문자)가 서로 다르다
리눅스/유닉스 개행처리 제어문자 : 0x0A (LF : Line Feed)를 사용 - 커서 위치를 다음으로 옮기겠다는 뜻(엔터 버튼)
윈도우 시스템 개행처리 제어문자 : 0x0D0A (CR : Carriage Return / LF : Line Feed)
이때 아스키로 전송하면 OS에 맞게 개행처리 제어문자를 변환
binary(바이너리) : 원본 그대로 전달
-------------------------------------
cron
: 시스템 동작중인 cron 데몬이 수행한 정기적인 작업을 기록한 로그파일
: 스케쥴링 작업 로그
(( 리눅스 ))
- 확인 명령어 : 파일 직접 확인(vi, cat, tail, top, more 등)
- 파일경로 : /var/log/cron
유닉스는 없음
-------------------------------------
maillog
: 시스템에서 동작중인 메일서버(sendmail 등)의 메일 송수신 관련 작업을 기록한 로그파일
(( 리눅스 ))
- 확인 명령어 : 파일 직접 확인(vi, cat, tail, top, more 등)
- 파일경로 : /var/log/mailog
유닉스는 없음
-------------------------------------
syslog
: 유닉스 시스템 표준 인터페이스(API)를 통해 커널 및 응용 프로그램에 의해 발생되는 로그를 체계적으로 생성 및 관리
: 응용프로그램/커널 -> API -> syslogd(로그데몬) -> syslog.conf(설정파일) 참조 -> 로그 전송(콘솔/사용자/서버/파일)
- 확인 명령어 : 파일 직접 확인(vi, cat, tail, top, more 등)
- 파일경로 : /etc/syslog.conf
- syslog.confg 파일 포맷 : facility.priority;facility.priority;facility.priority;... action
- facility : 로그 생성 서비스
(*, auth, authpriv, cron, daemon, kern, ipr, mail, news, uucp, user, syslog, local0~local7)
- priority : 로그 수준(level)
1. Emergency (emerg)
: 시스템이 전면 중단되는 패닉 상태, 전체 공지가 필요한 상황
2. alert (alert)
: 즉각적인 조치가 필요한 상황(시스템 데이터베이스 오류 등)
3. Critical (crit)
: 하드웨어 등의 심각한 오류가 발생한 상황
4. Error (err)
: 일반적인 에러/오류가 발생한 상황
5. Warning (warning)
: 경고 메시지
6. Notice (notice)
: 에러/오류는 아니지만 관리자의 조치가 필요한 상황
7. Information (info)
: 의미 있는 정보 관련 메시지
8. debug (debug)
: 디버깅용 메시지
+
none
: 어떤한 경우라도 로그를 남기지 않겠다는 의미
- action : 로그를 어디에 남길것인지 결정
1. 로그파일 : 파일명 경로 지정( ex : /var/log/secure )
2. 콘솔(보통 모니터 화면을 의미) : /dev/console
3. 원격 로그 서버 : @호스트 주소 ( ex : @192.168.0.20 )
4. user : 특정 사용자의 스크린으로 로그 전송( ex : root )
5. * : 현재 로그인된 모든 사용자의 스크린으로 전송
- syslog.confg 파일 포맷 예시
*.info;mail.none /dev/console
: 모든 서비스에 대한 info수준 이상의 로그를 /dev/console에 출력하되 mail서비스에 대해서는 기록하지 않는다는 의미
uucp,news.crit /var/log/secure
: uucp,news 서비스에 대한 crit수준 이상의 로그를 /var/log/secure에 기록하라는 의미
* 로그 수준 지정 시 해당 수준 이상의 상황이 발생했을때의 로그가 남게된다
(ex : alert 지정 시 alert와 emergency 로그가 남게됨)
* syslog는 UDP/514 를 사용하나 UDP는 스니핑의 위험이 있기 때문에서 RFC 3195에서는 TCP/514와 payload를 보호할 수 있는 BEEP 프로토콜을 이용하도록 권고하고 있다
* 최근 리눅스는 rsyslog를 사용 ( 설정파일 : /etc/rsyslog.conf )
* 설정 변경 시 syslogd(rsyslogd) 데몬을 재시작해주어야 한다. ( 명령 : service syslogd restart )
-------------------------------------
rotate
: 로그 파일 순환 관리
: 로그파일을 그대로 쌓아두면 크기가 커져 관리하기가 어려워지며 시스템 장애가 발생할수있기 때문에 사용
데몬위치 : /usr/sbin/logrotate
데몬 설정파일 : /etc/logrotate.conf
daily, monthly, weekly
: 일 단위, 월 단위, 주 단위 로그파일 순환
rotate n
: 순환 로그파일의 개수를 n개로 설정해서 보관( ex : weekly rotate 4 -> 4주 로그 보관 )
create [퍼미션] [소유자] [소유그룹]
: 순환 시 새롭게 로그파일을 생성(권한 지정가능)
dateext
: 로그파일의 확장자로 날짜를 붙여서 식별하기 편하게 보관( ex : logfile-20240412)
compress, nocompress
: 로그파일을 압축 또는 압축 없이 보관
size n
: 크기 기준으로 로그파일 순환
include : /etc/logrotate.d
: 해당 디렉토리에 있는 개별 프로세스/데몬 설정파일을 포함
logrotate할 프로세스의 개별 설정 디렉터리 : /etc/logrotate.d
ex : httpd, syslog, tomcat.. 등등
ex : /etc/logrotate.d/httpd 파일을 보면 아래와 같이 되어있다
/var/log/httpd/*log{
: 해당 디렉터리에 있는 모든 로그에 적용
missingok
: 로그파일이 없어도 오류를 발생시키지 않는다
delaycompress
: 첫번째 로그파일을 만들때는 압축하지 않고 다음 파일부터 압축시킨다
notifempty
: not if empty의 의미로 로그파일이 비어있는 경우 순환하지 않음(if empty의 반대)
dateext
: 로그파일의 확장자로 날짜를 붙여서 저장한다
sharedscripts
: 로그파일이 여러개 있어도 스크립트를 공유하여 prerotate, postrotate 스크립트를 한번만 실행 ( 재실행 같은 명령를 주로 사용하는데 로그 파일별로 재실행시킬 필요가 없기때문에 한번만 실행시킬려고 넣는 옵션)
postrotate
/bin/kill -HUP 'cat /var/run/httpd/httpd.pid 2>/dev/null' 2>/dev/null || true
endscript
: 로테이션 이후 실행할 명령/스크립트 파일을 postrotate 와 endscript 사이에 넣어서 실행시킬수 있다
: 서버를 재기동하지 않고 설정파일을 다시 읽게끔 하는 방법으로 SIGHUP 시그널이 있음
: 오류는 버리고 /var/run/httpd/httpd.pid 을 읽어서 얻은 PID값으로 SIGHUP 시그널을 보낸다(재기동 없이 적용되게끔 한다)(만약 PID 프로세스가 없어서 시그널 전송을 실패해도 수행 결과가 참이되도록 한다)
}
상황 파일(logrotate를 수행한 작업내역) : /var/lib/logrotate.status
cron(일단위)(cron데몬에 의한 스케쥴러 파일) : /etc/cron.daily/logrotate
'학습 > 알기사 정보보안기사 정리' 카테고리의 다른 글
6. 애플리케이션 보안 (0) | 2024.10.13 |
---|---|
5. 네트워크 보안 (1) | 2024.10.05 |
2. 리눅스/유닉스 기본 (0) | 2024.10.04 |
4. 시스템 보안 (1) | 2024.10.04 |
1. 윈도우 보안 (0) | 2024.10.03 |