graylog 를 통한 syslog 통합 감사(audit)

graylog 는 syslog 처리를 위한 빅데이터 분석 솔루션이다. 기본적으로야 syslog 를 한곳에 적재하여 로그 감사를 하는 목적으로 사용한다.

물론 syslog 뿐만 아니라 웹로그등을 수집하여 분석하는것 역시 가능하다.

Mongodb + elasticsearch + java 를 사용하여 운영 되며 노드를 추가하여 다중 노드에서의 분석 처리가 가능하다.

2018-05-18_111423 위와 같이 대쉬보드를 만들어 한눈에 볼수 있으며 alert 설정을 통해 중요 특정한 이벤트 발생시 손쉬운 확인이 가능 하다.

graylog 의 권장 사항은 4GB의 램을 필요로 하나 구축테스트를 해본 결과 1GB 에 2GB 수준의 swap 으로 정상적인 운영이 가능했다.

오픈소스이기 때문에 유료 프로그램인 kiwi syslog의 라이선스 비용 대비 40% 수준이면 클라우드에 구축하여 운영할 수 있다.
(t2.micro / 1 core – 1GB RAM) CentOS7 에서 graylog 를 설치 하는 방법을 설명한다.

 

1. 가상 서버를 준비하고 기본적인 업데이트 및 hostname 지정 등을 한 뒤에 리부팅 한다.

 

2. 시스템 메모리 및 네트워크 튜닝값을 적용 한다.

 

3.  swap 을 생성한다.(aws-centos7 의경우 swap 설정되어 있지 않다.)

  • 프로그램 초기 설치시 selinux 충돌을 방지 하기 위해 임의 setenforce 0 명령어로 selinux 를 permissive 모드로 변경 후 진행 한다.

  • 재부팅 후에 swap 이 자동 적용 될수 있게 fstab 을 수정한다. ~]# vi /etc/fstab

 

4. elasticsearch 설치

 

5. mongodb 설치

 

6. mongodb 설정

  • mongdb 의 data 파일을 /free/mongo_data 에 적재할 예정 이기 때문에 conf 파일을 수정 하고 selinux 설정을 추가 한다.

 

7. graylog 설치

 

8. graylog 설정

  • conf 파일을 수정하기 전에 pwgen 을 이용하여 secret 값을 생성 하고 shasum 을 이용하여 관리자 패스워드 값을 생성한다.

~]# vi /etc/graylog/server/server.conf     ## 각 값을 찾아서 수정한다.

 

9. graylog 시작 및 systemd 등록

 

10. nginx 설치

  • 여기서는 손쉬운 http/2 구축과 brotli 이미지 압축 등을 위해 codeit – nginx 을 설치 한다.

 

11. nginx 설정

  • DH 파라메터파일을 생성 한다.

  • /etc/nginx/nginx.conf 파일을 수정한다.

  • /etc/nginx/conf.d/default.conf 파일을 수정한다.

 

12. let’s encrypt 를 이용하여 인증서 발급을 진행하였음.  ( https://www.enteroa.com/2016/03/12/lets-encrypt-설치-및-운용centos )

  • nginx 에서 location 으로 let’s encrypt 설정을 /var/www 으로 했기 때문에 아래와 같은 명령어로 인증서 발급이 가능 하다.

 

13. selinux 설정

 

14. graylog 설정

  • graylog 서비스가 모두 정상적이라면 웹접근을 통해서 로그인을 할 수 있다. 2018-05-18_140231
  • 로그인 한 뒤에 먼저 대시보드를 생성한다.
    2018-05-18_142706
  • 이후 input 생성을 하기위해 아래와 같이 설정 진행을 한다. 2018-05-18_140445
  • 기본적으로 아래 다섯 항목을 설정 한다.
    2018-05-18_140416
  • 설정을 하게 되면 input 이 생성되고 곧 running 상태가 된다.2018-05-18_141255

 

15. linux – rsyslog 설정 (UDP 설정)

  • ~]# /etc/rsyslog.conf 파일의 맨밑에 삽입 한다. ( @=UDP / @@=TCP )

  • rsyslog 을 재시작 한다.

 

16.  생성된 input 의 show recived messages 버튼으로 이동하면 아래와 같은 화면을 볼 수 있다. (검색 화면과 같다.)

  • 검색 일자를 선택하고 대쉬보드 추가를 할 수 있다.
    2018-05-18_143141

 

17. L3 – syslog 설정 (cisco)

  • cisco 스위치의 경우 input 생성을 할때 RAW/Plaintest UDP 를 선택해서 진행해야 한다. ( RFC3414 표준이 아님 )
  • 아울러 스위치는 일반적으로 분배의 목적으로 한개의 gateway 밑에 존재하므로 각 스위치마다 별도의 input 을 만든다
  • input 을 만들때 override source 옵션을 통해 특정된 port 에 들어온 메세지의 소스 호스트 네임을 알기 쉽도록 Office-L3 와 같이 설정한다.
  • 일반적인 switch 장비의 log 설정 방법은 아래와 같다.

 

3 thoughts on “graylog 를 통한 syslog 통합 감사(audit)”

  1. 궁금한게 있는데요 혹시 rsyslog를 graylog 서버가아닌 다른 서버에다 설정하려면 어떻게하나요..
    다른 서버에다 rsyslog 설정했더니 graylog 서버쪽으로 데이터는 전송하는데 전혀 쌓이질 않아서요 ㅠㅠ

    1. input 을 UDP로 만들었을 경우
      메세지 설정을 할때 UDP 설정입니다.
      *.* @원격지아이피:포트;RSYSLOG_SyslogProtocol23Format

      input 을 TCP로 만들었을 경우 는 다음과 같이
      *.* @@원격지아이피:포트;RSYSLOG_SyslogProtocol23Format

      이후 수신지 서버에서 tcpdump 등으로 포트 감시를 해보세요 @_@a
      ~]# tcpdump -i eth0 udp port 포트 and host [로그발신서버]
      ~]# tcpdump -i eth0 tcp port 포트 and host [로그발신서버]

    2. 참고로 제 경우엔 로컬 환경에서 구축 테스트를 할때
      L3 및 UTM 장비의 ACL 영향으로 메세지가 누적되지 않아 고생을 했었습니다.
      만약 정상적인 설정이 맞는데 동작이 이상하다면 network 장비의 ACL 부분을 점검해 봐야 합니다 🙂

Comments are closed.