Graylogサーバを構築して、Pleskのログを見れるようにする

2023/07/18 What's Up, 情報セキュリティ, 技術系 投稿者:

サーバなどのログ調査では、欲しい情報を得るためにいくつものコマンドを組み合わせたり、複数のログファイルを確認しなければならなかったりと手間がかかります。
しかし、SIEM(Security Information and Event Management)を使うことで、これらの手間を軽減することができます。
今回はGraylogというOSS(Open Source Software)を使用して、SIEMサーバを構築していきます。

機器の構成について

Graylogサーバ

OS:AlmaLinux9.2
CPU:2コア
メモリ:4GB
ストレージ:500GB

Pleskサーバ

OS:AlmaLinux8.8
Plesk:Plesk Obsidian 18.0.53.2

構成図

今回の構成では図の通りFW(Firewall)があり、FWで外部からGraylogサーバへのアクセスを制限するため、Graylogサーバ側のセキュリティ機能は無効化しています。
また、PleskサーバからGraylogサーバへのログの転送にはFilebeatを使用します。

Graylogサーバの構築

Graylogのインストールには下記が必要となります。
なお、Graylogのバージョンは5.1です。

  • MongoDB 5.x~6.x
  • OpenSearch2.xのいずれか(またはElasticsearch 7.10.2)
  • OpenJDK 17

Elasticsearchはサポートされるバージョンが7.10.2のみなので、OpenSearchを使用します。
また、OpenJDKについてはGraylog本体に含まれているため、個別にインストールする必要はありません。

これらはGraylogのドキュメントで公開されています。
インストール手順もこちらのドキュメントに沿って進めていきます。

MongoDBインストール

MongoDBのインストール手順は次の通りです。

リポジストリ追加

# vi /etc/yum.repos.d/mongodb-org.repo
—————————————-
[mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc
—————————————-

MongoDBインストール

# dnf -y install mongodb-org

MongoDB起動

# systemctl start mongod
# systemctl enable mongod

MongoDBのインストールは以上です。

OpenSearchインストール

OpenSearchのインストール手順は次の通りです。

リポジストリ追加

# curl -SL https://artifacts.opensearch.org/releases/bundle/opensearch/2.x/opensearch-2.x.repo -o /etc/yum.repos.d/opensearch-2.x.repo

OpenSearchインストール

# dnf -y install opensearch

続いて、ドキュメントに従い設定変更していきます。

# vi /etc/opensearch/opensearch.yml
—————————————-
↓変更
cluster.name: graylog
node.name: ${HOSTNAME}
network.host: 0.0.0.0

↓追加
discovery.type: single-node
action.auto_create_index: false
plugins.security.disabled: true
—————————————-

jvmのXmsとXmxをシステムメモリの半分に設定

# vi /etc/opensearch/jvm.options
—————————————-
-Xms1g
-Xmx1g
↓変更
-Xms2g
-Xmx2g
—————————————-

RHEL9の場合、/usr/lib/tmpfiles.d/opensearch.confの「/var/run/opensearch」を「/run/opensearch」に変更します。
AlmaLinux9なので、同じように設定します。

# vi /usr/lib/tmpfiles.d/opensearch.conf
—————————————-
d /var/run/opensearch 0755 opensearch opensearch – –
↓変更
d /run/opensearch 0755 opensearch opensearch – –
—————————————-

カーネルパラメータを設定

# sysctl -w vm.max_map_count=262144
# echo ‘vm.max_map_count=262144’ >> /etc/sysctl.conf

OpenSearch起動

# systemctl start opensearch
# systemctl enable opensearch

OpenSearchのインストールは以上です。

Graylogインストール

準備ができたのでGraylog本体をインストールします。
Graylogのインストール手順は次の通りです。

リポジストリ追加

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

Graylogインストール

# dnf -y install graylog-server

①root_password_sha2生成

# echo -n “Enter Password: ” && head -1 </dev/stdin | tr -d ‘\n’ | sha256sum | cut -d” ” -f1
—————————————-
Enter Password:[パスワード]
—————————————-

②password_secret生成

# < /dev/urandom tr -dc A-Z-a-z-0-9 | head -c${1:-96};echo;

Graylog設定ファイル修正

# vi /etc/raylog/server/server.conf
—————————————-
root_password_sha2 = ①で生成した文字列
password_secret = ②で生成した文字列
root_timezone = Asia/Tokyo
http_bind_address = 0.0.0.0:9000
—————————————-

Graylog起動

# systemctl start graylog-server
# systemctl enable graylog-server

Graylogが起動したら、ブラウザから「http://GraylogサーバのIPアドレス:9000」で接続できます。
デフォルトユーザ名は「admin」、パスワードは①で設定したものになっています。

 

ログ転送設定

ここまででGraylogをサーバ上で動作させることができるようになりましたが、それだけでは何も起きません。
Graylogに何かしらのログを受信させる必要があります。

ログ受信設定

まずはGraylog側でログの受け入れ態勢を整えておきます。
今回はPleskサーバからFilebeatを使用してGraylogにログを転送するため、それに合わせた設定となります。

「System/Inputs」→「Inputs」を開く

「Select input」→「Beats」を選択

「Title」→任意の名前を設定
「Bind address」→0.0.0.0を設定
「Port」→任意のポート番号を設定(今回は5044)

これでGraylog側のログを受け入れる設定は完了です。

ログ転送設定

ログの転送元となるPleskサーバからはFilebeatを使用して、Graylogサーバにログを転送します。
今回はApacheのログをGraylogに転送します。
まずはFilebeatをインストールします。

GPGキーのインポート

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

リポジストリ追加

# vi /etc/yum.repos.d/elastic.repo
————————————–
[elasticsearch]
name=Elasticsearch repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
————————————–

Filebeatインストール

# dnf -y install filebeat

続いて、ログの転送設定をしていきます。

# vi /etc/filebeat/filebeat.yml
Elasticsearch Outputセクション
————————————–
#output.elasticsearch: ←コメントアウト
# Array of hosts to connect to.
# hosts: [“localhost:9200”] ←コメントアウト
————————————–
Logstash Outputセクション
————————————–
output.logstash: ←コメントアウト解除
# The Logstash hosts
hosts: [“GraylogサーバのIPアドレス:5044”] ←コメントアウト解除、Graylogサーバを指定
————————————–

ApacheモジュールにPleskのApacheログを設定

# cd /etc/filebeat/module.d
# cp -a apache.yml.disable apache.yml
# vi apache.yml
————————————–
# Module: apache
# Docs: https://www.elastic.co/guide/en/beats/filebeat/8.8/filebeat-module-apache.html

– module: apache

# Access logs
access:
enabled: true

# Set custom paths for the log files. If left empty,
# Filebeat will choose the paths depending on your OS.
var.paths:
– /var/www/vhosts/system/*/logs/access_log
– /var/www/vhosts/system/*/logs/access_ssl_log
– /var/www/vhosts/system/*/logs/proxy_access_log
– /var/www/vhosts/system/*/logs/proxy_access_ssl_log

# Error logs
error:
enabled: true

# Set custom paths for the log files. If left empty,
# Filebeat will choose the paths depending on your OS.
var.paths:
– /var/www/vhosts/system/*/logs/error_log
– /var/www/vhosts/system/*/logs/proxy_error_log
————————————–

Filebeat起動

# systemctl start filebeat
# systemctl enable filebeat

これでGraylogにログが転送されるようになります。
GraylogのSearchを開くと、下図のように転送されてきたログが表示されるはずです。

ログから情報を抽出

GraylogでPleskサーバから送られてきたログを見られるようになりましたが、Graylogの本領発揮はこれからです。
Graylogには受信したログの加工や集計、グラフ化などの機能があり、これらを駆使してこそGraylogサーバを構築する意味があります。

例としてExtractorを使用してログから接続元のIPアドレスを抽出して集計してみます。
今回Pleskサーバから送られてきているアクセスログでは、ログの先頭に接続元のIPアドレスがあるので、正規表現でこれを抽出します。
抽出したIPアドレスは「IP_FROM」というフィールドを新しく作って、そちらに格納します。

抽出した「IP_FROM」を集計させると

このように、接続元IPアドレス毎にログに出現している件数を集計することができます。
今回はApacheのログで試しましたが、Apache以外にも多様なログから様々な情報を得ることができます。

まとめ

サーバなどのログ調査はよくある作業ですが、地味に大変な作業でもあります。
利用環境を整えるまでは大変ですが、今回構築したGraylogのようなSIEMがあると、直感的で簡単な操作でログ調査ができるようになったりします。
ただ、実際に80ドメインくらい入っているPleskサーバ1台からApacheのログを受信してみた感じだと、今回のGraylogサーバだとスペック不足な感じがしました。
一方、ログを送信していたPleskサーバ側は、ログ送信にそれほど負荷がかかっているようには見られませんでした。
安定して稼働させるためは、Graylogサーバの方のマシンスペックを十分確保する必要がありそうです。

カレンダー

    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
   1234
567891011
12131415161718
19202122232425
26272829   
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
1234567
891011121314
15161718192021
22232425262728
       
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
     12
3456789
10111213141516
17181920212223
24252627282930
31      
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
     12
3456789
10111213141516
17181920212223
242526272829 
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
    123
45678910
11121314151617
18192021222324
25262728   
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
   1234
567891011
12131415161718
19202122232425
262728    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
1234567
891011121314
15161718192021
22232425262728
29      
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
      1
2345678
9101112131415
16171819202122
232425262728 
       
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
U・Iターン転職しませんか?
群馬データセンター
群馬の法人ITサポートサービス Wide Net[ワイドネット]
Wide Netのクラウドバックアップ
クラウド型ファイル共有サービスRushDrive
ワイドオフィス
ネディアのSDGsへの取り組み