Graylog là một nền tảng mạnh mẽ cho phép quản lý log tập trung dễ dàng. Graylog nhận dữ liệu từ các máy khách được cài đặt trên các máy chủ khác nhau. Có giao diện web, trực quan hóa dữ liệu và cho phép làm việc với các bản ghi được tổng hợp bởi máy chủ chính.

Trong bài này, mình sẽ cấu hình graylog 3.1 sử dụng CentOS 7 làm client và server, client sẽ sử dụng sidecar để đẩy log .

1 . Mô hình

Mô hình LAB được triển khai như sau:

Mô hình ip planning được triển khai như sau:

2 . Cài đặt

2.1 Yêu cầu và thiết lập môi trường.

Yêu cầu :

  • Elastisearch 5 hoặc 6.
  • MongoDB 3.6 hoặc 4.0.
  • Oracle Java SE 8.
  • Thực hiện với quyền root

Thiết lập môi trường :

  • Thực hiện update và cài đặt gói bổ trợ :
yum install -y epel-release
yum update -y
yum install -y git wget curl byobu
yum install -y pwgen
yum install -y httpd
  • Khởi động dịch vụ http
systemctl start httpd 
systemctl enable httpd 
  • Thiết lập hostname
hostnamectl set-hostname graylogserver
echo  "127.0.0.1 localhost graylogserver" > /etc/hosts
echo  "192.168.161.50 graylogserver" >> /etc/hosts
  • Tắt selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
  • Khởi động lại hệ thống
reboot

2.2 Cài đặt NTP

Cấu hình thời gian là 1 bước rất quan trọng vì để nhận log 1 cách chính xác nhất thì thời gian cũng phải chính xác.

Có 2 cách cài ntp là ta có thể cấu hình thủ công trong file ntp.conf hoặc sử dụng máy chủ ntp từ mạng bên ngoài.

Trong trường hợp này ta sẽ cài đặt và sử dụng máy chủ ntp từ mạng bên ngoài.

  • Tiến hành cấu hình ntp trên cả máy client và server :
yum install -y chrony
  • Khởi động và kích hoạt chrony :
systemctl start chronyd
systemctl enable chronyd
  • Kiểm tra đồng bộ hóa thời gian với máy chủ ntp :
chronyc sources
210 Number of sources = 4
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
/etc/host.conf: line 1: bad command `Graylogserver.local'
^* 162.159.200.1                 3   6    17     9   -364us[-2797us] +/-   59ms
^+ no-ptr.123host.vn             3   6    17     9  +3878us[+1444us] +/-  148ms
^? static.vnpt.vn                0   6     0     -     +0ns[   +0ns] +/-    0ns
^+ mail.khangthong.vn            2   6    17    10  -3581us[-6015us] +/-  133ms
  • Kiểm tra lại thời gian bằng lệnh timedatectl, , thu được kết quả như dưới là đã thành công .
[root@client01 ~]# timedatectl
      Local time: Wed 2019-12-25 00:27:42 +07
  Universal time: Tue 2019-12-24 17:27:42 UTC
        RTC time: Tue 2019-12-24 17:27:43
       Time zone: Asia/Ho_Chi_Minh (+07, +0700)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a
[root@Graylogserver ~]# timedatectl
      Local time: Wed 2019-12-25 00:26:36 +07
  Universal time: Tue 2019-12-24 17:26:36 UTC
        RTC time: Tue 2019-12-24 17:26:36
       Time zone: Asia/Ho_Chi_Minh (+07, +0700)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a

2.3 Cài đặt java

Dịch vụ graylog được viết bằng java nên trước khi cài graylog ta phải cài java.

yum install -y java-1.8.0-openjdk

2.4 Cài đặt MongoDB

  • Khai báo repo cho MongoDB

Tiến hành tạo file /etc/yum.repos.d/mongodb-org-4.0.repo và khai báo nội dung như sau :

cat <<EOF> /etc/yum.repos.d/mongodb-org-4.0.repo
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
EOF
  • Cài đặt MongoDB :
yum install -y mongodb-org
  • Khởi động MongoDB :
systemctl daemon-reload
systemctl enable mongod.service
systemctl start mongod.service
  • Kiểm tra trạng thái của MongoDB :
systemctl status mongod

2.5 Cài đặt Elaticsearch

  • Khai báo repo cho Elaticsearch :

Tạo file /etc/yum.repos.d/elasticsearch.repo và khai báo nội dung như sau :

cat <<EOF> /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF
  • Cài đặt Elaticsearch
yum install -y elasticsearch
  • Sửa file cấu hình /etc/elasticsearch/elasticsearch.yml của elaticsearch như sau :
sed -i 's/#cluster.name: my-application/cluster.name: graylog/g' /etc/elasticsearch/elasticsearch.yml
  • Khởi động lại Elaticsearch
systemctl daemon-reload
systemctl enable elasticsearch.service
systemctl restart elasticsearch.service
  • Kiểm tra trạng thái của elasticseach
systemctl status elasticsearch.service

2.6 Cài đặt graylog

  • Tải về repo của graylog
rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-3.1-repository_latest.rpm
  • Cài đặt graylog 3.1
yum install -y graylog-server
  • Sử dụng pwgen để tạo 1 chuỗi hash gồm 96 ký tự để khai báo cho password_secret sau đó lưu vào file cấu hình :
pass_secret=$(pwgen -N 1 -s 96)
sed -i -e 's|password_secret =|password_secret = '$pass_secret'|' /etc/graylog/server/server.conf

Pass_Secret – thiết lập 1 mật khẩu bí mật được sử dụng để mã hóa mật khẩu và thêm salting (muối – độ mặn) tăng độ phức tạo của quá trình băm để giảm thiếu các cuộc tấn công mật khẩu.

  • Tiếp theo, tạo mật khẩu đăng nhập cho tài khoản admin để đăng nhập graylog :
echo -n thuctapsinh@123 | sha256sum

Lưu ý : thuctapsinh@123 là mật khẩu được sử dụng cho tài khoản admin.

Sau khi tạo, mật khẩu sẽ có dạng như sau :

993f2322f02ec3ce3d7849391b6f3668124130e83d32b96074bfa29c15d051b8
  • Lưu lại và gán cho root_password_sha2.
sed -i 's|root_password_sha2 =|root_password_sha2 = 993f2322f02ec3ce3d7849391b6f3668124130e83d32b96074bfa29c15d051b8|g' /etc/graylog/server/server.conf
  • Sửa thời gian
sed -i 's|#root_timezone = UTC|root_timezone = Asia/Ho_Chi_Minh|' /etc/graylog/server/server.conf
  • Để truy cập trang web bằng địa chỉ ip máy Graylog, ta cần sửa địa chỉ ip mặc định thành địa chỉ ip của máy.
sed -i 's|#http_bind_address = 127.0.0.1:9000|http_bind_address = 10.10.34.101:9000|' /etc/graylog/server/server.conf
  • Khởi động dịch vụ graylog-server
systemctl daemon-reload
systemctl enable graylog-server.service
systemctl start graylog-server.service
  • Kiểm tra trạng thái của graylog-server :
systemctl status graylog-server
  • Để truy cập graylog qua port 9000, ta cần tiến hành mở port trên firewall :
firewall-cmd --zone=public --add-port=9000/tcp --permanent
firewall-cmd --reload
  • Sau đó kiểm tra lại xem các port của graylog đã xuất hiện chưa
ss -lan | egrep "9000|27017|9200|9300"

2.7 Đăng nhập

Mở trình duyệt và nhập đường link đã tạo trong file config của graylog 10.10.34.101:9000, đăng nhập bằng tài khoản admin và mật khẩu thuctapsinh@123

Sau khi đăng nhập sẽ có giao diện như bên dưới :

Chúc các bạn thành công !