Как настроить обратный прокси Graylog Nginx с помощью Let’s Encrypt SSL

Как настроить обратный прокси Graylog Nginx с помощью Let’s Encrypt SSL

 

Добро пожаловать в наше руководство по настройке обратного прокси Graylog Nginx с помощью Letsencrypt SSL. Последний учебник, связанный с Graylog, был посвящен  установке Graylog 3 на CentOS 8 . Он довольно хорошо охватывал все этапы настройки Graylog. Единственным недостатком было то, что вам нужно получить доступ к интерфейсу Graylog, используя IP-адрес и номер порта без проверенного сертификата SSL.

В этом руководстве я хочу, чтобы мы рассмотрели, как настроить обратный прокси Graylog Nginx с помощью Letsencrypt SSL. Таким образом, вы можете использовать домен или имя хоста с проверенным сертификатом SSL.

Шаг 1. Настройте обратный прокси Graylog Nginx с помощью Letsencrypt SSL

Первым шагом является установка клиента Letsencrypt, такого как certbot, который мы будем использовать для запроса сертификата, который будет использоваться Graylog.

Установить certbot-auto

Выполните следующие команды, чтобы установить инструмент cerbot.

wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
sudo mv certbot-auto /usr/local/bin/

Подтвердите установку, проверив версию:

$ certbot-auto --version

Откройте порт https в брандмауэре:

Мы будем использовать порт http для запроса сертификата SSL, поэтому откройте его в брандмауэре. При использовании ufw или iptables замените команды здесь эквивалентными командами.

sudo firewall-cmd --add-service={http,https} --permanent
sudo firewall-cmd --reload

Запрос SSL-сертификата

Запрос сертификата Letsencrypt с помощью команды certbot-auto.

export DOMAIN='graylog.mydomain.com'
export EMAIL="[email protected]"
sudo certbot-auto certonly --standalone -d $DOMAIN --preferred-challenges http \
 --agree-tos -n -m $EMAIL --keep-until-expiring

Это может занять некоторое время, так как он начнется с загрузочных зависимостей, создания виртуальной среды python и установки в нее пакетов Python и, наконец, создания сертификата. Подождите, пока команда выдаст ответ, что сертификаты были успешно сгенерированы.

Сообщение об успехе выглядит так:

.....
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/domain.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/domain.com/privkey.pem Your cert will expire on 2018-06-07. To obtain a new or tweaked
version of this certificate in the future, simply run certbot-auto
again. To non-interactively renew *all* of your certificates, run
"certbot-auto 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

Шаг 2. Установить и настроить Nginx

Теперь нам нужно установить и настроить Nginx.

sudo yum -y install nginx  # CentOS
sudo apt-get install nginx # Ubuntu / Debian

Мы поместим конфигурацию nginx для graylog в  /etc/nginx/conf.d/graylog.conf . Замените  domain.com  с Graylog домена / субдомена , имя.

server {
 listen 443 ssl;
 server_name domain.com www.domain.com;
 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://domain.com/api;
   proxy_pass http://127.0.0.1:9000;
   # proxy_pass http://ip-address:9000;
 }
 ssl on;
 ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;
 ssl_session_timeout 5m;
 ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
 ssl_protocols TLSv1.2;
 ssl_prefer_server_ciphers on;
 access_log /var/log/nginx/graylog.access.log;
 error_log /var/log/nginx/graylog.error.log;
}

# http to https redirection
server {
    listen 80;
    server_name domain.com www.domain.com;
    add_header Strict-Transport-Security max-age=2592000;
    rewrite ^ https://$server_name$request_uri? permanent;
}

Сохраните конфигурацию и проверьте с помощью nginx, верен ли его синтаксис.

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

Шаг 3. Запустить и включить службу nginx

Приступите к запуску и включите службу nginx.

sudo systemctl start nginx
sudo systemctl enable nginx

Посещение указанного домена должно перенаправить вас на https.

Надеюсь, что настройка обратного прокси Graylog Nginx с помощью Letsencrypt SSL сработала для вас. Я расскажу о создании потоков, входов и панели мониторинга в следующих уроках.

Author: forgero