ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Linux] rsyslog 원격 로깅 구성하기
    Linux 2020. 5. 11. 08:51

     개요

     그 동안은 WINDOW에 대해서 많은 공유를 했었어서 이번에는 쉬어가는 항목으로 Linux 로그와 관련된 게시글을 기재하고자 한다. 필자가 사용하는 모든 Linux는 별도 라이센스를 사용하지 않아도 되는 CentOS만을 기반으로 하며 각 Server/Client 는 동일 대역의 네트워크를 사용하는 가상 사설망이다. 초기 설치 이후에 하면 좋은 로그 설정값과 다양하게 활용할 수 있는 방안도 기재하였으니 필요에 따라서 적용하면 효율적으로 관리할 수 있을 것이다. 사실 로그 관리라는게 평시에는 큰 필요성을 못 느낄 수 있으나 해킹사고/장애발생과 특이한 상황에서 용이하게 사용될 수 있다.

     

     


     

     

     구성 환경

     먼저 이번에 사용한 환경에 대하여 기술한다. 각 Server와 Client의 큰 영향을 받지는 않는 내용이지만 혹시라도 본인이 구성한 뒤에 정상적으로 동작하지 않는다면 환경적으로 차이는 없는지 살펴보기 바란다.

    Server : CentOS 

    Client : RHEL

    Package : rsyslog (Defualt)

     rsyslog

     모든 시스템은 기본적으로 설치한 뒤, 자동적으로 각 항목에 대하여 로깅을 한다. 로깅이란 시스템에서 발생하는 모든 이벤트에 대한 기록을 말하며, 어느 정도 수준으로 로깅할지는 관리자가 설정할 수 있다. 대부분의 Linux 배포판에서 사용하는 로깅 패키지는 rsyslog이며, CentOS/RHEL/Debian/Ubuntu과 같은 배포판들에 기본적으로 설치되어 있다. 2004년에 최초로 시작되었으며 "syslog → syslog-ng → rsyslog"와 같은 이름으로 변경되어 왔다.

     rsyslog (서버 단독 사용)

     그렇다면 서버는 어떤 식으로 구축해야 하는지 살펴보자. 간단하게 표현하면 "어떤 항목에 대하여 어떤 수준으로 어떤 경로에 로깅할 것인가" 라는 항목으로 설정하면 된다. 아래는 기본적으로 설정된 값이며 주요 문법은 아래와 같다.

    예시 mail.* /var/log/maillog
    설명 Logging 항목.Logging 레벨 Logging 경로
    mail에 대한 모든 레벨을 Logging -

     

    그림-1. /etc/rsyslog.conf 기본 Default 설정

    기본 설정값으로 cron/mail/auth 등의 항목을 Logging 하며, 각각의 레벨은 상이하다. 이 외에도 명령어 입력 시 Logging 을 남기는 등 개인적인 수정이 가능하지만 본 문서에서는 다루지 않는다. 이와 같은 설정을 통하여 단독 서버에 대한 Logging 방법을 설정할 수 있으며 추가적인 설정을 통하여 각 Client → Server 방식으로 하나의 중앙 로그 서버를 구성할 수도 있다.

     rsyslog 중앙 로그 서버 구성 (Server)

     중앙 로그 서버를 구성하기 위하여 Server에서는 관련 모듈을 활성화해주고 어떤 경로에 사용할지만 선언해주면 된다. 혹여나 패키지 버전에 따라 설정파일에서 일부 차이가 있을 수 있으므로 여기서부터는 아래 항목처럼 적용되어 있는지만 확인해보도록 하자. 기본 설정값과 비교하여 어떤 점이 변경되었는지는 좌측에 명시해두었다.

    ※ 경로 : /etc/rsyslog.conf

    rsyslog 데이터 수신을 위한 UDP 프로토콜 활성화

       - (주석제거) $ModLoad imudp
       - (주석제거) $UDPServerRun 514

    Logging 위치 템플릿 생성
       - (신규 추가) $template TmplAuth, "/var/log/%$hostname%.log"

    rsyslog 서비스 재 시작
       # systemctl restart rsyslog or # service rsyslog restart

     

     rsyslog 중앙 로그 서버 구성 (Client)

     Client에서는 중앙 로그 서버로 어떤 항목을 Logging 할지만 명시해주면 된다. 그 중에서도 주의해야할 설정은 송신하는 프로토콜에 따라 형식이 달라지는데, "@=UDP / @@=TCP" 이므로 주의해서 사용하도록 하자.

    ※ 경로 : /etc/rsyslog.conf

    rsyslog 데이터 송신을 위한 설정

       - (신규 추가) *.* @@remote-host:514

    rsyslog 서비스 재 시작
       # systemctl restart rsyslog or # service rsyslog restart

    위와 같이 설정하고 방화벽 등의 네트워크적으로 차단되는 내역이 없다면 중앙으로 로그가 수집되는 것을 확인할 수 있다. 내용은 기존 Client에 쌓이는 것이 정상이며 만약 로그가 쌓이지 않는다면 우선 Server에서 tcpdump 등을 사용하여 패킷이 들어오는지부터 확인해보도록 하자. 

    그림-2. rsyslog Client → Server 구성 완료 예시

     


     

     

     마무리

     이번엔 rsyslog를 간단하게 활용할 수 있는 방안에 대하여 기술하였습니다. 로그는 평시에는 잘 사용되지 않지만 특정 상황에서 유용하게 활용될 수 있으므로 항상 시스템을 구비해놓은 것이 좋습니다. 다만 위와 같은 기본 설정을 사용할 경우엔 데이터가 평문으로 이동되어 주요 정보가 노출될 가능성이 있기에 TCP를 통하여 암호화하는 것을 테스트 해보고 있습니다. 정리되는 대로 게시할 예정이니 궁금하신 사항은 댓글 남겨주시기 바랍니다.

    긴 글 읽어주셔서 감사합니다.

     

    'Linux' 카테고리의 다른 글

    Bulit-In Command  (0) 2020.01.22
    파일 디스크립터 (FD)  (0) 2020.01.04
    [CentOS][7.5] Virbr 인터페이스 제거  (0) 2019.11.28
    [CentOS][7.5] Interface 형식 변경하기  (0) 2019.11.18
    [CentOS][7.5] 설치하기  (0) 2019.09.24

    댓글

Designed by Tistory.