웹사이트 검색

CentOS/RHEL 7에서 Rsyslog를 사용하여 중앙 집중식 로그 서버를 만드는 방법


시스템 관리자가 CentOS 7 또는 RHEL 7 서버 시스템의 문제를 식별하거나 해결하려면 특정 시스템에서 시스템에서 발생한 이벤트를 알고 확인해야 합니다. 시스템의 /var/log 디렉토리에 저장된 로그 파일의 기간입니다.

Linux 시스템의 syslog 서버는 모든 서버, 네트워크 장치, 라우터, 스위치 및 로그를 생성하는 대부분의 내부 서비스(특정 내부 문제와 관련되거나 정보 메시지만 포함)가 로그를 보낼 수 있는 네트워크를 통해 중앙 모니터링 지점 역할을 할 수 있습니다. .

CentOS/RHEL 7 시스템에서는 Rsyslog 데몬이 사전 설치된 기본 로그 서버이고 그 뒤에 Systemd Journal Daemon(journald)이 옵니다. 강하다>).

클라이언트/서버 아키텍처 서비스로 빌드된 Rsyslog 서버는 두 역할을 동시에 수행할 수 있습니다. 서버로 실행되어 네트워크의 다른 장치에서 전송된 모든 로그를 수집하거나 원격 끝점 syslog 서버에 기록된 모든 내부 시스템 이벤트를 전송하여 클라이언트로 실행할 수 있습니다.

rsyslog가 클라이언트로 구성되면 로그는 로컬 파일 시스템의 파일에 로컬로 저장되거나 시스템에 저장된 파일에 쓰거나 이벤트 로그 파일을 로컬로 작성하여 원격 syslog 서버로 보내는 대신 원격으로 보낼 수 있습니다. 동시.

Syslog 서버는 다음 구성표를 사용하여 모든 로그 메시지를 작동합니다.

type (facility).priority (severity)  destination(where to send the log)

A. 시설 또는 유형 데이터는 메시지를 생성하는 내부 시스템 프로세스로 표시됩니다. Linux에서 로그를 생성하는 내부 프로세스(시설)는 다음과 같이 표준화되어 있습니다.

  • 인증 = 인증 프로세스(로그인)에 의해 생성된 메시지입니다.
  • cron= 예약된 프로세스(crontab)에 의해 생성된 메시지입니다.
  • 데몬 = 데몬(내부 서비스)에 의해 생성된 메시지입니다.
  • 커널 = Linux 커널 자체에서 생성된 메시지입니다.
  • 메일 = 메일 서버에서 생성된 메시지입니다.
  • syslog = rsyslog 데몬 자체에서 생성된 메시지입니다.
  • lpr = 로컬 프린터 또는 인쇄 서버에서 생성된 메시지입니다.
  • local0 – local7 = 관리자가 정의한 맞춤 메시지(local7은 일반적으로 Cisco 또는 Windows에 할당됨)

B. 우선순위(심각도) 수준도 표준화되어 있습니다. 각 우선순위에는 아래 설명된 대로 표준 약어와 숫자가 지정됩니다. 7번째 우선순위는 모든 것보다 높은 수준입니다.

  • emerg = 긴급 – 0
  • 알림 = 알림 – 1
  • 오류 = 오류 – 3
  • 경고 = 경고 – 4
  • 통지 = 알림 – 5
  • 정보 = 정보 – 6
  • 디버그 = 디버깅 – 7

특수 Rsyslog 키워드:

  • *=모든 시설 또는 우선순위
  • none=시설에 지정된 우선순위가 없습니다. 예: mail.none

C. syslog 스키마의 세 번째 부분은 destination 지시문으로 표시됩니다. Rsyslog 데몬은 로컬 파일 시스템의 파일(주로 /var/log/ 디렉토리의 파일)에 기록되거나 다른 로컬 프로세스로 파이프되거나 로컬 사용자 콘솔(stdout으로), TCP/UDP 프로토콜을 통해 원격 syslog 서버로 메시지를 보내거나 메시지를 /dev/null로 삭제할 수도 있습니다.

CentOS/RHEL 7을 중앙 로그 서버로 구성하려면 먼저 모든 로그 파일이 기록되는 /var 파티션이 충분히 큰지 확인해야 합니다( 최소 몇 GB) 다른 장치에서 전송되는 모든 로그 파일을 저장할 수 있습니다. /var/log/ 디렉토리를 마운트하기 위해 별도의 드라이브(LVM, RAID)를 사용하는 것이 좋은 결정입니다.

요구사항

  1. CentOS 7.3 설치 절차
  2. RHEL 7.3 설치 절차

CentOS/RHEL 7 서버에서 Rsyslog를 구성하는 방법

1. 기본적으로 Rsyslog 서비스는 자동으로 설치되며 CentOS/RHEL 7에서 실행되어야 합니다. 시스템에서 데몬이 시작되었는지 확인하려면 루트 권한으로 다음 명령을 실행하세요.

systemctl status rsyslog.service

기본적으로 서비스가 실행되지 않는 경우 rsyslog 데몬을 시작하려면 아래 명령을 실행하십시오.

systemctl start rsyslog.service

2. 중앙 로깅 서버로 사용하려는 시스템에 rsyslog 패키지가 설치되어 있지 않은 경우 다음 명령을 실행하여 rsyslog 패키지를 설치하십시오.

yum install rsyslog

3. rsyslog 데몬을 중앙 로그 서버로 구성하여 외부 클라이언트에 대한 로그 메시지를 수신하기 위해 시스템에서 수행해야 하는 첫 번째 단계는 다음을 사용하여 열고 편집하는 것입니다. 즐겨찾는 텍스트 편집기인 /etc/rsyslog.conf의 기본 구성 파일입니다. 아래 발췌 내용에 나와 있습니다.

vi /etc/rsyslog.conf

rsyslog 기본 구성 파일에서 514를 통해 Rsyslog 서버에 UDP 전송 수신을 제공하려면 다음 줄을 검색하고 주석 처리를 제거합니다(줄 시작 부분에서 해시태그 # 기호 제거). 포트. UDP는 Rsyslog의 로그 전송에 사용되는 표준 프로토콜입니다.

$ModLoad imudp 
$UDPServerRun 514

4. UDP 프로토콜에는 TCP 오버헤드가 없으므로 TCP 프로토콜보다 데이터 전송 속도가 더 빠릅니다. 반면 UDP 프로토콜은 전송되는 데이터의 신뢰성을 보장하지 않습니다.

그러나 로그 수신을 위해 TCP 프로토콜을 사용해야 하는 경우 Rsyslog 데몬이 514에서 TCP 소켓을 바인딩하고 수신하도록 구성하려면 /etc/rsyslog.conf 파일에서 다음 줄을 검색하고 주석 처리를 제거해야 합니다. 포트. 수신을 위한 TCP 및 UDP 청취 소켓은 Rsyslog 서버에서 동시에 구성될 수 있습니다.

$ModLoad imtcp 
$InputTCPServerRun 514 

5. 다음 단계에서는 아직 파일을 닫지 말고 원격 메시지 수신에 사용할 새 템플릿을 만드세요. 이 템플릿은 syslog 네트워크 클라이언트가 보낸 수신 메시지를 저장할 위치를 로컬 Rsyslog 서버에 지시합니다. 아래 발췌문에 표시된 대로 GLOBAL DIRECTIVES 블록이 시작되기 전에 템플릿을 추가해야 합니다.

$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" 
. ?RemoteLogs & ~

위의 $template RemoteLogs 지시문은 Rsyslog 데몬에게 클라이언트 컴퓨터 이름과 메시지를 생성한 원격 클라이언트 기능(애플리케이션)을 기반으로 수신된 모든 로그 메시지를 수집하여 고유한 파일에 쓰도록 지시합니다. 정의된 속성은 템플릿 구성에 있습니다: %HOSTNAME%%PROGRAMNAME%.

이러한 모든 로그 파일은 클라이언트 시스템의 호스트 이름을 따서 명명된 전용 파일로 로컬 파일 시스템에 기록되고 /var/log/ 디렉토리에 저장됩니다.

& ~ 리디렉션 규칙은 로컬 Rsyslog 서버에 수신된 로그 메시지 처리를 더 이상 중지하고 메시지를 삭제하도록 지시합니다(내부 로그 파일에 기록하지 않음).

RemoteLogs 이름은 이 템플릿 지시문에 지정된 임의의 이름입니다. 템플릿에 가장 적합한 이름을 사용할 수 있습니다.

메시지를 생성한 기능을 필터링하지 않고 원격 클라이언트의 IP 주소 이름을 딴 단일 로그 파일에 클라이언트로부터 수신된 모든 메시지를 기록하려면 아래 발췌 내용을 사용하십시오.

$template FromIp,"/var/log/%FROMHOST-IP%.log" 
. ?FromIp & ~ 

인증 기능 플래그가 있는 모든 메시지가 "TmplAuth"라는 템플릿에 기록되는 템플릿의 또 다른 예입니다.

$template TmplAuth, "/var/log/%HOSTNAME%/%PROGRAMNAME%.log" 
authpriv.*   ?TmplAuth

다음은 Rsyslog 7 서버의 템플릿 정의에서 발췌한 것입니다.

template(name="TmplMsg" type="string"
         string="/var/log/remote/msg/%HOSTNAME%/%PROGRAMNAME:::secpath-replace%.log"
        )

위의 템플릿 발췌문은 다음과 같이 작성할 수도 있습니다.

template(name="TmplMsg" type="list") {
    constant(value="/var/log/remote/msg/")
    property(name="hostname")
    constant(value="/")
    property(name="programname" SecurePath="replace")
    constant(value=".log")
    }

복잡한 Rsyslog 템플릿을 작성하려면 man rsyslog.conf 명령을 실행하여 Rsyslog 구성 파일 매뉴얼을 읽거나 Rsyslog 온라인 설명서를 참조하세요.

6. 위에서 설명한 대로 고유한 설정으로 Rsyslog 구성 파일을 편집한 후 다음 명령을 실행하여 Rsyslog 데몬을 다시 시작하여 변경 사항을 적용하십시오.

service rsyslog restart

7. 이제 Rsyslog 서버는 중앙 집중식 로그 서버 역할을 하고 syslog 클라이언트의 메시지를 기록하도록 구성되어야 합니다. Rsyslog 네트워크 소켓을 확인하려면 루트 권한으로 netstat 명령을 실행하고 grep을 사용하여 rsyslog 문자열을 필터링하세요.

netstat -tulpn | grep rsyslog 

8. CentOS/RHEL 7에서 SELinux를 활성화한 경우 다음 명령을 실행하여 네트워크 소켓 유형에 따라 rsyslog 트래픽을 허용하도록 SELinux를 구성합니다.

semanage -a -t syslogd_port_t -p udp 514
semanage -a -t syslogd_port_t -p tcp 514 

9. 방화벽이 활성화되어 활성화된 경우 Firewalld에서 rsyslog 포트를 여는 데 필요한 규칙을 추가하려면 아래 명령을 실행하십시오.

firewall-cmd --permanent --add-port=514/tcp
firewall-cmd --permanent --add-port=514/udp
firewall-cmd –reload

그게 다야! Rsyslog는 이제 서버 모드로 구성되며 원격 클라이언트의 로그를 중앙 집중화할 수 있습니다. 다음 기사에서는 CentOS/RHEL 7 서버에서 Rsyslog 클라이언트를 구성하는 방법을 살펴보겠습니다.

Rsyslog 서버를 원격 로그 메시지의 중앙 모니터링 지점으로 사용하면 로그 파일을 검사하고 클라이언트 상태를 관찰하거나 시스템이 충돌하거나 공격을 받을 때 클라이언트 문제를 보다 쉽게 디버깅할 수 있습니다.