Study Record

[리눅스 서버보안] Graylog Server 구축 실습 본문

서버보안/리눅스 서버보안

[리눅스 서버보안] Graylog Server 구축 실습

초코초코초코 2021. 12. 23. 15:30
728x90

Graylog Server 는 보안쪽에서 로그를 쌓고 분석하고 시각화하는 기능을 제공하는 프로그램이다. 다음 실습은 Centos 7버전에서 진행한 내용이다.

 

Graylog Server 구축 실습

[사전 작업]

# yum install epel-release -y

# yum-config-manager --enable epel --enable epel-release

 

# yum install pwgen -y

# yum install java-1.8.0-openjdk-headless.x86_64 -y

 

[Mongodb 설치]

Mongodb란?

㉮ YUM 레파지토리를 설정한다.

# gedit /etc/yum.repos.d/mongodb-org.repo & (= vi /etc/yum.repos.d/mongodb-org.repo)

[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc

 

㉯ Mongodb 를 설치한 후 서비스를 기동한다.

# yum install mongodb-org -y

# systemctl daemon-reload

# systemctl enable --now mongod.service

# systemctl start mongod.service

# systemctl status mongod.service

 

[elasticsearch 설치 및 서비스 기동]

elasticsearch란?

 

㉮ YUM 레파지토리를 설정한다.

# gedit /etc/yum.repos.d/elasticsearch.repo

[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/oss-7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

 

㉯ elasticsearch 를 설치한다.

# yum install elasticsearch-oss -y

 

㉰ elasticsearch 설정 파일을 수정한다.

# vi /etc/elasticsearch/elasticsearch.yml

cluster.name: graylog

 

㉱ elasticsearch 서비스를 기동한다.

# systemctl daemon-reload

# systemctl enable --now elasticsearch

# systemctl status elasticsearch.service

+ 필요하다면 방화벽 설정도 해준다.

# firewall-cmd --permanent --add-port=9200/tcp

# firewall-cmd --reload

 

[Graylog Server 설치]

㉮ 레포지토리를 설정한다.

# rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-4.1-repository_latest.rpm

# ls /etc/yum.repos.d/

graylog.repo 가 생긴 것을 볼 수 있다.

 

㉯ graylog-server 를 설치한다.

# yum install graylog-server -y

 

계정의 패스워드를 설정 및 환경 설정을 한다. 패스워드는 “admin”으로 고정한다.

# vi /etc/graylog/server/server.conf

root_timezone = Asia/Seoul
elasticsearch_shards = 1
password_secret = O9CRLB3IO9skGeVcrDhWksaGKcIqqm4KznHeDf5HDGvKDBMhbbrHO2VUuqLCjjdhobxDZN2WEjEB4zW26M9yUHYpSNUzY7oV
root_password_sha2 = 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918

graylog-server 서비스를 기동한다.

# systemctl start graylog-server.service

# systemctl status graylog-server.service

 

firefox 를 통해 GrayLog 웹 페이지에 접속한다. (시간이 오래 걸릴수도 있다.)

# firefox http://localhost:9000 &

admin/admin 으로 로그인한다.

 

System -> inputs 에서 Inputs 부분에 “Syslog UDP” 를 선택하고 “Launch new Input” 을 클릭한다.

 

아래와 같이 설정한 뒤, save 버튼을 누른다.

 

이제 로그를 보내볼 차례다. 현재 GrayLog Serverip 192.168.20.200 이고 port 1514 로 설정되어 있다. 이를 유념하여 다수의 로그를 보내는 스크립트를 만들어 본다. (port 는 1514로 설정해서 고정이지만 ip는 graylog server가 기동되고 있는 pc의 ip 로 한다.)

# vi /root/bin/msg2.sh

#!/bin/bash

logger -n 192.168.20.200 -P 1514 -d -p local0.warning "hello syslog($RANDOM) from linux200"
sleep 0.5
logger -n 192.168.20.200 -P 1514 -d -p local0.crit "Test syslog($RANDOM) from linux200"

# vi /root/bin/msgloop.sh

#!/bin/bash

num=$1

for i in $(seq $num)
do
	/root/bin/msg2.sh
	sleep 1
done

/root/bin 에서 msg2.sh msgloop.sh 를 스크립트를 만들었다. (필요시, chmod +x /root/bin/*.sh)

 

GrayLog Server 로 로그를 보낸다. (총 약 60개의 로그를 보냈다.)

# cd /root/bin

# ./msgloop.sh 30

 

GrayLog 웹 페이지로 돌아와서 “Show received messages” 를 누른다.

보냈던 로그가 잘 도착한 것을 볼 수 있다.

 

+ 서비스 중지하기

# systemctl disable --now mongod

# systemctl disable --now elasticsearch

# systemctl disable --now graylog-server

728x90