Как стать автором
Обновить
2125.95

Поднимаем Graylog сервер на AlmaLinux 8.5

Время на прочтение6 мин
Количество просмотров4.2K

Всем привет! Данное руководство поможет вам установить централизованное логирование событий на основе Graylog версии 4.2.1 (на момент написания статьи). Использовать мы будем операционную систему AlmaLinux 8.5 (альтернатива CentOS 8 от Red Hat). В процессе установки Graylog, мы рассмотрим первоначальную настройку сервера, настройку правил файрвола, а также использование NGINX в качестве обратного прокси серверу Graylog’а.

Вводные данные:

  1. Свежеустановленный сервер на базе AlmaLinux release 8.5 (Arctic Sphynx);

  2. 8 CPUs, 15 GB RAM и раздел подкачки размером 4 GB;

  3. Graylog будет доступен по адресу https://logs.example.com

После установки операционной системы AlmaLinux, нам необходимо её настроить для дальнейшего использования. То есть усилить безопасность настроек демона sshd, выбрать часовой пояс, настроить синхронизацию времени и установить дополнительные пакеты программ и т. п.

Напишем небольшой скрипт для этого:

vi /root/AlmaLinux8-setup.sh
#!/bin/bash

echo "Disabling SELinux mode..."
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0

echo "Disabling FirewallD..."
systemctl stop firewalld
systemctl disable firewalld

echo "Installing iptables utils..."
dnf install iptables-services iptstate -y
systemctl enable --now iptables.service

echo "Hardening SSH configuration..."
sed -i 's/#AddressFamily any/AddressFamily inet/g' /etc/ssh/sshd_config
sed -i 's/#LoginGraceTime 2m/LoginGraceTime 1m/g' /etc/ssh/sshd_config
sed -i 's/#MaxAuthTries 6/MaxAuthTries 2/g' /etc/ssh/sshd_config
sed -i 's/#MaxSessions 10/MaxSessions 3/g' /etc/ssh/sshd_config
sed -i 's/#AllowAgentForwarding yes/AllowAgentForwarding no/g' /etc/ssh/sshd_config
sed -i 's/#AllowTcpForwarding yes/AllowTcpForwarding no/g' /etc/ssh/sshd_config
sed -i 's/X11Forwarding yes/X11Forwarding no/g' /etc/ssh/sshd_config
systemctl reload sshd

echo "Configure NTP client..."
rm -f /etc/localtime
ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime
sed -i 's/OPTIONS=""/OPTIONS="-4"/g' /etc/sysconfig/chronyd
systemctl restart chronyd

echo "Installing additional utils..."
dnf check-update
dnf install dnf-utils -y
dnf install epel-release -y
dnf install bind-utils htop iftop lsof net-tools nmap-ncat pwgen rsync screen sysstat unzip wget -y

echo "If RAM is used on 90%, activate swap..."
echo 'vm.swappiness=10' >> /etc/sysctl.conf
echo "Set maximum socket receive buffer size…"
echo 'net.core.rmem_max=524288' >> /etc/sysctl.conf
sysctl -p

Делаем скрипт исполняемым и запускаем:

chmod u+x /root/AlmaLinux8-setup.sh
/root/AlmaLinux8-setup.sh

Далее необходимо настроить правила фильтрации трафика, можно использовать bash скрипт, с которым удобно будет управлять правилами файрвола:

vi /root/iptables_rules.sh
#!/bin/bash

# vars
ipt="iptables"
ext_if="ens192"

# flush rules
$ipt -F
$ipt -F -t nat
$ipt -F -t mangle
$ipt -X
$ipt -X -t nat
$ipt -X -t mangle

# default policies
$ipt -P INPUT DROP
$ipt -P FORWARD DROP
$ipt -P OUTPUT ACCEPT

# accept established and related connections
$ipt -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# allow icmp traffic
$ipt -A INPUT -p icmp -j ACCEPT

# allow traffic to loopback
$ipt -A INPUT -i lo -j ACCEPT

# allow ssh connections to host 
$ipt -A INPUT -i $ext_if -p tcp -m state --state NEW --dport 22 -j ACCEPT

# allow web traffic to host
$ipt -A INPUT -i $ext_if -p tcp -m state --state NEW -m multiport --dports 80,443 -j ACCEPT

# show rules
$ipt -S

Также делаем скрипт исполняемым и запускаем:

chmod u+x /root/iptables_rules.sh
/root/iptables_rules.sh

Если текущие правила файрвола вас устраивают, можно сохранить и добавить их в автозапуск:

/sbin/iptables-save > /etc/sysconfig/iptables

Для работы Elasticsearch и Graylog необходима поддержка Java на сервере:

dnf install java-1.8.0-openjdk-headless.x86_64 -y
java -version

Для установки Elasticsearch, импортируем вначале ключ с официального репозитория и создаем конфигурационный файл репозитория:

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
cat <<'EOT' >> /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/oss-7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOT

Устанавливаем Elasticsearch командой:

dnf install elasticsearch-oss -y

Теперь необходимо отредактировать конфигурационный файл Elasticsearch для работы с Graylog. Добавьте в конец файла следующие параметры:

echo 'cluster.name: graylog' >> /etc/elasticsearch/elasticsearch.yml
echo 'action.auto_create_index: false' >> /etc/elasticsearch/elasticsearch.yml

Увеличиваем объем Java JVM heap size для Elasticsearch до 4 GB (по умолчанию максимальный размер 1 GB):

vi /etc/elasticsearch/jvm.options
-Xms4g
-Xmx4g

После внесенных изменений можно запустить Elasticsearch:

systemctl daemon-reload
systemctl enable --now elasticsearch
systemctl status elasticsearch
ss -tlpn | grep java

Для установки MongoDB, необходимо вначале создать конфигурационный файл репозитория:

cat <<'EOT' >> /etc/yum.repos.d/mongodb-org-5.0.repo
[mongodb-org-5.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/5.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc
EOT

Устанавливаем MongoDB командой:

dnf install mongodb-org -y

Запускаем и проверяем MongoDB:

systemctl daemon-reload
systemctl enable --now mongod
systemctl status mongod
ss -tlpn | grep mongod

Для установки Graylog скачиваем файл репозитория:

rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-4.2-repository_latest.rpm

Устанавливаем Graylog командой:

dnf install graylog-server -y

Далее необходимо сгенерировать секретный пароль и назначить его в строке password_secret в конфигурационном файле /etc/graylog/server/server.conf.

pwgen -N 1 -s 96

Затем назначьте хэш пароля для root_password_sha2 в /etc/graylog/server/server.conf:

echo -n P@$$w0rd | sha256sum

Увеличиваем объем Java JVM heap size для Graylog до 4 GB (по умолчанию максимальный размер 1 GB):

vi /etc/sysconfig/graylog-server
GRAYLOG_SERVER_JAVA_OPTS="-Xms4g -Xmx4g -XX:NewRatio=1 -server -XX:+ResizeTLAB -XX:-OmitStackTraceInFastThrow"

После внесенных изменений запускаем Graylog:

systemctl daemon-reload
systemctl enable --now graylog-server
systemctl status graylog-server
ss -tlpn | grep ':9000'
cat /var/log/graylog-server/server.log

Так как Graylog у нас будет находиться за обратным прокси, необходимо установить NGINX и получить валидные сертификаты для домена с помощью certbot:

dnf install nginx certbot-nginx -y
systemctl enable --now nginx
certbot certonly --nginx -d logs.example.com
cat <<'EOT' >> /etc/nginx/conf.d/logs_example_com.conf
server {
    listen       80;
    server_name  logs.example.com;

    return 301 https://$host$request_uri;

    root /usr/share/nginx/html;

    location / {
        deny all;
    }

    location ^~ /.well-known {
        default_type 'text/plain';
        allow all;
    }

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    error_log   /var/log/nginx/logs_example_com_error.log error;
    access_log  /var/log/nginx/logs_example_com_access.log;
}

server {
    listen      443 ssl;
    server_name logs.example.com;

    ssl_certificate /etc/letsencrypt/live/logs.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/logs.example.com/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;
    ssl_session_cache shared:SSL:10m;

    root /usr/share/nginx/html;

    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;
    }

    location ^~ /.well-known {
        default_type 'text/plain';
        allow all;
    }

    error_log   /var/log/nginx/logs_example_com_ssl_error.log error;
    access_log  /var/log/nginx/logs_example_com_ssl_access.log;
}
EOT

Проверяем и перечитываем конфиг nginx:

nginx -t
nginx -s reload

Открываем сайт в браузере:

http://logs.example.com

Поздравляем! Вы успешно установили Graylog. Благодарим за использование этого руководства по установке Graylog в системе AlmaLinux 8.5 (Arctic Sphynx). Для получения дополнительной информации рекомендуем посетить официальный сайт Graylog.

Теги:
Хабы:
Всего голосов 10: ↑6 и ↓4+2
Комментарии7

Публикации

Информация

Сайт
timeweb.cloud
Дата регистрации
Дата основания
Численность
201–500 человек
Местоположение
Россия
Представитель
Timeweb Cloud