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

от автора

Всем привет! Данное руководство поможет вам установить централизованное логирование событий на основе 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.


ссылка на оригинал статьи https://habr.com/ru/company/timeweb/blog/597365/