시스템 보안

[9월 10일] Graylog 구축하기

ljm 2025. 9. 10. 10:55

 

 

# 시스템 시간대 설정 : 서울 (정확한 로그 시간)
ljm@ljm:~$ sudo timedatectl set-timezone Asia/Seoul

#메모리 맵 영역의 최대 개수를 262144로 정의 (MongoDB 정상적으로 작동하도록)
ljm@ljm:~$ sudo sysctl -w vm.max_map_count=262144
vm.max_map_count = 262144

ljm@ljm:~$ echo "vm.max_map_count=262144" | sudo tee /etc/sysctl.d/99-graylog-datenode.conf
vm.max_map_count=262144

# 변경 사항을 즉시 적용
sudo sysctl -p

ljm@ljm:~$ sudo apt install -y gnupg curl

# MongoDB 저장소의 PGP 키를 다운로드하고 등록
ljm@ljm:~$ curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor

# MongoDB 7.0 저장소를 apt의 소스 목록에 추가
ljm@ljm:~$ echo "deb [arch=amd64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list

ljm@ljm:~$ sudo apt update

ljm@ljm:~$ sudo apt install -y mongodb-org=7.0.14 mongodb-org-database=7.0.14 mongodb-org-server=7.0.14 mongodb-org-mongos=7.0.14 mongodb-mongosh mongodb-org-tools=7.0.14

ljm@ljm:~$ sudo systemctl enable --now mongod
Created symlink /etc/systemd/system/multi-user.target.wants/mongod.service → /usr/lib/systemd/system/mongod.service.

ljm@ljm:~$ sudo wget https://packages.graylog2.org/repo/packages/graylog-6.1-repository_latest.deb
graylog-6.1-repository_la 100%[==================================>]   1.99K  --.-KB/s    in 0s
2025-09-10 09:31:06 (207 MB/s) - ‘graylog-6.1-repository_latest.deb’ saved [2042/2042]

ljm@ljm:~$ sudo dpkg -i graylog-6.1-repository_latest.deb

ljm@ljm:~$ sudo apt update

ljm@ljm:~$ sudo apt install -y graylog-datanode

# password_secret에 사용할 96자리 임의의 문자열을 생성
ljm@ljm:~$ < /dev/urandom tr -dc A-Z-a-z-0-9 | head -c${1:-96};echo;
8H4CRJ8wl9onU03IV4JtONg3o6eAlsfUEFFu1vhNL2j11T0BYbP5Ttt9rYTrW91ThIUL26yU7jT6Lmqc7wnyrR2sPfsb15kV

ljm@ljm:~$ sudo vi /etc/graylog/datanode/datanode.conf
-> password_secret 추가

ljm@ljm:~$ sudo vi enable --now graylog-datanode.service

ljm@ljm:~$ sudo apt install graylog-server -y

# root_password_sha2 값에 사용할 비밀번호를 SHA256 해시로 변환
ljm@ljm:~$ echo -n "Enter Password : " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1
Enter Password : 1234
03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4

ljm@ljm:~$ sudo vi /etc/graylog/server/server.conf
-> password_secret 추가
-> root_password_sha2 추가
-> 106번에 http_bind_address = 0.0.0.0:9000 추가

ljm@ljm:~$ sudo systemctl enable --now graylog-server

ljm@ljm:~$ cat /var/log/graylog-server/server.log

 

 

datanode.conf 파일의 password_secret에 값 추가

 

 

 

 

 

 

URKdqIWpNI

 

 

 

 


 

오류 때문에 다시 설치

 

admin / wHpEYzdVoU

 

 

초기 설치화면 - CA 생성하기

 

 

데이터 노드에 대한 보안 인증서 발급 및 설정 완료

 

 

로그인 화면 : admin / 1234
welcome

 


 

 

Graylog-agent 생성하기

 

Graylog의 Agent를 생성하는 방법에는 일반적으로 두가지 방법이 있는데,

Graylog Sidecar 자체를 설치하고 설정하는 방법과

Filebeat를 설치하고 설정하는 방법이 있다.

 

Graylog Sidecar는 Graylog 서버와 연동하여 중앙에서 관리되는 에이전트이기 때문에 효율성과 확장성을 크게 높여준다. 그래서 수십대 수백대의 서버를 손쉽게 관리할 수 있다. 

 

Filebeat는 경량의 로그 수집기로, Graylog 서버와 연동하여 로그를 전송한다. 하지만 확장성도 떨어지고 수동적으로 개별적 관리를 해줘야해서 굉장히 번거롭다.

 

따라서 Graylog Sidecar로 관리하는게 좋지만, 연습삼아 한대만 만들어볼거라서 Filebeat로 만들어보겠다.

 

 

 

 

Sidecar에서 토큰 만들기 > GPG 키에 대입

 

 

1. GPG 키 가져오기:

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

 

Yum/DNF 리포지토리 설정: /etc/yum.repos.d/ 디렉터리에 filebeat.repo 파일을 생성하고 아래 내용을 추가합니다.
[elastic-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
 
sudo vi /etc/yum.repos.d/filebeat.repo
sudo dnf install -y filebeat

2. Graylog Input 설정

Filebeat가 로그를 전송할 Graylog 서버에 Beats Input을 만들어야 합니다.

  1. Graylog 웹 인터페이스에 접속합니다.
  2. System > Inputs로 이동합니다.
  3. 'Select input' 드롭다운 메뉴에서 Beats를 선택하고 'Launch new input'을 클릭합니다.
  4. 새로운 Input의 정보를 입력합니다.
    • Title: Filebeat_Input과 같이 식별 가능한 이름을 지정합니다.
    • Bind address: 0.0.0.0으로 설정하여 모든 IP로부터의 연결을 허용합니다.
    • Port: 기본값인 5044를 사용합니다.
  5. 저장하여 Input을 활성화합니다.

3. Filebeat 설정

설치된 Filebeat의 설정 파일(filebeat.yml)을 수정하여 Graylog 서버로 로그를 보내도록 구성합니다.

  1. 설정 파일 열기:
  2. bash
    sudo vi /etc/filebeat/filebeat.yml
    
  3. filebeat.inputs 설정: 로그를 수집할 파일 경로를 지정합니다. 예를 들어, messages 로그를 수집하려면 다음과 같이 수정합니다.
  4. YAML
    filebeat.inputs:
    - type: log
      enabled: true
      paths:
        - /var/log/messages
    
  5. output 설정: output 섹션을 찾아 logstash 부분을 활성화하고 Graylog 서버의 정보를 입력합니다.
    • outputs.elasticsearch와 같은 다른 출력 옵션은 주석 처리(#)하거나 삭제하여 비활성화합니다.
  6. YAML
    output.logstash:
      # Graylog 서버의 IP와 Beats Input 포트를 입력합니다.
      hosts: ["192.168.16.82:5044"]
    

4. Filebeat 서비스 시작

설정 파일 수정이 완료되면 Filebeat 서비스를 시작하고 부팅 시 자동으로 실행되도록 설정합니다.

Bash
sudo systemctl start filebeat
sudo systemctl enable filebeat

 

graylog-agent가 Server와 잘 연결되었음을 확인

 

 

Graylog Web에서 방금 연결한 filebeat Agent의 로그를 확인 가능

 

 


 

 

Sidecar로 구축할때는 

 

# GPG 키 및 리포지토리 설정
sudo rpm --import https://packages.graylog.org/repo/el/RPM-GPG-KEY-graylog
sudo dnf install -y dnf-utils
sudo dnf config-manager --add-repo https://packages.graylog.org/repo/el/graylog-sidecar.repo

 

이후에 Sidecar을 Install 한 후,

sudo vi /etc/graylog/sidecar/sidecar.yml

 

sidecar.yml에서 server_url을 Graylog 서버 IP와 포트로 변경하고,
server_api_token에 1단계에서 복사해 둔 API 토큰을 붙여 넣는다.

'시스템 보안' 카테고리의 다른 글

[9월 15일] Mod_Security 구축하기(WAF)  (0) 2025.09.15
[9월 12일] 이벤트 뷰어  (0) 2025.09.12
[9월 9일] NMAP  (0) 2025.09.09
[9월 9일] GoAccess 구축하기  (0) 2025.09.09
[9월 8일] 보안로그분석 SIEM  (0) 2025.09.08