Суббота, 01.06.2024, 22:45
Приветствую Вас Гость | RSS
UBUNTOLOG
Главная | Каталог статей | Регистрация | Вход
Форма входа

Меню сайта
Категории раздела
Server [44]
WEB [14]
Все что связанно с web технологиями
Desktop [11]
Все что связанно с рабочей станцией
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Главная » Статьи » Server

    Установка Zabbix на Centos 8

    Подключаем репозиторий Nginx

    создаем файл 

    /etc/yum.repos.d/nginx.repo

    Вписываем

    [nginx-stable]
    name=nginx stable repo
    baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
    gpgcheck=1
    enabled=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true

    Запускаем

    # dnf install nginx
    # systemctl start nginx
    # systemctl enable nginx

    Настройка fail2ban для Nginx

    vim /etc/fail2ban/jail.local

    #Мониторинг логов

    [nginx-http-auth]
    enabled  = true
    filter   = nginx-http-auth
    port     = http,https
    logpath  = /var/log/nginx/error.log

    #Кто ищет уязвимость в скрипте

    [nginx-noscript]
    enabled  = true
    port     = http,https
    filter   = nginx-noscript
    logpath  = /var/log/nginx/access.log
    maxretry = 6

    #Бан ботов

    [nginx-badbots]
    enabled  = true
    port     = http,https
    filter   = nginx-badbots
    logpath  = /var/log/nginx/access.log
    maxretry = 2

    #Бан кто запрашивает домашний каталог

    [nginx-nohome]
    enabled  = true
    port     = http,https
    filter   = nginx-nohome
    logpath  = /var/log/nginx/access.log
    maxretry = 2

    #Бан кто пытается использовать как прокси

    [nginx-noproxy]
    enabled  = true
    port     = http,https
    filter   = nginx-noproxy
    logpath  = /var/log/nginx/access.log
    maxretry = 2

    Фильтры Fail2ban

    cd /etc/fail2ban/filter.d

    #Шаблон неудачной аунтификации в логе

    vim nginx-http-auth.conf

    [Definition]
    failregex = ^ \[error\] \d+#\d+: \*\d+ user "\S+":? (password mismatch|was not found in ".*"), client: <HOST>, server: \S+, request: "\S+ \S+ HTTP/\d+\.\d+", host: "\S+"\s*$
    ^ \[error\] \d+#\d+: \*\d+ no user/password was provided for basic authentication, client: <HOST>, server: \S+, request: "\S+ \S+ HTTP/\d+\.\d+", host: "\S+"\s*$
    ignoreregex =

    #Копируем шаблон апча для ngix

    cp apache-badbots.conf nginx-badbots.conf

    vim nginx-noscript.conf

    [Definition]
    failregex = ^<HOST> -.*GET.*(\.php|\.asp|\.exe|\.pl|\.cgi|\.scgi)
    ignoreregex =

    vim nginx-nohome.conf

    [Definition]
    failregex = ^<HOST> -.*GET .*/~.*
    ignoreregex =

    vim nginx-noproxy.conf

    [Definition]
    failregex = ^<HOST> -.*GET http.*
    ignoreregex =

    vi /etc/fail2ban/jail.d/nginx-ddos.conf

    [nginx-ddos]
    enabled = true
    port = http,https
    filter = nginx-limit-req
    action = iptables-multiport[name=nginxddos, port="http,https", protocol=tcp]
    logpath = /var/log/nginx/error.log

    service fail2ban restart

    Ставим php-fpm

    # dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

    # dnf install php-fpm

    # systemctl start php-fpm
    # systemctl enable php-fpm

    Проверяем

    # ll /run/php-fpm/www.sock
    srw-rw----+ 1 root root 0 Oct 4 13:14 /run/php-fpm/www.sock

    Ставим базу

    # dnf install mariadb-server mariadb
    # systemctl start mariadb
    # systemctl enable mariadb

    Запускаем скрипт настройки

    # /usr/bin/mysql_secure_installation

    Оптимизируем БД для zabbix 

    # mcedit /etc/my.cnf.d/mariadb-server.cnf
    [client]
    port = 3306
    socket = /var/lib/mysql/mysql.sock
    default-character-set=utf8
    
    [mysqld]
    character_set_server=utf8
    collation-server=utf8_bin
    init_connect="SET NAMES utf8 collate utf8_bin"
    port = 3306
    socket = /var/lib/mysql/mysql.sock
    
    innodb_file_per_table=1
    innodb_buffer_pool_size = 768M # внимание на параметр! установить примерно в 2 раза меньше объема оперативной памяти сервера
    innodb_buffer_pool_instances=1 # увеличивать на 1 каждый GB innodb_buffer_pool_size
    innodb_flush_log_at_trx_commit = 0
    innodb_log_file_size = 512M
    innodb_log_files_in_group = 3
    innodb-strict-mode = OFF

    Перезапустим

    # systemctl restart mariadb
    # systemctl status mariadb.service

    Установка сервера Zabbix 4.0

    Подключаем репозиторий

    # rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/8/x86_64/zabbix-release-4.0-2.el8.noarch.rpm

    Устанавливаем

    # yum install zabbix-server-mysql zabbix-web-mysql

    Заводим юзера БД

    # mysql -uroot -p
    Enter password:
    > create database zabbix character set utf8 collate utf8_bin;
    > grant all privileges on zabbix.* to zabbix@localhost identified by 'zabpassword';
    exit
    # zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

    Настраиваем zabbix

    # vim /etc/zabbix/zabbix_server.conf
    DBHost=localhost
    DBName=zabbix
    DBUser=zabbix
    DBPassword=zabpassword
    ListenIP=0.0.0.0
    Timeout=10

    # systemctl restart mysqld
    # systemctl status mysqld

    Запускаем zabbix

    # systemctl start zabbix-server
    # systemctl enable zabbix-server

    Правим конфиг

    vim /etc/php-fpm.d/zabbix.conf

    user = nginx
    group = nginx
    php_value[date.timezone] = Europe/Kiev

    # systemctl restart php-fpm

     

    Ставим Letsencrypt

     

     

    sudo yum -y install git bc

     

    sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt

    cd /opt/letsencrypt ./letsencrypt-auto certonly -a webroot --webroot-path=/usr/share/nginx/html -d example.com -d www.example.com

     

    sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

    
     

    Правим конфиг nginx

    cd /etc/nginx/conf.d/

    vim default.conf

    server {
       listen          80;
       server_name     localhost;
    
       # certbot validation
       location ^~ /.well-known/ {
           alias /usr/share/nginx/html/.well-known/;
       }
    
       location / {
           return 301 https://$host$request_uri;
       }
    }
    
    server {
       listen 443 ssl;
       server_name your_domain_name;
       index index.php;
    
       ssl_certificate      /etc/letsencrypt/live/your_domain_name/fullchain.pem;
       ssl_certificate_key /etc/letsencrypt/live/your_domain_name/privkey.pem;
    
     ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
      ssl_prefer_server_ciphers on; 
      ssl_dhparam /etc/ssl/certs/dhparam.pem; 
      ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA'; 
    ssl_session_timeout 1d; 
    ssl_session_cache shared:SSL:50m; 
    # позволяем серверу прикреплять OCSP-ответы, тем самым уменьшая время загрузки страниц у пользователей 
    ssl_stapling on; 
    ssl_stapling_verify on; 
    add_header Strict-Transport-Security max-age=15768000;
    
       access_log /var/log/nginx/ssl_zabbix.access.log;
       error_log  /var/log/nginx/ssl_zabbix.error.log;
    
       set $webroot '/usr/share/zabbix';
    
       root /usr/share/zabbix;
    
       large_client_header_buffers 8 8k;
       client_max_body_size 10M;
    
    
       location = /favicon.ico {
           log_not_found off;
       }
    
       location = /robots.txt {
           allow all;
           log_not_found off;
           access_log off;
       }
        
       # certbot validation
       location ^~ /.well-known/ {
           autoindex on;
           alias /usr/share/nginx/html/.well-known/;
       }
    
       # deny running scripts inside writable directories
       location ~* /(images|cache|media|logs|tmp)/.*\.(php|pl|py|jsp|asp|sh|cgi)$ {
           return 403;
           error_page 403 /403_error.html;
       }
    
       # Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac).
       location ~ /\. {
           deny all;
           access_log off;
           log_not_found off;
       }
    
       # caching of files
       location ~* \.(ico|pdf|flv)$ {
           expires 1y;
       }
    
       location ~* \.(js|css|png|jpg|jpeg|gif|swf|xml|txt)$ {
           expires 14d;
       }
     
    location / {
    index index.php index.html index.htm;
    }
    
    location ~ \.php$ {
    fastcgi_pass unix:/run/php-fpm/zabbix.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    fastcgi_buffers 8 256k;
    fastcgi_buffer_size 128k;
    fastcgi_intercept_errors on;
    fastcgi_busy_buffers_size 256k;
    fastcgi_temp_file_write_size 256k;
    }
    
    }
    

    Проверяем

    # nginx -t
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    # nginx -s reload

    Даем права nginx

    # chown -R nginx:nginx /var/lib/php/session
    # chown -R nginx:nginx /etc/zabbix/web

    Обновление сертификатов

    sudo crontab -e

    30 2 * * 1 /opt/letsencrypt/letsencrypt-auto renew >> /var/log/le-renew.log

    35 2 * * 1 /usr/bin/systemctl reload nginx

    Заходим на web

    http://you_ip/

    тыкаем некст

    учетка по умолчанию

    name: Admin

    pass: zabbix

    входм и меняем 

    Advinistration - User - Admin

    и меняем пароль

    Если нужна руссификация

    localectl

    localectl list-locales

    localectl set-keymap ruwin_alt-UTF-8
    localectl set-locale LANG=ru_RU.UTF-8

    dnf install glibc-langpack-ru

    reboot

    Настройка Zabbix Server

    Создание пользователя

    Administration -> Users и нажимаем Create User

    Настройка email оповещений

    Администрирование -> Способы оповещений и нажимаем на Email

    Добавляем адрес для получения оповещений

    Администрирование -> Пользователи

    Выбираем своего пользователя. Идем во вкладку Оповещения и жмем Добавить. Добавляйте свой ящик и нажимайте Обновить

    Активация уведомлений по событиям

    Настройка -> Действия и жмем на Деактивировано, чтобы стало Активировано

     

    Zabbix агент

    На агенте добавляем репу

    rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/8/x86_64/zabbix-release-4.0-2.el8.noarch.rpm

    Ставим

    sudo yum install zabbix-agent

    Генерируем PSK

    sudo sh -c "openssl rand -hex 32 > /etc/zabbix/zabbix_agentd.psk"

    Копируем ключь

    cat /etc/zabbix/zabbix_agentd.psk

    Правим конфиг агента

    vim /etc/zabbix/zabbix_agentd.conf

    Server=your_zabbix_server_ip_address

    LogFileSize=1
    ServerActive=your_zabbix_server_ip_address

    Hostname=host_zabbix_agent

    TLSConnect=psk

    TLSAccept=psk

    TLSPSKIdentity=PSK 001

    TLSPSKFile=/etc/zabbix/zabbix_agentd.psk

     

    Создаем пользователя mysql

    GRANT PROCESS ON *.* TO 'zabbix'@'localhost' identified BY 'some_password';

    FLUSH PRIVILEGES;

    Ищем стоку в 

    cat /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf | grep UserParameter

    HOME=

    Создаем там фаил .my.cnf с параметрами

    [client]

    user=zabbix

    password=some_password

     

     

     

    sudo systemctl start zabbix-agent
    sudo systemctl enable zabbix-agent

    sudo systemctl status zabbix-agent

    На сервере

    Configuration → Hosts - Create host

    В полях Host name и IP ADDRESS укажите имя и IP-адрес клиента. Затем выберите группу хоста; вы можете выбрать одну из существующих групп или создать свою. Один хост может входить сразу в несколько групп. Группа Linux Servers выбрана по умолчанию и подходит в большинстве случаев. Добавив группу, откройте вкладку Templates.

    Введите в поле поиска Template OS Linux и нажмите Add, чтобы добавить этот шаблон.

    Откройте вкладку Encryption. Выберите PSK в Connections to host и Connections from host. В PSK identity укажите имя ключа, установленное в параметре TLSPSKIdentity на агенте Zabbix (в данном случае PSK 001).

    В поле PSK укажите ключ, который хранится в /etc/zabbix/zabbix_agentd.psk на агенте.

    Нажмите Add, чтобы добавить хост.

    Новый хост появится в списке. Через несколько секунд можно открыть Monitoring → Latest data и просмотреть данные агента.

    Чтобы убедиться, что всё работает должным образом, остановите клиентский сервер. В такой ситуации сервер Zabbix должен сообщить о проблеме.

    Категория: Server | Добавил: Vyacheslav (19.11.2019)
    Просмотров: 608 | Комментарии: 1 | Рейтинг: 0.0/0
    Всего комментариев: 0
    Имя *:
    Email *:
    Код *:
    Copyright VR © 2024
    Сделать бесплатный сайт с uCoz