Как установить Graylog Server на Ubuntu 20.04 с Let’s Encrypt SSL

Как установить Graylog Server на Ubuntu 20.04 с Let’s Encrypt SSL

 

Graylog — это инструмент для агрегирования и управления журналами с открытым исходным кодом, который можно использовать для хранения, анализа и отправки предупреждений из собранных журналов. Graylog можно использовать для анализа как структурированных, так и неструктурированных журналов с помощью ElasticSearch и MongoDB. Это включает в себя множество систем, включая системы Windows, системы Linux, различные приложения, микросервисы и т. Д.

Graylog упрощает анализ и мониторинг этих систем и приложений с одного хоста.

Graylog состоит из следующих компонентов:

  • Сервер Graylog
  • MongoDB
  • ElasticSearch

Давайте быстро перейдем к установке сервера Graylog на хосте Ubuntu 20.04. Затем мы настроим SSL с помощью Let’sEncrypt.

Для этого нам нужно установить Nginx, который будет выступать в качестве обратного прокси в нашей системе.

 

Необходимые условия для установки

Прежде чем мы сможем установить на ваш компьютер, убедитесь, что ваш хост соответствует следующим минимальным требованиям:

  • 4 ядра процессора
  • 8 ГБ RAM
  • Пространство на жестком диске SSD с высоким IOPS для хранилища журналов Elasticsearch
  • Ubuntu 20.04 LTS установлен и обновлен.
  • Все пакеты обновлены

При соблюдении вышеуказанных условий приступим к процессу установки.

Шаг 1. Установите Java в Ubuntu 20.04.

Для установки Graylog требуется Java версии 8 и выше.
В этом посте мы будем использовать открытый JDK 11

sudo apt update
sudo apt install -y apt-transport-https openjdk-11-jre-headless uuid-runtime pwgen curl dirmngr

Вы можете проверить версию java, которую вы только что установили, с помощью java -versionкоманды:

$ java -version
openjdk version "11.0.9" 2020-10-20
OpenJDK Runtime Environment (build 11.0.9+11-Ubuntu-0ubuntu1.20.04)
OpenJDK 64-Bit Server VM (build 11.0.9+11-Ubuntu-0ubuntu1.20.04, mixed mode, sharing)

Шаг 2. Установите Elasticsearch в Ubuntu 20.04.

Эластичный поиск — это инструмент, который используется для хранения и анализа входящих журналов из внешних источников. Он использует веб-интерфейс RESTful API.

Загрузите и установите ключ подписи Elasticsearch GPG.

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

Добавьте репозиторий Elasticsearch в список источников:

echo "deb https://artifacts.elastic.co/packages/oss-6.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-6.x.list

Установите Elasticsearch:

sudo apt update
sudo apt install -y elasticsearch-oss

Настройте имя кластера для Graylog.

sudo vim /etc/elasticsearch/elasticsearch.yml

Измените имя кластера на graylog

cluster.name: graylog

Добавьте следующую информацию в тот же файл

action.auto_create_index: false

Перезагрузите демон при запуске службы Elasticsearch.

sudo systemctl daemon-reload
sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch

Вы можете проверить статус услуги:

$ systemctl status elasticsearch
● elasticsearch.service - Elasticsearch
     Loaded: loaded (/lib/systemd/system/elasticsearch.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2020-11-08 12:36:10 UTC; 14s ago
       Docs: http://www.elastic.co
   Main PID: 1352139 (java)
      Tasks: 15 (limit: 4582)
     Memory: 1.1G
     CGroup: /system.slice/elasticsearch.service
             └─1352139 /bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -Des.>

Nov 08 12:36:10 graylog.infoit.com.ua systemd[1]: Started Elasticsearch.

Elasticsearch работает на порту 9200, и это можно сделать вирусом с помощью curlкоманды:

curl -X GET http://localhost:9200

Вы должны увидеть имя своего кластера в выводе.

$ curl -X GET http://localhost:9200
{
  "name" : "RQ7y68X",
  "cluster_name" : "graylog",
  "cluster_uuid" : "Dp948OGjT-uFz_LuOiW6ng",
  "version" : {
    "number" : "6.8.13",
    "build_flavor" : "oss",
    "build_type" : "deb",
    "build_hash" : "be13c69",
    "build_date" : "2020-10-16T09:09:46.555371Z",
    "build_snapshot" : false,
    "lucene_version" : "7.7.3",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

Шаг 3 — Установите MongoDB в Ubuntu 20.04

Загрузите и установите mongoDB из базового репозитория Ubuntu.

sudo apt update
sudo apt install -y mongodb-server

Запустить MongoDB

sudo systemctl start mongodb
sudo systemctl enable mongodb
$ systemctl status mongodb
● mongodb.service - An object/document-oriented database
     Loaded: loaded (/lib/systemd/system/mongodb.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2020-11-08 12:45:21 UTC; 1s ago
       Docs: man:mongod(1)
   Main PID: 1352931 (mongod)
      Tasks: 3 (limit: 4582)
     Memory: 27.9M
     CGroup: /system.slice/mongodb.service
             └─1352931 /usr/bin/mongod --unixSocketPrefix=/run/mongodb --config /etc/mongodb.conf

Nov 08 12:45:21 graylog.infoit.com.ua systemd[1]: Started An object/document-oriented database.

Шаг 4 — Установите Graylog Server в Ubuntu 20.04

Скачайте и настройте репозиторий Graylog.

wget https://packages.graylog2.org/repo/packages/graylog-3.3-repository_latest.deb
sudo apt install ./graylog-3.3-repository_latest.deb

Установите сервер Graylog:

sudo apt update
sudo apt install -y graylog-server

Сгенерируйте секрет для защиты паролей пользователей с помощью pwgenкоманды.

pwgen -N 1 -s 96

Результат должен выглядеть так:

FFP3LhcsuSTMgfRvOx0JPcpDomJtrxovlSrbfMBG19owc13T8PZbYnH0nxyIfrTb0ANwCfH98uC8LPKFb6ZEAi55CvuZ2Aum

Отредактируйте файл конфигурации graylog, чтобы добавить только что созданный секрет:

sudo vim /etc/graylog/server/server.conf

Найдите password_secret =строку и добавьте после нее созданный выше секрет.

password_secret= FFP3LhcsuSTMgfRvOx0JPcpDomJtrxovlSrbfMBG19owc13T8PZbYnH0nxyIfrTb0ANwCfH98uC8LPKFb6ZEAi55CvuZ2Aum

Также добавьте в /etc/graylog/server/server.confфайл следующие строки.

rest_listen_uri = http://127.0.0.1:9000/api/
web_listen_uri = http://127.0.0.1:9000/

Следующим шагом является создание хеш-пароля sha256 для администратора. Это пароль, который вам понадобится для входа в веб-интерфейс.

echo -n Str0ngPassw0rd | sha256sum

Замените «Str0ngPassw0rd» паролем по вашему выбору.

Вы получите такой вывод:

e3c652f0ba0b4801205814f8b6bc49672c4c74e25b497770bb89b22cdeb4e951

Отредактируйте /etc/graylog/server/server.confфайл, затем поместите хэш-пароль вroot_password_sha2 =

sudo vi /etc/graylog/server/server.conf
root_password_sha2 = e3c652f0ba0b4801205814f8b6bc49672c4c74e25b497770bb89b22cdeb4e951

Graylog теперь настроен и готов к использованию.

Запустите сервис Graylog:

sudo systemctl daemon-reload
sudo systemctl start graylog-server
sudo systemctl enable graylog-server

Вы можете проверить, успешно ли запустилась служба, из журналов:

sudo tail -f /var/log/graylog-server/server.log

Вывод:

2020-11-08T13:37:55.067Z INFO  [ServerBootstrap] Graylog server up and running.

Шаг 5 — Настройте SSL с помощью Let’s Encrypt

Следующим шагом является настройка SSL, чтобы мы могли получить доступ к веб-интерфейсу Graylog через HTTPS.

Для этого нам понадобится следующее:

  • Полное доменное имя (FQDN)
  • Nginx
  • Сертификат Let’sEncrypt

Выполните следующие действия, чтобы установить и настроить ngiinx.

1. Обновить систему и установить nginx

sudo apt-get update
sudo apt install nginx

2. Настройте брандмауэр.

sudo ufw allow 'Nginx Full'

3. Создайте виртуальный хост с вашим доменным именем.

Создайте файл, /etc/nginx/sites-available/ например,

sudo vim /etc/nginx/sites-available/graylog.yourdomain.com.conf

Добавьте в файл следующее:

server {
  listen 80;
  server_name           graylog.yourdomain.com;

  return 301            https://$host$request_uri;
  access_log            /var/log/nginx/graylog.yourdomain.com.access.log combined;
  error_log             /var/log/nginx/graylog.yourdomain.com.error.log;
}

Не забудьте заменить graylog.yourdomain.com своим полным доменным именем .

4. Создайте символическую ссылку только что созданного файла /etc/nginx/sites-available на /etc/nginx/sites-enabled

sudo ln -s /etc/nginx/sites-available/graylog.yourdomain.com.conf /etc/nginx/sites-enabled/

5. Проверьте, в порядке ли конфигурация nginx, запустив nginx -tкоманду.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

6. Установите Let’sEncrypt с помощью certbot.

sudo apt install certbot python3-certbot-nginx

7. Запустите certbot для nginx.

$ sudo certbot --nginx
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email protected]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: N
Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: graylog.infoit.com.ua
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for graylog.infoit.com.ua
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/graylog.infoit.com.ua.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/sites-enabled/graylog.infoit.com.ua.conf

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

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

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/graylog.infoit.com.ua/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/graylog.infoit.com.ua/privkey.pem
   Your cert will expire on 2021-02-06. 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"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - 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

Вы успешно получили SSL для нашего домена.

Следующим шагом является настройка обратного прокси-сервера на Nginx, который будет использоваться для обслуживания Graylog, который работает на том же хосте на порту 9000.

Отредактируйте /etc/nginx/sites-available/graylog.yourdomain.com.confфайл и добавьте в Locationраздел следующую конфигурацию .

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

Окончательный файл конфигурации должен выглядеть так:

server {
  listen 80;
  server_name           graylog.infoit.com.ua;

  return 301            https://$host$request_uri;
  access_log            /var/log/nginx/graylog.infoit.com.ua.access.log combined;
  error_log             /var/log/nginx/graylog.infoit.com.ua.error.log;
}

server {

        root /var/www/html;
        index index.html index.htm index.nginx-debian.html;
        server_name graylog.infoit.com.ua;


    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/graylog.infoit.com.ua/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/graylog.infoit.com.ua/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

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

Проверьте свою конфигурацию nginx, nginx -t просто чтобы убедиться, что ваша конфигурация nginx в порядке.

Теперь перезапустите службу nginx.

sudo systemctl restart nginx

После того, как все это будет запущено, вы сможете получить доступ к панели управления серым журналом, введя https://graylog.yourdomain.com.

Не забудьте заменить graylog.yourdomain.comсвое полное доменное имя.

Имя пользователя по умолчанию для Graylog — admin, а пароль мы настроили на шаге 4 (Установка сервера Graylog) выше. В моем случае это будет «Str0ngPassw0rd».

Теперь вы можете начать использовать свою веб-панель Graylog, настроенную с использованием SSL.

Заключение

Мы успешно установили сервер Graylog, настроили SSL через Nginx в качестве обратного прокси-сервера и смогли войти в веб-интерфейс.

Настройка SSL на сервере Graylog важна для защиты вашей системы.

Если вы столкнетесь с какой-либо проблемой в процессе установки, не стесняйтесь комментировать или задавать любые вопросы в разделе комментариев.