Как установить 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 важна для защиты вашей системы.
Если вы столкнетесь с какой-либо проблемой в процессе установки, не стесняйтесь комментировать или задавать любые вопросы в разделе комментариев.