시스템 로그 설정과 관리
① 로그저장경로
리눅스 | 유닉스 |
/var/log/ /etc/syslog.conf 파일에서 시스템 로그 파일 위치 정의 |
/var/admin/ |
② 주요로그파일
파일명 | 내용 | 리눅스(utmp) | 유닉스(utmpx) | ||
명령어 | 경로 | 명령어 | 경로 | ||
utmp(x) | 현재 로그인한 사용자의 상태정보 - binary 파일 |
"w" "who" "finger" |
/var/run/utmp | "w" "who" "finger" |
/var/admin/utmpx |
wtmp(x) | 사용자의 성공한 로그인/로그아웃 정보, 시스템의 Boot/Shutdown 정보에 대한 히스토리 - binary 파일 |
"last [계정명]" | /var/log/wtmp | "last [계정명]" | /var/adm/wtmpx |
lastlog | 가장 최근에(마지막으로) 성공한 로그인 기록 - binary 파일 |
"lastlog -u [계정명]" "lastlog -t [일수]" "finger" |
/var/log/lastlog | "finger" | /var/adm/lastlog |
btmp (리눅스) loginlog (유닉스) |
실패한 로그인 시도 -리눅스만 binary파일 -유닉스는 5회 이상 실패시 남김 |
"lastb [계정명]" 실패한 모든 로그 남김 |
/var/log/btmp | - | /var/adm/loginlog |
sulog (유닉스) |
su 명령을 사용한 결과 | - | /var/log/secure | - | /var/adm/sulog (+ : 성공, - : 실패) |
acct/ pacct |
로그인한 모든 사용자가 로그아웃할 때까지 입력한 명령어,터미널,프로세스 시작 시간 등 - binary 파일 - 기본 생성되는 파일이 아니므로 accton '경로' 명령 실행해 활성화 필요. |
"lastcomm [계정명]" | /var/account/pacct (S: 슈퍼유저/root에 의해 실행, F: exec 없이 fork에 의해 실행) X: SIGTERM시그널에 의해 종료) |
"lastcomm [계정명]" | /var/adm/pacct |
history | 계정별로 실행한 명령어에 대한 기록 - 텍스트파일 |
"history" | 홈 디렉터리 내 ".쉘종류_history" |
"history" | 홈 디렉터리 내 ".쉘종류_history" |
secure (Linux) |
사용자/그룹 생성/삭제 사용자 인증(su 로그인 등)에 대한 정보 - 서버 보안에서 가장 중요 |
- | /var/log/secure | - | - |
messages (Linux) |
리눅스 시스템의 가장 기본적인 시스템 로그파일 - 운영에 대한 전반적인 메시지 -주로 시스템 데몬들의 실행상황과 내역, 사용자들의 접속정보, TCP Wrapper 접근제어 정보 등을 저장한다. |
- | /var/log/messages | - | - |
dmesg (Linux) |
리눅스가 부팅될 때 출력되는 모든 메시지 - 부팅 시 에러나 조치사항을 살펴보려면 이 파일 참조 - 텍스트 파일 |
"dmesg" | /var/log/dmesg | - | - |
boot.log (Linux) |
리눅스가 부팅될 때 파일시스템에 대한 체크, 서비스 데몬들의 실행 상태 등을 기록하고 있는 로그파일. 성공/실패 여부 확인 가능 | - | /var/log/boot.log | - | - |
cron (Linux) |
리눅스 시스템에서 동작중인 cron 데몬이 수행한 정기적인 작업을 기록한 로그파일 | - | /var/log/cron | - | - |
maillog (Linux) |
시스템에서 동작중인 메일서버의 메일 송수신 관련 작업을 기록한 로그파일 | - | /var/log/maillog | - | - |
xferlog (Linux) |
리눅스 시스템의 FTP 서비스 로그파일 -vsFTP, ProFTP 등 다양한 FTP 서버 프로그램에서 서비스 내역을 기록 -FTP 접속 일시, 원격 호스트오 ㅏ사용자 정보, 업로드/다운로드한 파일 등 다양한 정보를 상세하게 기록 |
- | /var/log/xferlog | - | - |
② 주요로그파일 실습(xferlog,messages)
더보기
더보기
더보기
[xferlog 파일]
cat /var/log/xferlog
#전송날짜및시간(일시)
#전송소요시간(초단위)
#원격호스트주소
#전송파일크기(byte)
#전송파일명
#전송유형(a:askii,b:binary)
#액션플래그(_:액션없음,C:파일압축,U:압축된파일해제,T:파일이아카이브됨(tar로묶임)
#전송방향(i:서버로 업로드,o:서버에서 다운로드,d:서버파일 삭제) -> 서버기준으로생각
#접근방식(r: real-로컬시스템계정, a:anonymous-익명계정.비밀번호x, g:guest-게스트계정)
#사용자명
#서비스명
#인증방법(0:없음, 1:RFC931 인증)\
#인증된 사용자 ID: 인증메소드에 의해 반환되는 사용자 ID, *인 경우 이용이 불가능한 상태
#완료상태(c:complete-성공,i:incomplete-실패)
Thu Nov 11 08:45:23 2024 1 192.168.1.15 156738 /path/to/upload/file.txt b _ o r user ftp 0 * c
Thu Nov 11 09:12:45 2024 2 192.168.1.20 234512 /path/to/download/file2.txt b _ i r user ftp 0 * c
Thu Nov 11 10:01:13 2024 1 192.168.1.10 34578 /path/to/upload/image.jpg b _ o r user ftp 0 * c
[messages 파일]
cat /var/log/messages
#로그메시지생성일시 #메시지생성호스트이름 #메시지생성프로세스이름 #메시지생성한프로세스ID #프로세스가생성한메시지
Nov 11 10:20:15 hostname systemd[1]: Starting System Logging Service...
Nov 11 10:20:15 hostname systemd[1]: Started System Logging Service.
Nov 11 10:20:16 hostname kernel: [ 0.000000 ..
④ syslog 설정 및 관리
-syslog API를 사용해 발생하는 로그를 syslogd 데몬프로세스가 syslog.conf 파일을 참조하여 지정한 로그파일,콘솔,외부서버등에 로그를 기록한다.
-syslog는 정보보호특성(기밀,무결,가용)을 고려하지 않고 개발되어 다음과 같은 보안권고사항을 가지고 있다.
- 신뢰성 보장 : 연결지향 프로토콜인 TCP 이용
- 기밀성 보장 : payload를 보호할 수 있는 BEEP 이용
- BEEP : 연결 지향, 비동기적인 연결을 위한 응용프로그램 프로토콜 프레임워크. 인증,프라이버시,재전송을 통한 신뢰성을 보장한다.
-최근 리눅스에서는 기존 syslog를 개선한 rsyslog를 주로 사용
-/etc/syslog.conf 파일: 시스템 로그 데몬(syslogd)이 실행될 때 참조되는 로그설정 파일로서 어떤 로그를 어디에 남길지 로그 저장 규칙이 정의되어 있다.
[syslog 파일 포맷 형식]
facility.priority; facility.priority; ... action(logfile-location)
[facility] : 로그를 생성하는 서비스
facility 설명 * 모든서비스 auth
authpriv인증(authentication) 및 보안 관련 메시지 cron cron,atd 데몬에 의해 발생되는 메시지 daemon telnet, ftp 등과 같은 데몬에 의한 메시지 kern kernel에 의한 메시지. 커널메시지 lpr 프린터 데몬인 lpd에 의해 발생되는 메시지 sendmail, pop, qmail 등의 메일시스템에서 발생되는 메시지 news USENET 등과 같은 뉴스시스템에 의해 발생되는 메시지 uucp uucp(초기에 만들어진 유닉스 컴퓨터를 연결하는 국제적인 공동 광역 통신망)에의한 시스템 메시지 user 사용자에 의해 생성된 프로세스 syslog slslogd에 의해 발생되는 메시지 local0~local7 시스템 부팅 메시지 기록, 기타 여분 서비스(확장)에 사용하기 위함.
[priority] : 로그 수준(level)
- 지정한 수준 이상의 상황이 발생했을 때 로그가 남게 된다.
- *: 모든 로그 수준의 로그를 남김, none: 어떤 경우에도 남기지 않음
△
높음
레벨
낮음
▽priority 설명 Emergency
(emerg)시스템이 전면 중단되는 패닉상태
전체공지가 필요
system is unusablealert
(alert)즉각적인 조치가 필요한 상황(DB 오류 등)
action must be taken immediatlyCritical
(crit)하드웨어 등의 심각한 오류가 발생하 ㄴ상황
critical conditionError
(err)일반적인 에러/오류가 발생한 상황
error conditionWarning
(warning)경고 메시지
warning conditionNotice
(notice)에러/오류는 아니지만 관리자의 조치가 필요한 상황
normal, but significant conditionInformation
(info)의미 있는 정보 관련 메시지
Information messagedebug
(debug)디버깅용 메시지
debug-level message
[action]: 로그를 어디에 남길 것인지 결정
로그파일 파일명(경로) 지정(ex. /var/log/secure) 콘솔 /dev/console 지정시 콘솔에 출력 원격로그서버 "@호스트 주소"를 통해 지정한 호스트로 로그를 남김 user 지정된 사용자의 스크린으로 메시지를 보냄 (ex. root) * 현재 로그인된 모든 사용자의 스크린으로 메시지를 보냄
⑤ 리눅스 로그 관리
① 로그 모니터링 : 텍스트 파일 형식의 로그일 경우, 'tail -f /var/log/messages"와 같은 명령어로 필요한 것만 확인하자.
② 로그파일 순환
- 순환, 압축과 같은 기능을 하는 lograte 파일을 이용해 디스크 사용률 100% 되는 것을 막자
- cron에 일단위로 등록하여 주기적으로 실행하게 한다.
- 데몬 설정 파일 : /etc/logrotate.conf (데몬에 대한 전체적인 설정)
cat /etc/logrotate.conf # daily,monthly, weekly : 일,월,주 단위로 로그파일 순환 weekly # rotate n : 순환 로그파일의 개수를 n개로 설정. 로그파일이 N개가 되면 새롭게 순환 rotate 4 # create [퍼미션] [소유자] [소유그룹] : 순환시 새롭게 로그파일을 생성하며 퍼미션, 소유자, 소유그룹 지정이 가능 create # dateext : 로그파일의 확장자. 날짜를 붙여서 보관 ex. access_log_20241112 dateext # compress, nocompress : 로그파일을 압축/압축없이 보관 compress # size n : 지정한 크기가 되면 로그파일 순환 100K # 해당 디렉터리에 있는 개별 데몬/프로세스 설정 파일을 포함 include /etc/logrotate.d
- 설정 디렉터리 : /etc/logrotate.d (적용할 프로세스에 대하여 개별설정)
- 해당 디렉터에 프로세스명으로 파일이 있음. 거기에서 개별 프로세스 설정하면됨.
'정보보안 > 시스템 보안' 카테고리의 다른 글
[시스템 취약점] OS별 계정 관리 (0) | 2024.11.12 |
---|---|
[UNIX/Linux 기본학습] 시스템 해킹 (0) | 2024.11.12 |
[UNIX/Linux 기본학습] 서버보안3 (0) | 2024.11.11 |
[UNIX/Linux 기본학습] 서버보안2 (0) | 2024.11.11 |
[UNIX/Linux 기본학습] 서버보안1 (0) | 2024.11.10 |