[Linux] remote host의 로그 수집을 위한 rsyslog 서버 구축을 5분만에 끝내는 방법

rsyslog server 구축

rsyslog server 구축


성격이 급하신 분들은 설명을 건너뛰고 바로 진행하셔도 됩니다. rsyslog 서버에 UDP와 TCP를 이용해서 로그를 전송받을 수 있는데, 아래와 같은 차이점이 있습니다.

항목 UDP(514/udp) TCP(514/tcp)
전송 방식 비연결형 (Connectionless) 연결형 (Connection-oriented)
속도 빠름 (오버헤드 작음) 상대적으로 느림 (3-way handshake 등)
신뢰성 패킷 유실 가능성 있음 (재전송 없음) 전송 보장 (재전송, 흐름제어, 순서 보장)
사용 환경 네트워크가 안정적일 때, 대량 로그 수집 시 중요한 로그, 보안 로그, 외부망 등
지원 기능 단순 전송 TLS 암호화, 인증, 큐잉 등 고급 기능 지원
적합한 경우
  • 내부망 등 신뢰할 수 있는 네트워크에서 빠른 로그 처리 원할 때
  • 로그 유실이 일부 발생해도 큰 문제 없는 경우
  • 성능(속도)을 우선시하는 환경
  • 예: IoT 장비, 단순 시스템 로그 수집 등
  • 보안 로그, 개인정보, 거래내역 등 중요한 로그 전송
  • 네트워크 불안정 환경 또는 원격지 수집
  • 로그 유실이 치명적인 경우 (감사 로그, 외부망 수집 등)
  • TLS, 인증 등 보안 기능이 필요한 경우
  • 예: 금융기관, 공공기관, 외부 클라우드 연계 수집 등
추천 facility ALL auth, authpriv, daemon, cron, syslog
rsyslog server 설정
(/etc/rsyslog.conf)
module(load=”imudp”)
input(type=”imudp” port=”514″)
module(load=”imtcp”)
input(type=”imtcp” port=”10514″)
remote host 설정
(/etc/rsyslog.conf)
*.* @xxx.xxx.xxx.xxx:514 *.* @@xxx.xxx.xxx.xxx:514

facility 유형이 authpriv, auth, daemon, cron, syslog인 로그는 TCP로 송수신하고, 나머지는 UPD로 송수신하는 Hybrid rsyslog 서버를 설정해 보겠습니다.

1. rsyslog server 설정하기(log receiver)

  1. master config 파일 수정
    # vi /etc/rsyslog.conf
    <!--more--> # provides UDP syslog reception module(load="imudp") input(type="imudp" port="514") # provides TCP syslog reception module(load="imtcp") input(type="imtcp" port="514") <!--more--> $IncludeConfig /etc/rsyslog.d/*.conf
  2. log 수신 설정 파일 등록
    # vi /etc/rsyslog.d/00-remote.conf
    # syslog 수신 시 저장할 위치 및 파일 설정 템플릿 $template Remote,"/var/log/remote/%fromhost-ip%/%$YEAR%-%$MONTH%-%$DAY%.log" # syslog 수신 시 fromhost-ip가 127.0.0.1이 아닌 경우 템플릿 Remote 정책을 적용 :fromhost-ip, !isequal, "127.0.0.1" ?Remote # 템플릿 Remote로 수신한 경우 로그 처리 중지 # 중지하지 않을 경우, OS에서 수집하는 syslog나 message에도 로그가 수집 됨 (중복 수집) & stop
  3. rsyslog 환경 설정 파일 유효성 테스트
    # rsyslogd -N1
  4. rsyslog 데몬을 재시작합니다.
    # systemctl restart rsyslog

2. remote host 설정하기(log sender)

  1. master config 파일 수정
    # vi /etc/rsyslog.conf
    # TCP로 전송할 Facility 등록 auth,authpriv,daemon,cron,syslog.* @@rsyslog.server.ip.address:514 # UDP로 전송할 Facility 등록 *.*;auth.none;authpriv.none;daemon.none;cron.none;syslog.none @rsyslog.server.ip.address:514
  2. rsyslog 환경 설정 파일 유효성 테스트
    # rsyslogd -N1
  3. rsyslog 데몬을 재시작합니다.
    # systemctl restart rsyslog

3. rsyslog 서버 로그 수신 결과 확인하기

  1. remote host로부터 전송된 로그 확인
    # tree /var/log/remote/
    /var/log/remote/ └── remote.host.ip.address └── yyyy-mm-dd.log

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다