리눅스(RHEL7)

리눅스 서버 보안관리의 로그분석 rsyslog

operationsystem 2020. 3. 9. 18:10
  • rsyslog

 리눅스 서버에서 보안관리중 핵심인 로그분석을 한다

과거에는 syslog 라고 칭하였으나 기능이 개선되어 rsyslog로 바뀌었다

 

  • /etc/rsyslog.conf  설정파일

설정파일의 default 화면

( /etc/syslog.conf 파일 )

info메시지를 기록하되, mail, news, authpriv, cron은 제외

개인인증관련은 /var/log/secure에 기록

모든 메일관련 메시지는 /var/log/maillog에 기록

cron관련 메시지는 /var/log/cron에 기록

모든 emerg이상의 에러가 발생하면 모든 사용자에게 알려줌

uucp, news의 crit 정보기록은 /var/log/spooler에 기록 

부트 메시지는 /var/log/boot.log에 기록

 

 

- rsyslog.conf 설정파일은 facility, priority, action 의 규칙으로 이루어져 있다

 

(우선순위 규칙)

facility.priority; facility.priority; facility.priority; ··· ···   action(logfile-location)

-> facility 서비스데몬에 대해 priority 레벨이상의 상황이 발생한 경우 action의 형식(파일, 콘솔, 외부서버 등) 으로 로그를 남겨라

 

 

 

 

 

 

 

 

  • facility

로그를 출력하는 각종 서비스, 프로그램을 정의

로그 메시지를 발생시키는 프로그램 유형

 

(서비스 종류)

* :  모든 서비스

ㆍauthpriv : 인증 및 보안 관련 메시지

ㆍcron : cron 데몬과 atd데몬에 의해 발생되는 메시지

ㆍdaemon : telnet, ftp 등과 같은 데몬에 의한 메시지

ㆍkern : kernel에 의한 메시지

ㆍlpr : 프린터 데몬인 lpd에 의해 발생되는 메시지

ㆍmail : sendmail, pop, qmail 등의 메일 시스템에서 발생되는 메시지

ㆍnews : USENET 등과 같은 뉴스시스템에 의해 발생되는 메시지

ㆍuser : 사용자에 의해 생성된 프로세스

ㆍsyslog : syslogd에 의해 발생되는 메시지

ㆍlocal0 ~ local7 : 시스템 부팅 메시지 기록, 기타 여분 서비스에 사용하기 위함

 

  • priority

로그의 중요도를 구분하는 구분 값, 로그 수준(level)

(로그의 레벨, 중요도)


높음    

 ㆍ           emerg : 시스템이 전면 중단되는 패닉상태, 전체 공지가 필요한 상황 (system is unusable)

 ㆍ           alert : 즉각적인 조치가 필요한 상황 (action must be taken immediately)

 ㆍ           crit : 하드웨어 등의 심각한 오류가 발생한 상황 (critical condition)

중간          err : 일반적인 에러/오류가 발생한 상황

 ㆍ           warning : 경고 메시지

 ㆍ           notice : 에러/오류는 아니지만 관리자의 조치가 필요한 상황

 ㆍ           info : 의미 있는 정보 관련 메시지

 ㆍ           debug : 디버깅용 메시지

낮음          

 

 

 

 

 

 

 

  • action

특정 facility의 지정된 priority에 해당하는 로그가 발생했을 경우 action을 정의

-> 어떠한 에러로 지정되고 해당하는 레벨의 로그가 발생했을 경우 어디에 남길 것인지 결정

(로그를 남길 위치)

ㆍ파일 : 파일명(경로) 지정 ex) /var/log/messages

ㆍ콘솔 또는 터미널 : /dev/console로 지정 시 콘솔 출력

ㆍ원격 로그 서버 : "@호스트 주소"를 통해 지정한 호스트로 로그를 보낸다 ex) @192.168.56.3

ㆍuser : 지정된 사용자의 스크린으로 메시지를 보낸다

ㆍ* : 현재 로그인 되어있는 모든 사용자의 스크린으로 메시지를 보낸다 

 

  • # systemctl restart rsyslogd -> 재기동하기

 

( 로그 규칙 해석)

ex)

con.none

=> cron 이라는 facility 제외

cron. != info

=> info라는 priority 제외

 

ex) mail 로그

mail.* ; mail. !=info /var/log/maillog

=> mail 관련한 모든 정보는 /var/log/maillog에 기록하고 info 수준의 로그는 제외한다