Gray log là 1 công cụ mạnh mẽ để quản lý và phân tích các tệp nhật ký, ở các bài trước mình đã hướng dẫn các bạn cách cài đặt cũng như các thao tác cơ bản với graylog-server. Các bạn có thể tham khảo tại đây. Tuy nhiên Nhược điểm duy nhất là bạn phải truy cập Graylog UI bằng địa chỉ IP và số cổng mà không có chứng chỉ SSL được xác minh.

Trong hướng dẫn này, mình muốn hướng dẫn các bạn cách cấu hình Nginx với ssl let’s encrypt làm reverse proxy cho graylog. Bằng cách này, bạn có thể sử dụng tên miền hoặc tên máy chủ với chứng chỉ SSL đã được xác minh.

Mô hình triển khai :

Mô hình IP như sau:

Các thao tác thực hiện hoàn toàn trên Nginx-server.

Bước 1: Cài đặt Nginx

rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum -y install nginx

Backup file cấu hình:

cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bk

Khởi chạy dịch vụ Nginx

systemctl restart nginx
systemctl enable nginx

Bước 2: Tạo file config của địa chỉ truy cập

Khai báo file config của địa chỉ, mỗi địa chỉ sẽ được khai báo tương ứng với 1 file nằm trong thư mục /etc/nginx/conf.d. Các file có phần mở rộng là .conf

Ta sẽ tạo file với địa chỉ là graylog.hungnv99.com

vi /etc/nginx/conf.d/graylog.hungnv99.com.conf

Sau đó thêm nội dung sau vào file:

server {
    listen 80;
    server_name graylog.hungnv99.com;
    client_max_body_size 1024M;

        location / {
            proxy_set_header   Host                  $host;
            proxy_set_header   X-Real-IP             $remote_addr;
            proxy_set_header   X-Forwarded-For       $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Host      $host;
            proxy_set_header   X-Forwarded-Server    $host;
            proxy_set_header   X-Graylog-Server-URL  http://$server_name/;
            proxy_pass http://10.10.34.192:9000;
        }
}

Kiểm tra lại file vừa tạo:

cat /etc/nginx/conf.d/graylog.hungnv99.com.conf

Kiểm tra và reload lại trạng thái Nginx

[root@nginxsrv ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
systemctl restart nginx

Bước 3: Kiểm tra

Truy cập trình duyệt web và gõ địa chỉ là tên miền http://graylog.hungnv99.com để kiểm tra, trình duyệt hiện ra như này là thành công.

Bước 4: Thiết lập chứng chỉ Let’s Encrypt

Cài đặt Certbot

yum install epel-release -y
yum install certbot-nginx -y

Sinh SSL bằng let’s Encrypt cho site graylog.hungnv99.com

certbot --nginx -d graylog.hungnv99.com

Sau đó điền các thông số như sau:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for graylog.hungnv99.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/conf.d/graylog.hungnv99.com.conf

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/graylog.hungnv99.com.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://graylog.hungnv99.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=graylog.hungnv99.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/graylog.hungnv99.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/graylog.hungnv99.com/privkey.pem
   Your cert will expire on 2020-06-29. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Vào lại file config của site để kiểm tra và sửa thông tin:

vi /etc/nginx/conf.d/graylog.hungnv99.com.conf

Khi vào file, ta thấy sau khi sinh ssl đã có thêm các thông số xuất hiện trong file.

Chuyển đến vị trí số 1 và chỉnh sửa cho giống với trong hình. Vì ở trên mình đặt là http nên sau khi cài ssl thì vị trí số 1 mình phải sửa thành https.

Khởi động lại lại nginx

systemctl restart nginx

Truy cập website bằng tên miền và kiểm tra chứng chỉ

https://graylog.hungnv99.com

Click vào tại ví trí số 1 và chọn Chứng chỉ để kiểm tra chứng chỉ ssl.

Bước 5: Cấu hình tự động renew Certification

Vì Certification sẽ bị hêt hạn trong vòng 3 tháng nên ta có thể sử dung crontab để tự động renew Certification

wget https://dl.eff.org/certbot-auto && chmod a+x certbot-auto
mv certbot-auto /etc/letsencrypt/
echo "0 2 * * 1 cd /etc/letsencrypt/ && ./certbot-auto renew && systemctl restart nginx" >> /etc/crontab
systemctl restart crond

Kết luận :

Như vậy mình đã hướng dẫn các bạn cách cấu hình nginx làm reverse proxy cho graylog-server. Hy vọng bài viết này sẽ giúp ích cho các bạn và mình rất mong nhận được phản hồi dưới phần bình luận. Chúc các bạn thành công !