前に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にしておくといいだろう)。