🐹 CentOS 7: Установка и настройка сервера OCS Inventory Server. Установка и настройка агентов OCS Inventory Agent на Windows.

Содержание (в процессе написания статьи):

1. Постановка задачи.
2. Решение задачи.
3. Основные компоненты системы.
4. Реализация на практике.
5. Предварительная подготовка.
6. Установка web-интерфейса через репозиторий.
7. Установка web-интерфейса вручную.
8. Настройка размеров пакетов развертывания в PHP.
9. Настройка в web-интерфейсе.
10. Настройка безопасности.
11. Главные системные ссылки OCS Inventory.
12. Организация проксирования.
13. Настройка логирования.
14. Установка агентов.

14.1. Установка агента в Windows 10.

15. Установка плагинов.
16. Права на каталогах.
17. Оригиналы источников информации.


На чем было собрано:

  1. CentOS Linux  x86_64 release 7.8.2003 (Core).
  2. Apache 2.4.6 (CentOS).
  3. PHP Version 7.4.10.
  4. MariaDB Server version 10.5.5.
  5. Perl 5.16.3.
  6. OCS Inventory 2.7.
  7. Hypervisor Proxmox Virtual Environment 6.2-4. 

1. Постановка задачи.

Имеется небольшой парк почти однотипных персональных компьютеров в количестве 100 едениц. Требуется следить за состоянием каждого компьютера, производить профилактику по мере необходимости, ставить программы одновременно на все компьютеры, смотреть сколько места осталось на их жестких дисках и так далее… И чтобы не вставая с кресла системного администратора!

2. Решение задачи.

Выход есть — OCS Inventory!

OCS Inventory — это система инвентаризации компьютеров по сети, установленного на них оборудования и программного обеспечения.

Система OCS Inventory использует программу агента, которая выполняется на инспектируемом оборудовании и передает информацию на центральный сервер. Управление программами-агентами выполняется так же с центрального центрального сервера. Центральный сервер системы позволяет не только собирать информацию об инвентаризированном оборудовании, но и частично управлять инспектируемыми компьютерами.

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

3. Основные компоненты системы.

Внимание! В процессе эксплуатации было замечено, что программное обеспечение OCS Inventory написано для Apache и исправна работать на Nginx не будет! Хотя и запускается хорошо. Это связано с тем, что модули Perl были написаны специально под Apache. Запускаться будет, а вот работать потом не будет. Будут мелкие досадные и скрытые ошибки в работе скриптов. Чтобы использовать Nginx для OCS Inventory, воспользуйтесь проксированием OCS Inventory из Apache через Nginx. В конце данного руководства будет приложен файл конфигурации для Nginx.

Доказательство и подтверждение этого вывода — ссылка на сайте разработчика ask.ocsinventory-ng.org «Как настроить ocsinventory с помощью Nginx».

Система состоит из 4 основных компонентов:

  1. Сервер баз данных, на котором хранится инвентарная информация.
  2. Сервер связи, который обрабатывает HTTP-соединения между сервером баз данных и агентами.
  3. Консоль администрирования, которая позволяет администраторам администрировать систему.
  4. Сервер развертывания, на котором хранится вся конфигурация развертывания пакета.

Эти 4 компонента могут быть размещены на одном компьютере All in One или на разных компьютерах, чтобы обеспечить балансировку нагрузки. Выше 10.000 инвентаризированных компьютеров рекомендуется использовать по крайней мере 2 физических сервера, один из которых содержит Сервер баз данных + Сервер связи, а другой-реплику базы данных + Сервер администрирования + Сервер развертывания.

В данном руководстве по установке OCS Inventory Server всё установка будет производиться на один сервер, который будет выступать во всех этих ролях.

Как работает OCS Inventory:

  1. Сервер баз данных MySQL или MariaDB работает где-то и прослушивает порт по умолчанию 3306 порт с включенной связью TCP/IP.
  2. Web-сервер Apache установлен и работает для сервера связи и сервера администрирования.
  3. PHP и Perl установлены и могут использоваться web-сервером Apache для консоли администрирования.
  4. Perl и mod_perl устанавливаются и могут использоваться web-сервером Apache для сервера связи.

4. Реализация на практике.

Настроим систему во внутренней сети на Apache и пробросим её в глобальную сеть с помощью Nginx. Приделаем сертификат шифрования Let’s Encrypt и защитимся от непрошенных любопытных глаз базовой аутентификацией.

Итак, нам понадобится:

  1. Работающий сервер Apache с OCS Inventory в сборке All in One — все роли в одном сервере.
  2. Работающий сервер Nginx для проксирования Apache.
  3. Два доменных имени: ocsi.site.ru — имя для входа в панель администрирования, agent.ocsi.site.ru — имя для входа Агентов с информацией про устройства.
  4. Два файла конфигурации Nginx: ocsi.site.ru.conf и agent.ocsi.site.ru.conf для этих доменных имен. В них будет содержаться информация про расположение каталогов с сертификатами шифрования Let’s Encrypt и каталогами с файлами базовой аутентификации.
  5. Два файла с логинами и паролями базовой аутентификации: htpasswd_osci и htpasswd_agent_osci. Можно обойтись и одним общим файлом, но с двумя разными будет безопаснее.
  6. Клиенты внутри сети и клиенты в Интернете, для того, чтобы установить на них Агентов и начать сбор централизованный сбор информации в OCS Inventory.

5. Предварительная подготовка.

Для работы Сервера связи требуются web-сервер Apache и язык сценариев Perl 5, а также некоторые дополнительные модули для Perl 5. Он действует как модуль Apache, который обрабатывает запросы HTTP OCS Inventory агентов к виртуальному каталогу /ocsinventory.

5.1. Удалим SELinux:

# yum -y remove selinux*

Перезагрузим CentOS 7:

# shutdown -r now

5.2. Установим EPEL репозиторий:

# yum -y install epel-release

5.3. Установим Apache:

# yum -y install httpd

Поставим его в автозапуск:

# systemctl enable httpd

Запустим его:

# systemctl start httpd

5.4. Установим полезный софт:

Установим менеджер скачивания:

# yum -y install wget

Установим файловый менеджер и текстовый редактор водном лице — Midnight Commander:

# yum -y install mc

5.5. Настройка брандмауэра.

Не забудьте открыть 80 порт в своем брандмауере!

# firewall-cmd --permanent --zone=public --add-service=http
# firewall-cmd --reload

Открываем файл конфигурации iptables текстовым редактором:

# mcedit /etc/sysconfig/iptables

И в середине массива строк, под разрешением работы SSH с портом 22, добавляем строку точно такую же строку:

-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Открывать 443 порт не будем, так как предусмотрено проксирование Nginx по 80 порту с добавлением сертификатов на стороне проксирующего сервера.

Проверим:

# http://ваш-IP-адрес

5.6. Установим MariaDB.

# установка MariaDB по инструкции

Установка MariaDB производится по данной инструкции: «CentOS 7: Установка и настройка системы баз данных MariaDB. Создание базы данных.» Так же создадим новую базу данных под OCS Inventory Server. Запомним её логины и пароли. Они нам пригодятся ниже по инструкции.

5.7. Установим Remi репозиторий:

# yum -y install yum-utils

Так же нет смысла держать репозитории, которые устарели. Так как мы будем ставить новую версию репозитория REMI, то старую версию можно смело деактивировать.

Для установки репозитория Remi в CentOS 7 требуется установить EPEL репозиторий (уже поставили выше по инструкции) и выполнить команду:

# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

В базовой установке CentOS 7 установлен старый remi-safe репозиторий. Для активации remi надо вначале отключить remi-safe, а потом активировать remi выполнив команды:

# yum-config-manager --disable remi-safe
# yum-config-manager --disable ius (у REMI возможны конфликты с IUS)

# yum-config-manager --enable remi

После установки смотрим доступные репозитории Remi:

# ls /etc/yum.repos.d/remi*

Как видите, есть несколько версий php, сейчас мы можем активировать php 7.4, для этого откройте соответствующий файл, найдите секцию [remi-php74], в ней найдите enabled и поменяйте значение с 0 на 1:

# mcedit /etc/yum.repos.d/remi-php74.repo

enabled=1

Получится вот так:

5.8. Обновим систему до актуального состояния:

# yum -y update

5.9. Установим Perl модули для Сервера связи.

# yum -y install perl-XML-Simple perl-Compress-Zlib perl-DBI perl-DBD-MySQL perl-Net-IP perl-SOAP-Lite perl-Archive-Zip perl-Mojolicious perl-Plack perl-XML-Entities perl-Switch

5.10. Установим PHP модули для Консоли администрирования:

# yum -y install php-pecl-zip

# yum -y install perl-XML-Simple perl-DBI perl-DBD-MySQL perl-Net-IP

# yum -y install php-gd

Далее будет предложено 2 варианта установки OCS Inventory:

  • через репозиторий;
  • вручную.

6. Установка web-интерфейса через репозиторий.

6.1. Установка репозитория.

Скачаем пакеты репозитория:

# cd ~

# wget https://rpm.ocsinventory-ng.org/ocsinventory-release-latest.el7.ocs.noarch.rpm

Установим пакет репозитория:

# yum -y install ocsinventory-release-latest.el7.ocs.noarch.rpm

Установим OCS Inventory:

# yum -y install ocsinventory

6.2. Установка PHP.

Установим PHP пакеты:

# yum -y install php-fpm php-odbc php-pecl-memcache php-opcache php-pear php-xmlrpc php-snmp

Добавим службу в автозапуск.

# systemctl start php-fpm

# systemctl enable php-fpm

Заменим имя пользователя базы данных, имя базы данных и пароль базы данных, которые идут в комплекте по умолчанию, на свои.

6.3. Скопируем и откроем файл конфигурации ocsinventory-server.conf:

# cp /etc/httpd/conf.d/ocsinventory-server.conf /etc/httpd/conf.d/ocsinventory-server.conf.original

# mcedit /etc/httpd/conf.d/ocsinventory-server.conf

...
# Master Database settings
# Replace localhost by hostname or ip of MySQL server for WRITE
PerlSetEnv OCS_DB_HOST localhost
# Replace 3306 by port where running MySQL server, generally 3306
PerlSetEnv OCS_DB_PORT 3306
# Name of database
PerlSetEnv OCS_DB_NAME ocsweb
PerlSetEnv OCS_DB_LOCAL ocsweb
# User allowed to connect to database
PerlSetEnv OCS_DB_USER ocs
# Password for user
PerlSetVar OCS_DB_PWD ocs
...

Сохраним изменения и выйдем из файла.

6.4. Скопируем и откроем файл конфигурации ocsinventory-restapi.conf:

# cp /etc/httpd/conf.d/ocsinventory-restapi.conf /etc/httpd/conf.d/ocsinventory-restapi.conf.original

# mcedit /etc/httpd/conf.d/ocsinventory-restapi.conf

...
<Perl>
$ENV{PLACK_ENV} = 'production';
$ENV{MOJO_HOME} = '/usr/lib64/perl5/vendor_perl';
$ENV{MOJO_MODE} = 'deployment';
$ENV{OCS_DB_HOST} = 'localhost';
$ENV{OCS_DB_PORT} = '3306';
$ENV{OCS_DB_LOCAL} = 'ocsweb';
$ENV{OCS_DB_USER} = 'ocs';
$ENV{OCS_DB_PWD} = 'ocs';
$ENV{OCS_DB_SSL_ENABLED} = 0;
# $ENV{OCS_DB_SSL_CLIENT_KEY} = '';
# $ENV{OCS_DB_SSL_CLIENT_CERT} = '';
# $ENV{OCS_DB_SSL_CA_CERT} = '';
$ENV{OCS_DB_SSL_MODE} = 'SSL_MODE_PREFERRED';
</Perl>
...

Сохраним изменения и выйдем из файла.

6.5. Скопируем и откроем файл конфигурации dbconfig.inc.php:

Примечание: этот файл уже заполнен, так как мы делали первоначальную настройку в web-интерфейсе.

# cp /usr/share/ocsinventory-reports/ocsreports/dbconfig.inc.php /usr/share/ocsinventory-reports/ocsreports/dbconfig.inc.php.original

# mcedit /usr/share/ocsinventory-reports/ocsreports/dbconfig.inc.php

...
define("DB_NAME", "ocsweb"); // Имя БД
define("SERVER_READ","localhost");
define("SERVER_WRITE","localhost");
define("SERVER_PORT", 3306);
define("COMPTE_BASE","ocs"); // Логин пользователя БД
define("PSWD_BASE","ocs"); // Пароль для пользователя БД - ocsweb
...

Сохраним изменения и выйдем из файла.

6.6. Перезапустим службы Apache, MariaDB и PHP-FPM:

# systemctl restart httpd

# systemctl restart mariadb

# systemctl restart php-fpm

7. Установка web-интерфейса вручную.

7.1. Установка PHP.

Установим PHP пакеты, их будет больше, чем при установке OCS Inventory из оригинального репозитория:

# yum -y install php php-fpm php-cli php-ldap php-odbc php-pdo php-pecl-memcache php-opcache php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap php-mysqlnd

После завершения работы команды вы получите готовую и работающую версию php, и вы можете использовать ее для своего web-сервера Apache.

Добавим службу в автозапуск.

# systemctl start php-fpm

# systemctl enable php-fpm

7.2. Установка OCS Inventory.

Скачиваем последнюю версию OCS Inventory Server с официального сайта разработчиков: ocsinventory-ng.org.

Заполняем небольшую форму регистрации. Получаем письмо ссылкой. Скачиваем архив с OCS Inventory Server. И закидываем архив на сервер CentOS 7.

# cd ~

Установим архив с OCS Inventory с сайта разработчиков:

# wget https://github.com/OCSInventory-NG/OCSInventory-ocsreports/releases/download/2.7/OCSNG_UNIX_SERVER_2.7.tar.gz

# ls

Распаковываем содержимое архива:

# tar -xvzf OCSNG_UNIX_SERVER_2.7.tar.gz

# ls

Переходим в распакованную папку и запускаем автоустановщик, файл setup.sh:

# cd /root/OCSNG_UNIX_SERVER_2.7

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

# sudo sh setup.sh

Если у вас всё установлено стандартно на сервере и вы ничего не меняли, все пакеты ставились по умолчанию и вы ничего не кастомизировали, то смело жмите на все вопросы Enter и y. Там анкета про то, что и куда ставить.

Внимание! Если просто жать Enter без y, то установка будет с ошибками. Требуется именно соглашаться в диалоговых моментах.

Автоустановщик инсталлирует на ваш сервер все необходимые пакеты и сообщит об успешной установке.

Заменим имя пользователя базы данных, имя базы данных и пароль базы данных, которые идут в комплекте по умолчанию, на свои.

7.3. Скопируем и откроем файл конфигурации z-ocsinventory-server.conf:

# cp /etc/httpd/conf.d/z-ocsinventory-server.conf /etc/httpd/conf.d/z-ocsinventory-server.conf.original

# mcedit /etc/httpd/conf.d/z-ocsinventory-server.conf

...
# Master Database settings
# Replace localhost by hostname or ip of MySQL server for WRITE
PerlSetEnv OCS_DB_HOST localhost
# Replace 3306 by port where running MySQL server, generally 3306
PerlSetEnv OCS_DB_PORT 3306
# Name of database
PerlSetEnv OCS_DB_NAME ocsweb 
PerlSetEnv OCS_DB_LOCAL ocsweb 
# User allowed to connect to database 
PerlSetEnv OCS_DB_USER ocs 
# Password for user 
PerlSetVar OCS_DB_PWD ocs
...

Сохраним изменения и выйдем из файла.

7.4. Скопируем и откроем файл конфигурации zz-ocsinventory-restapi.conf:

# cp /etc/httpd/conf.d/zz-ocsinventory-restapi.conf /etc/httpd/conf.d/zz-ocsinventory-restapi.conf.original

# mcedit /etc/httpd/conf.d/zz-ocsinventory-restapi.conf

...
<Perl>
$ENV{PLACK_ENV} = 'production';
$ENV{MOJO_HOME} = '/usr/lib64/perl5/vendor_perl';
$ENV{MOJO_MODE} = 'deployment';
$ENV{OCS_DB_HOST} = 'localhost';
$ENV{OCS_DB_PORT} = '3306';
$ENV{OCS_DB_LOCAL} = 'ocsdb';
$ENV{OCS_DB_USER} = 'ocsadmin';
$ENV{OCS_DB_PWD} = 'ocsDBpassW0rd';
$ENV{OCS_DB_SSL_ENABLED} = 0;
# $ENV{OCS_DB_SSL_CLIENT_KEY} = '';
# $ENV{OCS_DB_SSL_CLIENT_CERT} = '';
# $ENV{OCS_DB_SSL_CA_CERT} = '';
$ENV{OCS_DB_SSL_MODE} = 'SSL_MODE_PREFERRED';
</Perl>
...

Сохраним изменения и выйдем из файла.

7.5. Скопируем и откроем файл конфигурации dbconfig.inc.php:

Примечание: этот файл уже заполнен, так как мы делали первоначальную настройку в web-интерфейсе.

# cp /usr/share/ocsinventory-reports/ocsreports/dbconfig.inc.php /usr/share/ocsinventory-reports/ocsreports/dbconfig.inc.php.original

# mcedit /usr/share/ocsinventory-reports/ocsreports/dbconfig.inc.php

<?php
$_SESSION["SERVEUR_SQL"]="localhost";
$_SESSION["COMPTE_BASE"]="ocs";
$_SESSION["PSWD_BASE"]="ocs";
?>

Сохраним изменения и выйдем из файла.

7.6. Перезапустим службы Apache, MariaDB и PHP-FPM:

# systemctl restart httpd

# systemctl restart mariadb

# systemctl restart php-fpm

8. Настройка размеров пакетов развертывания в PHP.

Вы не сможете создать пакет развертывания размером более 100 Мб, если не настроите php.ini конфигурацию для PHP.

Создадим копию файла php.ini конфигурации PHP:

# cp /etc/php.ini /etc/php.ini.original

Откроем в редакторе и модифицируем следующие строки:

# mcedit /etc/php.ini

Параметры:

  • max_execution_time — время, в течении которого скрипт должен полностью завершить своё исполнение. Для отмены ограничений можно присвоить 0. Измеряется в секундах.
  • max_input_time — время, в течении которого скрипт, должен получить и обработать все данные из POST и GET запросов. Измеряется в секундах.
  • memory_limit — ограничение на выделяемую для исполнения одного скрипта память. Для отмены ограничений, поставьте -1. Должен быть больше post_max_size. Измеряется в Мб.
  • post_max_size — максимальный размер отправляемого через POST-запрос файла, значение параметра post_max_size должно быть равным или большим значению параметра upload_max_filesize.
  • upload_max_filesize — максимальный размер закачиваемого файла.
  • max_file_uploads — максимальное количество одновременных загрузок. Ставьте столько, сколько устройств будут присылать информацию в систему.

Перезапустим службы Apache, MariaDB и PHP-FPM:

# systemctl restart httpd

# systemctl restart mariadb

# systemctl restart php-fpm

9. Настройка в web-интерфейсе.

Заходим по адресу:

# http://ваш-IP-адрес/ocsreports/install.php

Нас встречает анкета базы данных.

Заполняем ее своими данными: имя базы данных, логин пользователя базы данных, пароль от базы данных, локальное размещение localhost, 3306 порт. Остальное не заполняем, так как мы не генерировали сертификаты и вообще будем проксировать через Nginx с доменным именем, на котором уже будет настроено шифрование. После настройки нажимаем Send.

Начнется форматирование базы данных под нужды OCS Inventory.

По окончанию форматирования базы данных OCS Inventory обнаружит, что есть новый способ форматирования базы данных и снова предложит это сделать. Мы согласны и подтверждаем кликом на кнопке Perform the update.

Далее:

После обновления таблицы базы данных нажимаем Click here to enter OCS-NG GUI и попадаем в меню входа в систему:

Вход в систему: логинadmin, парольadmin.

Отлично мы в системе!

10. Настройка безопасности.

10.1. Удаление файла установки.

Что мы видим? А видим мы то, что нам нужно удалить файл первоначальной настройки install.php, чтобы кто-нибудь не настроился на нашем сервере вновь.

Надпись гласит о том, что нужно бы его удалить.

Удаляем файл:

# rm /usr/share/ocsinventory-reports/ocsreports/install.php

На вопрос о том, что мы стираем install.php сознательно, отвечаем y.

10.2. Смена заводского пароля в панели управления.

По умолчанию вход в систему: логинadmin, парольadmin.

Вы должны создать свой собственный учетная запись с профилем супер администратора, а после этого удалить учетную запись по умолчанию.

Есть и другое решение — изменить пароль учетной записи администратора, но лучше создать пользователя с другим именем, чтобы не подбирали пароль к вашей учетной записи с банальным названием — admin.

11. Главные системные ссылки OCS Inventory.

После установки и настройки OCS Inventory в нашем распоряжении появляются две главные ссылки системы:

  • http://192.168.0.20/ocsreports/ — путь входа в web-панель управления OSC Inventory.
  • http://192.168.0.20/ocsinventory/ — путь входа для Агентов, по нему они передают информацию в OCS Inventory.

При попытке перейти по пути http://192.168.0.20/ocsinventory/, нас встретит техническая надпись о том, что браузер и сервер друг друга не понимают. Это нормально. В этой точке происходит общение Агентов с сервером OCS Inventory.

Для работы внутри сети этих ссылок вполне достаточно. На данном этапе настройка OCS Inventory для внутренних нужд сети закончена.

Если вам потребуется получать и информацию информацию за пределами внутренней сети, то для этого потребуется организовать проксирование OSC Inventory и организовать защиту передачи данных.

12. Организация проксирования.

12.1. Установка и настройка Nginx.

Для организации проксирования Apache нам потребуется отдельный настроенный и работающий сервер Nginx.

Если у вас его еще нет, то вы можете настроить его по инструкции «CentOS 7: Настройка web-сервера Nginx и выход в Интернет со своим доменным именем.»

Также вам потребуется получить 2 доменных имени DNS вида:

  • ocsi.site.ru
  • agent.ocsi.site.ru

12.2. Создание файлов конфигурации проксирования.

Создадим 2 файла конфигурации с учетом инструкции настройки Nginx c nginx.conf, который был предложен в тексте инструкции по его настройке, в противном случае работоспособность системы OCS Inventory не гарантируется!

  • ocsi.site.ru.conf
  • agent.ocsi.site.ru.conf

Создаем файл конфигурации ocsi.site.ru.conf для web-интерфейса OCS Inventory:

# mcedit /etc/nginx/conf.d/ocsi.hamsterden.ru.conf

Вводим в него текст:

Разверните для просмотра текста ocsi.site.ru.conf.
server {
    listen 80;
    server_name ocsi.site.ru;
    access_log /web/ocsi/log/access.log;
    error_log /web/ocsi/log/error.log;

    rewrite ^(.*) https://$host$1 permanent;
    }

server {
    listen 443 ssl http2;
    server_name ocsi.site.ru;
    access_log /web/ocsi/log/access.log;
    error_log /web/ocsi/log/error.log;

    ssl_certificate		/etc/letsencrypt/live/ocsi.site.ru/fullchain.pem;
    ssl_certificate_key		/etc/letsencrypt/live/ocsi.site.ru/privkey.pem;
    ssl_trusted_certificate	/etc/letsencrypt/live/ocsi.site.ru/fullchain.pem;

    proxy_redirect off;

    location / {
        auth_basic " ";
        auth_basic_user_file /etc/nginx/htpasswd_osci;  
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade"; 
        proxy_pass http://192.168.0.20/ocsreports/;
	proxy_buffering off;
	client_max_body_size 0;
	proxy_connect_timeout  3600s;
        proxy_read_timeout  3600s;
        proxy_send_timeout  3600s;
        send_timeout  3600s;
    }
}

Сохраните файл и выйдите из текстового редактора.

Создаем файл конфигурации agent.ocsi.site.ru.conf для web-интерфейса OCS Inventory:

# mcedit /etc/nginx/conf.d/agent.ocsi.hamsterden.ru.conf

Вводим в него текст:

Разверните для просмотра текста agent.ocsi.site.ru.conf.
server {
    listen 80;
    server_name agent.ocsi.site.ru;
    access_log /web/agent.ocsi/log/access.log;
    error_log /web/agent.ocsi/log/error.log;

    rewrite ^(.*) https://$host$1 permanent;
    }

server {
    listen 443 ssl http2;
    server_name agent.ocsi.site.ru;
    access_log /web/agent.ocsi/log/access.log;
    error_log /web/agent.ocsi/log/error.log;

    ssl_certificate		/etc/letsencrypt/live/agent.ocsi.site.ru/fullchain.pem;
    ssl_certificate_key		/etc/letsencrypt/live/agent.ocsi.site.ru/privkey.pem;
    ssl_trusted_certificate	/etc/letsencrypt/live/agent.ocsi.site.ru/fullchain.pem;

    proxy_redirect off;

    location / {
        auth_basic " ";
        auth_basic_user_file /etc/nginx/htpasswd_agent.osci;  
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade"; 
        proxy_pass http://192.168.0.20/ocsinventory/;
	proxy_buffering off;
	client_max_body_size 0;
	proxy_connect_timeout  3600s;
        proxy_read_timeout  3600s;
        proxy_send_timeout  3600s;
        send_timeout  3600s;
    }
}

Сохраните файл и выйдите из текстового редактора.

12.3. Организация базовой аутентификации.

Название файла с паролями может быть любое. Назовем его исторически — htpasswd, но скрытым (точной перед файлом) делать не будем. Расположение файла так же может быть любое! Файл htpasswd содержит список имен пользователей и паролей. Nginx использует его для проверки учетных данных пользователей, которые хотят получить доступ к защищенным областям сайта.

Установим httpd-tools:

# yum -y install httpd-tools

Сначала создайте пустой файл с именем /etc/nginx/htpasswd_osci примерно так:

# touch /etc/nginx/htpasswd_osci

Далее создайте пустой файл с именем /etc/nginx/agent.htpasswd_osci примерно так:

# touch /etc/nginx/htpasswd_agent.osci

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

# htpasswd -c /etc/nginx/htpasswd_osci admin

Вам будет предложено ввести пароль дважды:

Аналогично требуется заказать первичное наполнение файла htpasswd_agent.osci:

# htpasswd -c /etc/nginx/htpasswd_agent.osci agent

Флажок -c указываем, когда только создаем htpasswd первично, /etc/nginx/htpasswd_xx — путь к файлу с логинами и паролями, admin — нужный логин для Администратора, agent — нужный логин для Агента.

Внимание! Если у вас уже существует файл с таким именем, то его содержимое будет заменено, поэтому перед процедурой обязательно удостоверьтесь, что такого файла нет или используйте любое другое имя, которого точно нет.

Теперь вы можете добавить имена пользователей и пароли в этот файл с помощью команды htpasswd, добавлять -c не надо уже, так как файл для хранения паролей уже создан и создавать его снова нам не надо.

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

Если вы хотите удалить пользователя из файла, используйте ключ -D следующим образом:

# htpasswd -D /etc/nginx/htpasswd_xx john

Файл htpasswd представляет собой простой текстовый файл, и вы можете проверить его с помощью текстового редактора. Имена пользователей хранятся как есть, но пароли хешируются и шифруются.

# cat /etc/nginx/htpasswd_xx

12.4. Создание сертификата шифрования Let’s Encrypt.

Если у вас его еще нет Let’s Encrypt, то вы можете настроить его по инструкции «CentOS 7: Настройка web-сервера Nginx и выход в Интернет со своим доменным именем.»

Создайте 2 сертификата для доменных имен.

  • ocsi.site.ru
  • agent.ocsi.site.ru

12.5. Перезапустим Nginx:

# systemctl restart nginx

Если всё сделано без ошибок и опечаток, то вам станут доступны два web-адреса с базовой аутентификацией:

  • https://ocsi.site.ru — тождественен http://192.168.0.20/ocsreports/ — путь входа в web-панель управления OSC Inventory.
  • https://agent.ocsi.site.ru — тождественен http://192.168.0.20/ocsinventory/ — путь входа для Агентов, по нему они передают информацию в OCS Inventory.

При попытке перейти по пути https://agent.ocsi.site.ru, нас встретит техническая надпись о том, что браузер и сервер друг друга не понимают. Это нормально. В этой точке происходит общение Агентов с сервером OCS Inventory.

13. Настройка логирования.

Последний штрих в настройке web-сервера Nginx — ротация логов виртуальных хостов. Если этого не сделать, то через какое-то, обычно продолжительное, время возникает проблема в связи с огромным размером лог файла.

У нас уже будет файл конфигурации logrotate для Nginx, который был создан во время установки — /etc/logrotate.d/nginx.

Добавим к общему списку ротаций:

Разверните для просмотра текста конфигурации ротации логов.
/web/ocsi/log/*.log {
    create 0644 nginx nginx
    size=10M
    rotate 10
    missingok
    notifempty
    compress
    sharedscripts
    postrotate
        /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
    endscript
}

/web/agent.ocsi/log/*.log {
    create 0644 nginx nginx
    size=10M
    rotate 10
    missingok
    notifempty
    compress
    sharedscripts
    postrotate
        /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
    endscript
}

Я предлагаю ротировать файлы логов по достижению ими размера в 10 Мб, сжимать после ротации и хранить 10 архивов с логом. Для виртуальных хостов, работающих от отдельного пользователя, новые логи создаются сразу с соответствующими правами, чтобы у пользователя был доступ к ним. Для всех остальных хостов можно использовать самое первое правило, просто добавляя туда новые пути для логов.

На данном этапе настройка OCS Inventory для работы через Интернет закончена.

14. Установка агентов.

Программное обеспечение Агента под конкретную операционную систему можно скачать с сайта разработчика: https://ocsinventory-ng.org/?page_id=1548&lang=en.

14.1. Установка агента в Windows 10.

Скачиваем последний установщик и запускаем. От типа установки зависит, как будет производиться инвентаризация.

Есть два варианта:

  • Network inventory — работает через сеть;
  • Local inventory может потребоваться для локального импорта, когда у хоста нет сети.

Доступные версии на момент написания статьи:

Запускаем установку Агента от имени Администратора компьютера.

Настройку параметров прокси оставляем как есть.

Пишем адрес сервера — домен https://agent.ocsi.site.ru или IP-адрес с каталогом вида http://192.168.0.20/ocsinventory/.

Внимание! При использовании доменного имени для подключения Агента, обязательно снимите галочку в разделе Server securityValidate certificates. Так же, обращаю ваше внимание на то, что в конце доменного имени символ / писать не нужно, а в конце IP-ссылки символ / нужно писать! 

Если этого не сделать, то Агент не сможет сообщить информацию в OCS Inventory.

Придумываем тег, который будет служить для объединения компьютеров в группы. В опциях указываем, что хотим сразу после установки начать инвентаризацию.

Как видно, всё начало исправно передаваться и учитываться в OCS Inventory:

15. Установка плагинов.

Ссылки на скачивание лучше брать с GitHub, так как на официальном сайте встречаются старые версии.

GitHub: github.com.

или

Сайт с плагинами Plugin: plugins.ocsinventory-ng.org.

Устанавливать будем на примере Office Pack. Этот плагин позволяет получать ключи от Microsoft Office.

Создадим каталог для скачанных файлов:

# mkdir -p /usr/share/ocsinventory-reports/ocsreports/extensions

Для установки нам понадобится положить скачанный плагин в /usr/share/ocsinventory-reports/ocsreports/extensions. Приступим.

# wget -P /usr/share/ocsinventory-reports/ocsreports/extensions https://github.com/PluginsOCSInventory-NG/officepack/releases/download/3.1.1/officepack.zip

Установим программное обеспечение для работы с zip-файлами:

# yum -y install unzip zip

Распакуем содержимое архива в этот же каталог:

# unzip /usr/share/ocsinventory-reports/ocsreports/extensions/officepack.zip -d /usr/share/ocsinventory-reports/ocsreports/extensions/

Добавим права на этот каталог:

# chmod -R 766 /usr/share/ocsinventory-reports/ocsreports/extensions
# chown -R apache:apache /usr/share/ocsinventory-reports/ocsreports/extensions

После разархивации файл с архивом можно смело удалить, он нам больше не понадобится.

# rm /usr/share/ocsinventory-reports/ocsreports/extensions/officepack.zip

Подтверждаем осознанность удаления архивного файла, нажимаем y.

Заходим под Администратором системы и проходим в закладке «Extensions«.

Переходим на страницу установки плагинов:

Выбираем установленный плагин и кликаем на клавишу Install.

Выйдем из учетной записи, нужно разлогиниться, и зайдем снова зайти в web-консоль.

Осталось скачать плагин на компьютере с установленным агентом и распаковать файлик msofficekey.vbs в C:\Program Files (x86)\OCS Inventory Agent\Plugins.

Скачиваем этот же файл с арихом плагина на компьютер с операционной системой Windows:

# https://github.com/PluginsOCSInventory-NG/officepack/releases/download/3.1.1/officepack.zip

Распаковываем архив. Внутри него содержится папка agent с файлом msofficekey.vbs. Этот файл msofficekey.vbs поместите C:\Program Files (x86)\OCS Inventory Agent\Plugins.

В трее Windows ищем наш агент, нажимаем правой кнопкой мыши и выбираем Run OCS Inventory NG Agent now.

Агент сообщит, что он отработал и отправил информацию на сервер OCS Inventory:

Проверяем результат!

Остальные плагины устанавливаются таким же способом.

16. Права на каталогах.

Внимание! Если у вас всё и так хорошо работает, то вводить эти команды не надо. У вас уже и так все по умолчанию настроено нормально сразу после установки. Эта запись здесь на всякий случай, вдруг в процессе эксплуатации что-то собьется.

Для того, чтобы пользователь Apache мог спокойно хозяйничать в каталоге в web-интерфейсом /usr/share/ocsinventory-reports/ocsreports добавим ему права на каталоги.

Таблица эталонных прав на системные папки OCS Inventory:

# chmod -R 755 /usr/share/ocsinventory-reports
# chown -R apache:apache /usr/share/ocsinventory-reports

# chmod -R 775 /var/lib/ocsinventory-reports/download
# chown root:apache /var/lib/ocsinventory-reports/download

# chmod -R 775 /var/lib/ocsinventory-reports/ipd
# chown root:apache /var/lib/ocsinventory-reports/ipd

# chmod -R 775 /var/lib/ocsinventory-reports/logs
# chown root:apache /var/lib/ocsinventory-reports/logs

# chmod -R 775 /var/lib/ocsinventory-reports/scripts
# chown root:apache /var/lib/ocsinventory-reports/scripts

# chmod -R 775 /var/lib/ocsinventory-reports/snmp
# chown root:apache /var/lib/ocsinventory-reports/snmp

17. Оригиналы источников информации.

  1. wiki.ocsinventory-ng.org «Настройка сервера OCS Inventory Server».
  2. wiki.ocsinventory-ng.org «Setting up OCS Inventory Server with RPM».
  3. ask.ocsinventory-ng.org «Как настроить ocsinventory с помощью nginx».
  4. xakep.ru «Конкурс хаков: как поставить и настроить Inventory NG — «Хакер».
  5. blog.asidorov.name «Инвентаризация оборудования в офисе OCS Inventory NG (Часть 1)».

Читайте также: