前にGraylogのSSL化対応について記述したことがあったが、今回は同一OS上にNginxを同居させて、リバースプロキシとして動作させることでSSL化を行う。 設定自体は特に難しいこともなく、すぐに行える。 参考手順は、公式ドキュメントとして用意されているこちら

ただ、Graylog Collector Sidecarを使っている場合は各エージェントで設定変更が必要になるので注意。

1. Graylogの設定変更

先にGraylog側の設定から。 Graylog Serverの設定ファイルである「/etc/graylog/server/server.conf」で、以下のように変更を行う。

rest_listen_uri = http://127.0.0.1:9000/api/
web_listen_uri = http://127.0.0.1:9000/
web_endpoint_uri = https://graylog-server-hostname/api/

設定ファイル編集後、Graylog Serverの再起動を行う。

systemctl restart graylog-server

これで、GraylogのWebインターフェイス等は直接アクセスできない状態になった。

2. Nginxのインストール・設定

次にNginxの設定。 とりあえず、まずはNginxをインストールする必要がある。

yum --enablerepo=epel install nginx # RHEL系の場合
sudo apt install nginx # Debian/Ubuntu系の場合

Nginxインストール後、設定ファイルを編集して、SSLを用いてのリバースプロキシとして動作させる(以下、設定例)。

server {
    listen      443 ssl http2;
    server_name graylog_hostname;
    ssl on;
    ssl_certificate /path/to/cert;
    ssl_certificate_key /path/to/key;

    location /
    {
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    Host $http_host;
        proxy_set_header    X-Graylog-Server-URL https://graylog_hostname/api;
        proxy_pass          http://127.0.0.1:9000;
    }
}

Nginxのサービスを再起動して設定を適用したら、SSL経由でのアクセスができるようになっているはずだ。

なお、Graylog Collector Sidecarを使ってログを収集している場合、APIのポートが変わってしまっているためこのままだとログが取得できない。 各クライアントの設定ファイルにおいて、向き先を変更してやる必要が有るので注意(なお、オレオレ証明書の場合は"tls_skip_verify"もtrueにしておくといいだろう)。