среда, 27 марта 2024 г.

Установка WEB-сервера nginx с поддержкой php, mariadb, php-apc и memcached

Установка NGINX:
# yum install nginx
В конфигурации по умолчанию nginx работает на 80 порту
Конфигурация лежит тут: /etc/nginx/nginx.conf
Каталог сервера: /usr/share/nginx/html
Запускаем сервер:
# systemctl start nginx
Открываем порт 80 в фарволл
# firewall-cmd --add-port=80/tcp --permanent
# firewall-cmd --reload

Если на данном этапе появляется ошибка связанная с невозможностью занять порт 80,
то вероятнее всего в системе уже есть другой web-сервер, например apache.
В этом случае сервер apache нужно выключить и включить nginx
# systemctl stop httpd
# systemctl start nginx


Устанавливаем php-fpm — это fastcgi process manager, Интерфес языка php для работы с web-серверами (apache или nginx)
# yum install php php-fpm
Перезапускам nginx.
# systemctl restart nginx

Создаем файл /usr/share/nginx/html/info.php с содержимым:
<?php phpinfo(); ?>
Для проверки перейдем по URL http://<IPадрес>/info.php
Мы должны увидеть web-страницу с выводом информации phpinfo.

Установка Mariadb
# yum install mariadb-server
# systemctl start mariadb

Устанавливаем пароль:
# mysqladmin -u root password
Вводим пароль два раза
Устанавливаем расширение php для работы с Mariadb через библиотеку Mysqli
# yum install php-mysqlnd
# systemctl restart nginx

Теперь на странице http://<IPадрес>/info.php будет представлена информация о модулях mysqli и mysqlnd для работы с базой MySQL

Установка php-apc, расширения, обеспечивающего кеширование php скриптов и их ответов для увеличения производительности.
# yum install php-pecl-apcu
# systemctl restart nginx


Устанавливаем сервис кеширования memcached:
# yum install memcached
# systemctl start memcached
# memcached --version

Файл конфигурации сервиса - /etc/sysconfig/memcached
# dnf --enablerepo=crb install libmemcached-awesome
# firewall-cmd --add-port=11211/tcp --permanent
# firewall-cmd --reload
# yum install php-pecl-memcache php-pecl-memcached
# systemctl restart nginx


Сервер nginx готов к эксплуатации
Для запуска в продакшен все установленные сервисы нужно добавить в аввтозагрузку
# systemctl enable memcached
# systemctl enable mariadb
# systemctl enable nginx


Утилита sqlcmd для работы с базой MS-SQL

Установка утилиты:
# wget https://packages.microsoft.com/config/rhel/7/prod.repo
# mv prod.repo /etc/yum.repos.d/msprod.repo
# yum install -y mssql-tools unixODBC-devel

Потребуется подтвердить, что мы согласны с условиями лицензий:
Do you accept the license terms? (Enter YES or NO)
вводим
yes

Будут установлены утилиты sqlcmd и bcp для работы с MS-SQL сервером.
Установка будет выполнена с директорию:
# /opt/mssql-tools/bin

Для соединения с базой используем команду:
/opt/mssql-tools/bin/sqlcmd -S <IP адрес> -U <логин> -P <пароль>
Соединение по умолчанию выполняется по порту 1433

Пример использования процедуры на сервере MS-SQL
/opt/mssql-tools/bin/sqlcmd -S 10.0.4.180 -U User1 -P password1 -d DВName -Q "exec MyProcedure"

четверг, 14 марта 2024 г.

Активизация рабочего стола на сервере Linux

Задача: Потребовалось иметь место, куда тонкий клиент THIN CLIENT HP T610 TPC-W006-TC смог бы подключаться по RDP и мониторить аварии в браузере. Одни из вариантов - это подключаться на какой-то действующий виртуальный сервер Linux.

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

Проводим обновление и установим репозитарий EPEL.
# dnf update -y
# dnf install epel-release -y


Устанавливаем xrdp:
# dnf install xrdp -y
# systemctl enable xrdp --now
# systemctl status xrdp


Устанавливаем Xfce окружение:
# dnf group install "Xfce"
# systemctl set-default graphical.target


Открываем порт 3389, по которому принимаются подключения по RDP.
# firewall-cmd --add-port=3389/tcp --permanent
(или, если используется определенная зона
# firewall-cmd --zone=internal --add-port=3389/tcp --permanent)
# firewall-cmd --reload

Установка браузера Firefox:
# yum install firefox

Добавляем пользователя operator1 сервера Linux
# adduser operator1
# passwd operator1

И задаем пароль (2 раза)

К сожалению, тонкий клиент имеет ОС на базе урезанной Windows, которая не обладает возможностью подключаться к серверу Linux используя современные безопасные протоколы шифрования.
При попытке подключения тонкий клиент выдает ошибку:
«Connected to IPaddress:3389 SSL_connect: Failure in SSL library (protocol error?)»
На сервере в логах при этом:
[20240312-13:07:53] [INFO ] Socket 12: AF_INET6 connection received from ::ffff:10.0.9.63 port 42912
[20240312-13:07:53] [INFO ] Using default X.509 certificate: /etc/xrdp/cert.pem
[20240312-13:07:53] [INFO ] Using default X.509 key file: /etc/xrdp/key.pem
[20240312-13:07:53] [INFO ] Socket 12: AF_INET6 connection received from ::ffff:10.0.9.63 port 42913
[20240312-13:07:53] [ERROR] libxrdp_force_read: header read error
[20240312-13:07:54] [ERROR] [ITU-T X.224] Connection Sequence: CR-TPDU (Connection Request) failed
[20240312-13:07:53] [INFO ] Using default X.509 certificate: /etc/xrdp/cert.pem
[20240312-13:07:54] [INFO ] Using default X.509 key file: /etc/xrdp/key.pem
[20240312-13:07:54] [ERROR] xrdp_sec_incoming: xrdp_iso_incoming failed
[20240312-13:07:54] [ERROR] libxrdp_force_read: header read error
[20240312-13:07:54] [ERROR] [ITU-T X.224] Connection Sequence: CR-TPDU (Connection Request) failed
[20240312-13:07:54] [ERROR] xrdp_rdp_incoming: xrdp_sec_incoming failed
[20240312-13:07:54] [ERROR] xrdp_process_main_loop: libxrdp_process_incoming failed
[20240312-13:07:54] [ERROR] xrdp_sec_incoming: xrdp_iso_incoming failed
[20240312-13:07:54] [ERROR] xrdp_rdp_incoming: xrdp_sec_incoming failed
[20240312-13:07:54] [ERROR] xrdp_iso_send: trans_write_copy_s failed
[20240312-13:07:54] [ERROR] Sending [ITU T.125] DisconnectProviderUltimatum failed
[20240312-13:07:54] [ERROR] xrdp_process_main_loop: libxrdp_process_incoming failed
[20240312-13:07:54] [ERROR] xrdp_iso_send: trans_write_copy_s failed
[20240312-13:07:54] [ERROR] Sending [ITU T.125] DisconnectProviderUltimatum failed
[20240312-13:07:54] [INFO ] Socket 12: AF_INET6 connection received from ::ffff:10.0.9.63 port 42914
[20240312-13:07:54] [INFO ] Using default X.509 certificate: /etc/xrdp/cert.pem
[20240312-13:07:55] [INFO ] Using default X.509 key file: /etc/xrdp/key.pem
[20240312-13:07:55] [INFO ] Security protocol: configured [SSL|RDP], requested [SSL|HYBRID|RDP], selected [SSL]
[20240312-13:07:55] [ERROR] SSL_accept: Failure in SSL library (protocol error?)
[20240312-13:07:55] [ERROR] SSL: error:14209102:SSL routines:tls_early_post_process_client_hello:unsupported protocol
[20240312-13:07:55] [ERROR] trans_set_tls_mode: ssl_tls_accept failed
[20240312-13:07:55] [ERROR] xrdp_sec_incoming: trans_set_tls_mode failed
[20240312-13:07:55] [ERROR] xrdp_rdp_incoming: xrdp_sec_incoming failed
[20240312-13:07:55] [ERROR] xrdp_process_main_loop: libxrdp_process_incoming failed


К сожалению решение проблемы заключается в понижении уровня безопасности сервера.
Первое действие – это активация старых протоколов, которые в 2024 году уже устарели (например RSA шифрование)
# update-crypto-policies --set LEGACY
После этого требуется перезагрузка
Второе действие – включение протоколов TLSv1 в настройках xrdp
# nano /etc/xrdp/xrdp.ini
В строку
ssl_protocols=TLSv1.2, TLSv1.3
Добавляем настройки TLSv1:
ssl_protocols=TLSv1.2, TLSv1.3, TLSv1, TLSv1.1
После этого ресторуем сервис xrdp
# systemctl restart xrdp

Теперь проблем подключения по RDP у тонкого клиента THIN CLIENT HP T610 TPC-W006-TC нет.