개 요
리눅스 서버를 운영하며, 로그를 수집하고 확인하는 것은 굉장히 중요한 부분입니다.
로그를 통해 시스템 문제를 검토하고 모니터링하여 문제를 해결할 수 있습니다.
물리적 장치나 애플리케이션 / 데몬 / 네트워크나 커널 등의 여러 로그가 서버에서 생성되고 있습니다.
이런 로그를 빠르고 효율적으로 관리, 저장하는 것이 필요합니다.
Rsyslog: Rocket Fast System for Log processing
rsyslog는 서버 내에 생성되는 다양한 로그를 로그파일이나 콘솔, 또는 외부 서버로 저장할 수 있게 해주는 프로그램입니다. 가장 널리 사용되는 오픈 소스 로깅 프로그램이며, CentOS 7 또는 RHEL 7의 기본 로깅 서비스이기도 합니다.
https://www.rsyslog.com/doc/master/index.html
rsyslogd라는 데몬 프로세스를 통해 작업이 이루어지며, 이 과정에서 rsyslog.conf 설정 파일을 참조합니다.
syslog와 비교하여 주목할 만한 장점 3가지
- SSL, TLS
- Database export 지원
It supports, among others, MySQL, PostgreSQL, failover log destinations, ElasticSearch, syslog/tcp transport, fine grain output format control, high precision timestamps, queued operations and the ability to filter on any message part.
- 멀티쓰레드 지원
Rsyslog.conf
위 구성도 중 관리자가 주로 조작하는 것은 rsyslog.conf 파일입니다. 서버의 파일 시스템상 /etc/syslog.conf 에 위치하고 있으며, 수집하는 로그를 어떻게, 어디에 저장할지 설정할 수 있습니다.
원격 서버로 로그를 보낼 경우 포트는 514번 포트를 사용하며 UDP, TCP 방식으로 전송이 가능합니다.
아래의 포맷을 가지고 어떤 서비스가 어떠한 상황일 때 어디로 로그를 보낼 지 설정합니다.
3가지의 요소는 대표적으로 아래의 값들을 선택해 입력함으로써 설정 가능합니다.
facility : 어떤 서비스인지
kind | Description |
* | 모든 서비스 |
daemon | 데몬에 의한 메시지 |
cron | cron 데몬에 의해 발생되는 메시지 |
kern | kernel 메시지 |
authpriv | 인증 및 보안 메시지 |
syslog | syslogd 관련 메시지 |
user | 사용자로부터 생성된 프로세스 |
local0 ~ local7 | 시스템 부팅 메시지 기록 등 |
priority : 어떤 상황일 때
kind | Description |
* | 모든 상황 |
emerg | 시스템이 사용 불가능한(unusable) 상태 |
alert | 즉각적인 조치가 필요한 상황 |
crit | 하드웨어 등의 심각한 오류가 발생한 상황 (critical condition) |
err | 일반적인 에러/오류가 발생한 상황 |
warning | 경고 메시지 |
notice | 에러/오류는 아니지만 관리자의 조치가 필요한 상황 |
info | 의미 있는 정보 관련 메시지 |
debug | 디버깅용 메시지 |
action : 어디로 로그를
action | 설명 |
* | 현재 로그인한 모든 사용자의 스크린으로 메세지를 보냄 |
host | 지정된 호스트로 메세지를 보냄 |
user | 지정된 사용자의 스크린으로 메세지를 보냄 |
file | 특정 파일에 메세지를 보냄 |
example - UDP로 원격 서버에 보낼 경우
/etc/rsyslog.conf 파일의 아래 항목을 주석 해제
#$ModLoad imudp
#$UDPServerRun 514
->
$ModLoad imudp
$UDPServerRun 514
UDP를 사용할 경우 목적지 앞에 @ 를 사용합니다.
*.info @원격 서버 IP or host
#Port가 다를 경우
*.info @원격 서버 IP or host:포트번호
example - TCP로 원격 서버에 보낼 경우
/etc/rsyslog.conf 파일의 아래 항목을 주석 해제
#$ModLoad imtcp
#TCPServerRun 514
->
$ModLoad imtcp
$TCPServerRun 514
TCP를 사용할 경우 목적지 앞에 @@ 를 사용합니다.
*.info @@원격 서버 IP or host
#Port가 다를 경우
*.info @@원격 서버 IP or host:포트번호
[Network] 11. 취약점 기반 암호화 통신 위협 이해