System Log
1. 로그란?
시스템에 일어나는 일련의 행위를 기록하는 시스템으로 보안 및 시스템 문제발생 원인을 찾을 때 사용하는 도구.
2. 로그의 구성
Sysglog 라는 프로그램을 이용하여 특정 위치의 로그 파일에 기록하는 형식
Message발생 -> Sysglogd message capture -> log 파일에 기록
* Message(원시 로그)의 발생
- Kernel
- User command(통칭 User)
- syslog 프로그램
- logger command
* Syslog capture 및 기록
Syslog 계열의 프로그램은 단순히 발생 된 message를 캡쳐하고, 기록여부
기록 위치에 대한 분석은 "m4"라 불리는 macro process에 의해 진행 됨.
-> 주로 사용되는 log 위치는 /var/log (다른 시스템의 경우 /var/adm)
- log file에 기록
- login 사용자의 화면에 기록
- Console 사용 시 console 화면에 기록
- log server의 log file에 기록
3. 시스템 로그 관리
시스템에서 발생되는 message를 관리하기 위해 /etc/rsyslog.conf 파일에
message 발생자 및 로그 기록 위치를 기록하여 로그 발생 시 기록되도록 관리.
포트번호 514
syslog는 UDP프로토콜사용. 파일이 오류가 나더라도 전송이 되는 거에 주 목적으로 했었는데,
너무 손상이 커졌고. 해커들이 쓰레기 UDP를 던지기 때문에 log기록들이 사라져
rsyslog에서는 TCP, UDP 프로토콜 2개다 지원하도록 만들어졌다.
[sample]
kern.notice [ tab ][ tab ] /var/log/message
* syslog 관련 설정 파일에서는 'space'를 문자로 인식하기 때문에 사용 불가.
* Selector : message를 발생시키는 것과 message 발생 시 처리 레벨을 합쳐 Selector라 부름.
kern . notice
----- -----
facility level
-> facility
1. kern : Kernel
2. daemon : Server용 프로세스
3. syslog : syslog 프로세스
4. user : user가 실행하는 명령
5. local0~7 : 테스트를 위해 사용되는 facility
-> Level
1. emerg : 위급한 레벨(시스템 패닉 상태, 블루 스크린) * 복구할 수 없음
2. alert : 긴급 상황 (시스템 패닉 직전 상태) * 복구할 수 있음(몇 10분 이내)
3. crit : 치명적 오류 발생 (H/W failed, S/W cannot load) * 시간이 장기화 되면 1-2단계로 빠진다.
4. error : S/W, H/W 발생되는 에러 * 주로 S/W에 많이 생김, 그러나 시스템이 죽진 않음
-----------------------------------> 여기까지는 필수적으로 봐야할 메세지들
5. warning : 오류가 발생할 수 있음을 경고 * 위로 갈 가능성이 있다. (보면 좋음)
6. notice : 프로그램 시작 및 정상적인 종료 등의 알림. --> 여기서 부터는 오류가 아님 (경계선)
7. info : 시스템과 별도로 정보 전달을 위해 사용. * 안봐도 됨
8. debug : 오류 검증을 위해 사용자가 직접 설정하는 단계 * [참고]에러 : 내부적요인 + 외부적요인, 버그 : 내부적인 요인
9. none : message 필터용도
10. * : 상위 none을 제외한 모든 레벨 의미 * 글자를 쓰는 것 보다 이거 써라 (명시성)
* severity 기능
로그는 레벨을 설정 할 시 자신보다 상위에 있는 레벨은 자동적으로 서비스를 하도록 설계 됨.
crit 레벨로 설정된 경우 자동적으로 alert, emerg 레벨에 대한 메시지 서비도 사용 됨.
시스템에서 발생되는 전체 로그를 기록하면 시스템 운영에 많은 도움이 되지만 발생되는
로그의 양이 많아 파티션 등 기록 장소의 저장공간이 부족해지는 원인이 되기도 함.
[예제]
* local0~7 : 해당 facility는 테스트를 위해 사용되는 메시지 발생식으로 일반
운영 상태에서는 특별한 경우를 제외하고는 사용하지 않음.
# vi /etc/rsyslog.conf
============================================================
<마지막 줄 추가>
local0.notice /var/log/testlog # write log file
local1.notice userid # display to userid terminal
local2.warn @222.116.158.69 # write to log server
============================================================
# grep local0 /etc/rsyslog.conf --> 한개만 설정 바꿨을 때는
# touch /var/log/testlog --> testlog 파일 생성
# service rsyslog restart --> 서비스명령을 통해 재시작
# chkconfig --list rsyslog
logger : 강제 메세지 발생 장치
# logger -p selector "Message"
# logger -p local0.emerg "Emerg level Message"
# logger -p local0.alert "Alert level Message"
# logger -p local0.crit "Crit level Message"
# logger -p local0.err "Err level Message"
# logger -p local0.notice "Notice level Message"
--> notice 이후 레벨부터는 내용이 안나옴, 기록 안함 (서비스 레벨이 낮기 때문에 안함)
local1.notice userid # display to userid terminal
왜 특정 유저한테 보내는 거지?
계정은 컴마하고 유저이름 적으면 추가로 적용할 수 있음
필기
log -> write
- 오류 정보 같은 사건들을 기록하는 것
- 어떤식으로 기록이 될까?
- 메세지가 발생했음 (사건 발생)
- 사건을 만든다 = 메세지를 만든다.
- 메세지 = 이벤트 = 사건발생
facility를 발생시크는 명령들은? (로그를 만들어 내는 프로그램들)
1. kernel
2. user
3. logger : 로그메세지라고 보기는 힘들지만 syslog가 잘 돌아가는지 확인하는 명령어
syslog
- 메세지 발생시킴 = facility
- 사건을 발생시킬 수 있는 것은? 프로그램
- 커널도 프로그램임 첫번째로 발생시키는 놈!
- 두번째는 user (user에서 프로그램이 실행되는 단위) - 유저가 사용하는 명령 중 관리에 사용되는 명령들
facility (로그를 만들어 내는 프로그램들)
1. kernel--> file에 기록하는 방식 (일반적인 메세지)
2. user--> Syslog
--> Console 화면 출력 (아주 중요한 메세지)
일반적으로 사용자가 보고있는 화면도 '콘솔'이라고 함. 본체에 붙어있는 화면을 '콘솔'이라고 함
3. logger| --> user 화면 (원격으로 접속할 경우는 '콘솔'이라고 안말하고 user 창이라고 함)
|
| --> log server (내 컴퓨터에서는 공격자가 지울 수 있으니 다른 시스템에 로그 정보를 백업해 두는 것)
|
|
/etc/syslog.conf
- 특성적인 명령들만 기록을 남김 (kernel, user, logger)
- 기록을 할지 말지 따짐 (syslogd)
ser 안에는 server(log무조건 남김), client(log 남길 수도 있고 안남길 수도 있음) 명령이 있음
공격자 입장
1. 해킹 후
2. 로그 내용 삭제 (사용자에 대한 정보 기록이 없어짐)
log 에 기록되는 것들
- 모든 것을 다 기록하나?
- nope 필요없는 것들은 선별적으로 기록 안하게끔 해야 함
윈도우에도 리눅스 같은 로그가 있음
시스로그 = 이벤트로그 = 이벤트뷰어
( 제어판 → → )
보안에서는 레벨을 안적음 (다 중요하기 때문)
성공 실패만 적음 (키워드)
로그인과 로그아웃 같은 기록 정보가 남는다.
로그에는 시간정보가 정확하게 나와있어야 하고
사건 발생시간이 아닌 시스로그가 잡아서 기록하기 직전 (잡는 시간 or 기록 시간 ) 이다.
사건 발생시간은 적혀있는 시간보다 앞선 시간이라고 예상하면 된다.