웹사이트 검색

Debian 11에서 Rsyslog 서버를 설정하는 방법


이 튜토리얼은 다음 OS 버전에 대해 존재합니다.

  • 데비안 11(불스아이)
  • 데비안 9(스트레치)

이 페이지에서

  1. 전제 조건
  2. Rsyslog 설치
  3. Rsyslog 구성
  4. Rsyslog에 대한 방화벽 구성\n
  5. Rsyslog 클라이언트 구성
  6. 클라이언트 로그 파일 확인\n
  7. 결론

Rsyslog는 모든 로그 파일을 IP 네트워크를 통해 중앙 집중식 로그 서버로 전달하는 무료 오픈 소스 로깅 소프트웨어입니다. 시스템 관리자가 중앙 지점에서 모든 서버를 감시할 수 있도록 도와줍니다. Rsyslog는 클라이언트/서버 모델에서 작동하며 TCP/UDP 프로토콜을 통해 포트 514에서 원격 클라이언트로부터 로그를 수신합니다.

이 게시물에서는 Debian 11에서 Rsyslog 서버를 설정하는 방법을 보여줍니다.

전제 조건

  • Debian 11을 실행하는 두 대의 서버.\n
  • 루트 암호는 서버에서 구성됩니다.\n

Rsyslog 설치

먼저 서버 머신에 Rsyslog 서버 패키지를 설치해야 합니다. 다음 명령을 사용하여 설치할 수 있습니다.

apt-get install rsyslog -y

설치 후 다음 명령을 사용하여 Rsyslog 상태를 확인합니다.

systemctl status rsyslog

다음 출력이 표시되어야 합니다.

? rsyslog.service - System Logging Service
     Loaded: loaded (/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2021-10-03 13:35:32 UTC; 1h 44min ago
TriggeredBy: ? syslog.socket
       Docs: man:rsyslogd(8)
             man:rsyslog.conf(5)
             https://www.rsyslog.com/doc/
   Main PID: 283 (rsyslogd)
      Tasks: 4 (limit: 2341)
     Memory: 5.0M
        CPU: 90ms
     CGroup: /system.slice/rsyslog.service
             ??283 /usr/sbin/rsyslogd -n -iNONE

Oct 03 13:35:32 debian11 systemd[1]: Starting System Logging Service...
Oct 03 13:35:32 debian11 rsyslogd[283]: imuxsock: Acquired UNIX socket '/run/systemd/journal/syslog' (fd 3) from systemd.  [v8.2102.0]
Oct 03 13:35:32 debian11 rsyslogd[283]: [origin software="rsyslogd" swVersion="8.2102.0" x-pid="283" x-info="https://www.rsyslog.com"] start
Oct 03 13:35:32 debian11 systemd[1]: Started System Logging Service.
Oct 03 13:35:34 debian11 systemd[1]: rsyslog.service: Sent signal SIGHUP to main process 283 (rsyslogd) on client request.
Oct 03 13:45:33 debian11 rsyslogd[283]: [origin software="rsyslogd" swVersion="8.2102.0" x-pid="283" x-info="https://www.rsyslog.com"] rsyslog>

Rsyslog 구성

다음으로 서버 모드에서 실행되도록 Rsyslog를 구성해야 합니다. Rsyslog 기본 구성 파일을 편집하여 이를 수행할 수 있습니다.

nano /etc/rsyslog.conf

다음 줄의 주석 처리를 제거하십시오.

# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")

# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514")

다음으로 클라이언트 시스템에서 들어오는 로그를 저장할 템플릿을 정의하는 다음 줄을 추가합니다.

$template remote-incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?remote-incoming-logs

파일을 저장하고 닫은 다음 Rsyslog 서비스를 다시 시작하여 변경 사항을 적용합니다.

systemctl restart rsyslog

이 시점에서 Rsyslog가 시작되고 포트 514에서 수신 대기합니다. 다음 명령을 사용하여 확인할 수 있습니다.

ss -tunlp | grep 514

다음 출력이 표시되어야 합니다.

udp   UNCONN 0      0                              0.0.0.0:514       0.0.0.0:*    users:(("rsyslogd",pid=26276,fd=6))                                                                                                                                                                                                                                                                             
udp   UNCONN 0      0                                 [::]:514          [::]:*    users:(("rsyslogd",pid=26276,fd=7))                                                                                                                                                                                                                                                                             
tcp   LISTEN 0      25                             0.0.0.0:514       0.0.0.0:*    users:(("rsyslogd",pid=26276,fd=8))                                                                                                                                                                                                                                                                             
tcp   LISTEN 0      25                                [::]:514          [::]:*    users:(("rsyslogd",pid=26276,fd=9))                                                                                                                                                                                                                                                                             

Rsyslog에 대한 방화벽 구성

다음으로 UFW 방화벽을 통해 포트 514를 허용해야 합니다. 다음 명령으로 허용할 수 있습니다.

ufw allow 514/tcp
ufw allow 514/udp

다음으로 방화벽을 다시 로드하여 변경 사항을 적용합니다.

ufw reload

Rsyslog 클라이언트 구성

다음으로 로그 파일을 Rsyslog 서버로 보내도록 Rsyslog 클라이언트를 구성해야 합니다. Rsyslog 기본 구성 파일을 편집하여 이를 수행할 수 있습니다.

nano /etc/rsyslog.conf

파일 끝에 다음 줄을 추가합니다.

#Enable sending system logs over UDP to rsyslog server
*.* @rsyslog-server-ip:514

#Enable sending system logs over TCP to rsyslog server
*.* @@rsyslog-server-ip:514

또한 rsyslog 서버가 다운될 때 디스크 대기열을 설정하려면 다음 행을 추가하십시오.

$ActionQueueFileName queue
$ActionQueueMaxDiskSpace 1g
$ActionQueueSaveOnShutdown on
$ActionQueueType LinkedList
$ActionResumeRetryCount -1

파일을 저장하고 닫은 다음 Rsyslog 서비스를 다시 시작하여 변경 사항을 적용합니다.

systemctl restart rsyslog

클라이언트 로그 파일 확인

모든 클라이언트 로그 파일은 서버 시스템의 /var/log 디렉토리에 저장됩니다.

다음 명령으로 확인할 수 있습니다.

ls -l /var/log/

클라이언트 시스템의 호스트 이름에 해당하는 클라이언트 로그 파일이 표시되어야 합니다.

alternatives.log    auth.log.2.gz  daemon.log	    debian11	dpkg.log    kern.log.1	   messages.1	  private      syslog.3.gz
clientpc            auth.log.3.gz  daemon.log.1     debug	dpkg.log.1  kern.log.2.gz  messages.2.gz  runit        syslog.4.gz
apt		    btmp	   daemon.log.3.gz  debug.2.gz	icinga2     kern.log.4.gz  messages.4.gz  syslog
auth.log.1	    csm.log	   dbconfig-common  debug.4.gz	kern.log    messages	   ntpstats	  syslog.2.gz

보시다시피 clientpc는 클라이언트 시스템의 로그 디렉토리입니다.

결론

위 가이드에서는 Debian 11에서 Rsyslog 서버 및 클라이언트를 설정하는 방법을 설명했습니다. 이제 중앙 위치에서 클라이언트를 모니터링할 수 있습니다. 궁금한 점이 있으면 언제든지 문의해 주세요.