Новости:

SMF - Just Installed!

Главное меню

Последние сообщения

#71
Настройки *nix (почта, web, система etc) / SSL и NGINX
Последний ответ от George - Янв. 26, 2023, 02:51
В данной инструкции разберем принцип правильной настройки поддержки https в веб-сервере NGINX, которая пройдет проверку безопасности с присвоением максимальной категории. Тестировать конфигурацию мы будем с помощью сервиса https://www.ssllabs.com/ssltest/ — наша задача получить категорию А:

Категория А при проверке безопасности сервисом ssllabs

Статья не рассчитана на новичков — вы должны понимать общие принципы настройки https в NGINX. Команды, приведенные в данном руководстве выполняются на системе Linux. Для Windows принцип настройки остается таким же, за исключением конкретных команд и путей до конфигурационных файлов.

Для достижения результата мы рассмотрим:

Что такое правильный сертификат и как его получить
Использование сертификата с ключами от центров сертификации
Как отключить поддержку устаревших протоколов безопасности в NGINX
Настройку Forward Secrecy
Усиление шифра Diffie-Hellman
Перенаправление всех запросов на https

1. Правильный сертификат
Под этим подразумевается выполнение двух условий:

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

Для получения сертификата от правильного центра, необходимо за него заплатить или получить бесплатно от Let's Encrypt. Купить сертификат можно у большинства хостеров или регистраторов доменных имен. Для получения бесплатного сертификата можно воспользоваться инструкцией Получение бесплатного SSL сертификата Let's Encrypt.

И наоборот, сертификат может быть выпущен не доверенным центром или локально на компьютере (самоподписанный). В таком случае мы получим ошибку при проверке подлинности.

Сертификат для домена
Заказывая сертификат, мы обязательно указываем, для какого доменного имени его будем использовать. Это обязательное требование. Например, если мы хотим настроить SSL-подключение к узлу security.dmosk.ru, то необходимо указывать именно это имя при заказе ключа безопасности. В противном случае, браузер будет выдавать нам ошибку, что сертификат выдан для другого узла.

Также мы можем заказать сертификат типа wildcard — он применим к домену и все его поддоменам. Например, в нашем случае мы можем заказать ключ для *.dmosk.ru — он будет применять для любого доменного имени 3-го уровня с корнем dmosk.ru.

2. Использование всей цепочки сертификатов
Применяя сертификат в NGINX, необходимо загрузить не только сертификат для домена, но и для всех центров сертификации — как основного, так и промежуточных. В противном случае, мы получим ошибку This server's certificate chain is incomplete. Grade capped to B:

Ошибка при проверке сертификата, если загружена не вся цепочка ключей безопасности

В случае покупки сертификата, нам отправляют все ключи в отдельных файлах. Цепочка сертификатов, как правило, идет в файле chain. Мы должны скопировать последовательность в данном файле и добавить ее к содержимому в файле с сертификатом домена — получиться файл, содержащий как последовательность для домена, так и всех центров. Назвать его можно fullchain.pem.

В случае получение бесплатного сертификата от Let's Encrypt, мы получаем 4 файла, один из которых называется fullchain.pem — именно он и содержит все необходимые последовательности.

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

Цитироватьserver {
Код: bash
        listen 443;
        server_name security.dmosk.ru;
        ssl on;
        ssl_certificate /etc/nginx/ssl/fullchain.pem;
        ssl_certificate_key /etc/nginx/ssl/cert.key;

        ...
}

* в данном примере мы настраиваем NGINX для домена security.dmosk.ru; обратите внимание, что мы указали путь до файла fullchain.pem, в котором должны находиться последовательности, как для домена, так и центров сертификации.

Не забываем перезапустить nginx:

Код: bash
systemctl restart nginx

3. Отключение устаревших протоколов
В случае, если наш веб-сервер поддерживает подключение с использованием устаревших протоколов безопасности, например, TLS 1.0, мы получим ошибку This server supports TLS 1.0 and TLS 1.1:

Ошибка при проверке безопасности сайта, если разрешены подключения по устаревшим протоколам

В NGINX нам необходимо перечислить протоколы, по которым разрешено подключение. Лучше всего это сделать в основном конфигурационном файле:

Код: bash
vi /etc/nginx/nginx.conf

Внутри раздела http добавим:

Цитироватьhttp {
    ...
 
Код: bash
  ssl_protocols TLSv1.2 TLSv1.3;
    ..
}
* в данном примере мы указали, что разрешены подключения только по TLS версий 1.2 и 1.3.

Не забываем перезапустить nginx:

Код: bash
systemctl restart nginx

4. Задаем приоритет для серверных шифров
Нам необходимо указать, чтобы при использовании протокола TLS серверные шифры были приоритетнее, чем клиентские. В противном случае мы увидим ошибку This server does not support Forward Secrecy with the reference browsers:

Неправильная настройка Forward Secrecy

Задать настройку можно в разделе http основного конфигурационного файла:

Код: bash
vi /etc/nginx/nginx.conf

Цитироватьhttp {
    ...
Код: bash
    ssl_prefer_server_ciphers on;
    ..
}

Не забываем перезапустить nginx:

Код: bash
systemctl restart nginx

5. Настройка более стойкого ключа Диффи-Хилмана
Для шифрования сессий NGINX использует DH-шифры. Если последовательность не достаточно стойкая (ниже 2048 бит), мы увидим ошибку This server supports weak Diffie-Hellman (DH) key exchange parameters:

Ошибка при использовании слабого шифра Diffie-Hellman

Чтобы исправить ошибку, генерируем стойкую последовательность для Diffie-Hellman файла:

Код: bash
openssl dhparam -out /etc/nginx/dh2048.pem 2048

В настройках NGINX (разделе http) добавляем:

vi /etc/nginx/nginx.conf

Цитироватьhttp {
    ...
Код: bash
    ssl_dhparam dh2048.pem;
    ..
}

Не забываем перезапустить nginx:

systemctl restart nginx
Код: bash
(Опционально) Перенаправление с 80 на 443
Стоит добавить настройку для перенаправления запроса с http на https. Для этого в настройке виртуального домена в NGINX добавим:

Цитироватьserver {
Код: bash
  listen 80;
        server_name security.dmosk.ru;
        return 301 https://$host$request_uri;
}

* в данном примере все http-запросы на домен security.dmosk.ru будет перенаправляться на https.

И перезапустим nginx:

Код: bash
systemctl restart nginx
#72
Настройки *nix (почта, web, система etc) / PHP 7.4 на CentOS 9
Последний ответ от George - Янв. 22, 2023, 01:04
Код: bash
dnf config-manager --set-enabled crb

Код: bash
sudo dnf install \
    https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm \
    https://dl.fedoraproject.org/pub/epel/epel-next-release-latest-9.noarch.rpm

Код: bash
sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-9.rpm -y

Код: bash
sudo dnf install \
    https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm \
    https://dl.fedoraproject.org/pub/epel/epel-next-release-latest-8.noarch.rpm

Код: bash
sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm -y

Код: bash
dnf module list php

Код: bash
sudo dnf module enable php:remi-7.4 -y

Ставим РНР

Apache (httpd) PHP:

Код: bash
sudo dnf install php php-cli -y

Nginx PHP:

Код: bash
sudo dnf install php-fpm php-cli -y

Все модули:

Код: bash
sudo dnf install php-cli php-fpm php-curl php-mysqlnd php-gd php-opcache php-zip php-intl php-common php-bcmath php-imagick php-xmlrpc php-json php-readline php-memcached php-redis php-mbstring php-apcu php-xml php-dom php-redis php-memcached php-memcache
#73
Подготовка системы

Заставить работать ни 19.8 ни 20.1 с SRTP мне не удалось. Версия библиотеки libsrtp похоже не подходит для res_srtp

Для корректной работы сервера необходимо настроить системное время, открыть порты в брандмауэре и отключить SELinux. Также мы установим несколько пакетов и создадим учетную запись, от которой будет работать Asterisk.

1. Время

Задаем часовой пояс:

Код: bash
timedatectl set-timezone Europe/Moscow


* в данном примере московское время. Список всех зон можно посмотреть командой timedatectl list-timezones.

Устанавливаем сервис для синхронизации времени:

Код: bash
yum install chrony

И запускаем его с разрешением автозапуска:

Код: bash
systemctl enable chronyd --now

У меня оказался установленным.

2. Настройка firewall

Мы должны открыть порты:

    5060 — SIP.
    5061 — SIP over TLS.
    80 — http.
    443 — https.
    10000-20000 — диапазон для динамических портов.

В CentOS для управления брандмауэром может использоваться firewalld или iptables. Рассмотрим настройку и того, и другого.
Firewalld

Разрешаем порты для работы asterisk:

Код: bash
firewall-cmd --permanent --add-port={5060,5061}/{tcp,udp}

Код: bash
firewall-cmd --permanent  --add-port=10000-20000/udp

... и веб-сервера NGINX:

Код: bash
firewall-cmd --permanent --add-service={http,https}

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

Код: bash
firewall-cmd --reload

Iptables

Открываем порты для астериска и веб-сервера:

Код: bash
iptables -I INPUT -p tcp --match multiport --dports 5060,5061 -j ACCEPT

Код: bash
iptables -I INPUT -p udp --match multiport --dports 5060,5061 -j ACCEPT

iptables -I INPUT -p tcp --match multiport --dports 80,443 -j ACCEPT

Код: bash
iptables -I INPUT -p udp --match multiport --dports 80,443 -j ACCEPT

Код: bash
iptables -I INPUT -p udp --dport 10000:20000 -j ACCEPT

Для сохранения правил установим:

Код: bash
dnf install iptables-services

И разрешим автозапуск сервиса:

Код: bash
systemctl enable iptables

Теперь сохраняем сами правила:
Код: bash
service iptables save

* правила будут сохранены в файл /etc/sysconfig/iptables.

Настоятельно рекомендую сменить порты SIP и SIPS, ломать вас будут пытаться на стандартных портах. Также, если сервер смотрит в инет напрямую, ни в коем случае не открывать порты http и https снаружи. Соответственно на firewall открываем порты, на которые будем менять(для SIP и SIPS). Проброс порта через nat со сменой (входящий не стандарт, перенаправление на 5060) приводит к обрыву соединения через 24 секунды примерно. О том, как поменять порты ссылка в конце статьи

3. Отключение SELinux

Для отключения SELinux вводим две команды:

Код: bash
setenforce 0

Код: bash
sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config

4. Установка пакетов


Выполним установку пакетов:

Код: bash
dnf install wget tar glibc-langpack-ru

* где:

    wget — утилита для загрузки файлов по сети.
    tar — для распаковки архивов.
    glibc-langpack-ru — русская локаль. Она нужна, чтобы у нас была возможность выбрать русский интерфейс во FreePBX.

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

Нам нужен общий пользователь, от которого будет работать Asterisk и веб-сервер. Это необходимо, чтобы веб-сервер имел доступ к каталогам астериска.

Создаем пользователя командой:

Код: bash
useradd asterisk -m

Настройка веб-сервера

Для работы FreePBX нам необходим веб-сервер и СУБД. В нашем примере мы установим связку NGINX + PHP + MariaDB + NodeJS.

Сервер баз данных


Устанавливаем сервер mariadb:

Код: bash
dnf install mariadb-server

Стартуем сервис и разрешаем его автозапуск:

Код: bash
systemctl enable mariadb --now

Задаем пароль для суперпользователя СУБД:

Код: bash
mysqladmin -u root password

NGINX

Для установки веб-сервера вводим команду:

Код: bash
dnf install nginx

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

Код: bash
vi /etc/nginx/nginx.conf

В секции http добавим опцию:

Код: bash
client_max_body_size 128M;

* данный параметр разрешает загрузку файлов размером 128 Мб.

Стартуем nginx:

Код: bash
systemctl enable nginx --now

Открываем браузер и заходим по адресу http:<IP-адрес сервера> — должна открыться страница приветствия NGINX:

Стартовая страница NGINX

Веб-сервер установлен.

PHP

Установка РНР 7.4 на CentOS 9

По умолчанию ставит 8.1, на нее не встает FreePBX!! Как понял я вырезана какая-то функция, используемая установщиком.

Код: bash
dnf install php php-fpm php-bcmath php-gd php-json php-mbstring php-mysqlnd php-pear php-snmp php-zip

настройки для php:

Код: bash
sed -i "s/upload_max_filesize = .*/upload_max_filesize = 128M/" /etc/php.ini
Код: bash
sed -i "s/post_max_size = .*/post_max_size = 128M/" /etc/php.ini
Код: bash
sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php.ini

И установим Time zone

Код: bash
vi /etc/php.ini

Код: bash
date.timezone = "Europe/Moscow"

*где:

    upload_max_filesize — максимальный объем загружаемого файла.
    post_max_size — максимальный объем всех загружаемых файлов за один раз.
    date.timezone — временная зона.
    memory_limit — максимальный объем памяти, который может использовать интерпретатор.


Открываем настройки php-fpm:

Код: bash
vi /etc/php-fpm.d/www.conf

Задаем значения для следующих опций:

Цитироватьuser = asterisk
...
group = asterisk
...
listen.acl_users = asterisk,apache,nginx

* FreePBX должен работать с файлами в каталоге /etc/asterisk. Владельцем этого каталога будет пользователь asterisk, поэтому обработка php должна выполняться тоже от данного пользователя, чтобы иметь соответствующие права на редактирование конфигурационных файлов.

Запускаем php-fpm:

Код: bash
systemctl enable php-fpm --now

NGINX + PHP

Свяжем наш веб-сервер с php. Для этого откроем конфигурационный файл:
Код: bash
vi /etc/nginx/nginx.conf

Добавим следующие строки в разделы http - server:

Цитировать...
http {
    ...
    server {
        ...
        server_name  192.168.1.15;
        ...
        location ~ \.php$ {
            set $root_path /usr/share/nginx/html;
            fastcgi_pass unix:/run/php-fpm/www.sock;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
            fastcgi_param SERVER_NAME $host;
        }
        ...

* в данном примере мы задаем настройку для server_name — указываем имя хоста или IP-адрес, по которому мы будем подключаться к FreePBX. Также мы создаем секцию location для обработки php через php-fpm.

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

Код: bash
systemctl reload nginx

Создадим файл php в домашней директории nginx:

Код: bash
vi /usr/share/nginx/html/index.php

Код: bash
<?php phpinfo(); ?>

Открываем браузер и заходим по адресу http:<IP-адрес сервера> — должна открываться страница с информацией об установленной версии php и всех компонентах:

NodeJS

Последний компонент для нашего веб-сервера — NodeJS. Для его установки выполняем команду:

Код: bash
dnf install nodejs

Убедиться в установке можно командой просмотра версии:

Код: bash
node --version

Наш веб-сервер готов к работе.
Установка Asterisk

Мы будем устанавливать 16-ю версию Asterisk. На странице загрузки мы можем посмотреть все версии АТС и ссылки на них.

Во многих инструкциях естьвот такое:
Сначала установим пакеты, необходимые для сборки:

Код: bash
dnf --enablerepo=powertools install libedit-devel


Но на CentOS 9 этого репозитория нет, и дальше все собирается и без него...

После скачиваем Asterisk:

Код: bash
wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20-current.tar.gz

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

Код: bash
tar -xvf asterisk-*.tar.gz

Код: bash
cd asterisk-*/

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

Код: bash
./contrib/scripts/install_prereq install

Мы должны увидеть:

Complete!
#############################################
## install completed successfully
#############################################

Чистим временные файлы, которые появились после установки зависимостей:

Код: bash
make distclean

Добавляем библиотеку для работы с mp3:

Код: bash
./contrib/scripts/get_mp3_source.sh

Конфигурируем исходник:

Код: bash
./configure

* в данном примере мы конфигурируем исходник без дополнительных опций. Полный перечень опций и что они означают можно посмотреть командой ./configure -h.

Чтобы правильно сконфигурировать с поддержкой SRTP вводим:

Код: bash
yum install  libsrtp libsrtp-devel

Код: bash
./configure --libdir=/usr/lib64 --with-crypto --with-ssl=ssl --with-srtp

Мы должны увидеть:

...
configure: Menuselect build configuration successfully completed

              .$$$$$$$$$$$$$$$=..     
            .$7$7..          .7$$7:.   
          .$$:.                ,$7.7 
        .$7.    7$$$$          .$$77 
    ..$$.      $$$$$            .$$$7
    ..7$  .?.  $$$$$  .?.      7$$$.
  $.$.  .$$$7. $$$$7 .7$$$.      .$$$.
.777.  .$$$$$$77$$$77$$$$$7.      $$$,
$$$~      .7$$$$$$$$$$$$$7.      .$$$.
.$$7          .7$$$$$$$7:          ?$$$.
$$$          ?7$$$$$$$$$$I        .$$$7
$$$      .7$$$$$$$$$$$$$$$$      :$$$.
$$$      $$$$$$7$$$$$$$$$$$$    .$$$. 
$$$        $$$  7$$$7  .$$$    .$$$. 
$$$$            $$$$7        .$$$.   
7$$$7            7$$$$        7$$$     
$$$$$                        $$$     
  $$$$7.                      $$  (TM)   
  $$$$$$$.          .7$$$$$$  $$     
    $$$$$$$$$$$$7$$$$$$$$$.$$$$$$     
      $$$$$$$$$$$$$$$$.               

configure: Package configured for:
configure: OS type  : linux-gnu
configure: Host CPU : x86_64
configure: build-cpu:vendor:os: x86_64 : pc : linux-gnu :
configure: host-cpu:vendor:os: x86_64 : pc : linux-gnu :

Продолжаем настройку — запускаем меню для выбора параметров:

Код: bash
make menuselect
В разделе «Add-ons» выберите «chan_ooh323» и «format_mp3»

В разделе «Core Sound Packages» выберите необходимые аудиопакеты (опционально)

В разделе «Music On Hold» выберите нужные форматы музыки на удержании (опционально)

В разделе «Extra Sound Packages» выберите дополнительные аудиопакеты (опционально)

В разделе «Applications» выберите «app_macro» (в — Deprecated —)

включим поддержку SRTP

В разделе Resource Modules включить установку модуля res_srtp

Затем нажмите save and exit

В версии 20.1 нет выбора аудиопакетов, а res_srtp оказался включен по умолчанию. В 19.8 аудиопакеты есть, но SRTP не включается. Собранный с ним asterisk не может загрузить этот модуль и падает через несколько секунд

Теперь можно запустить сборку астериска:

Код: bash
make

Мы должны увидеть сообщение об успешной сборке:

+--------- Asterisk Build Complete ---------+
+ Asterisk has successfully been built, and +
+ can be installed by running:              +
+                                          +
+                make install              +
+-------------------------------------------+

После выполняем установку:

Код: bash
make install

Мы увидим:

+---- Asterisk Installation Complete -------+
+                                          +
+    YOU MUST READ THE SECURITY DOCUMENT    +
+                                          +
...

Устанавливаем скрипты для автозапуска АТС и готовые конфигурационные файлы:

Код: bash
dnf install chkconfig

Код: bash
make config

Код: bash
make samples

Код: bash
make install-logrotate

Если требуется установка logrotate для ротации лог-файлов

Код: bash
ldconfig

Настройте запуск asterisk из под соответствующего пользователя:

Откройте файл /etc/sysconfig/asterisk и раскоментируйте следующие строки:

Код: bash
vi /etc/sysconfig/asterisk
ЦитироватьAST_USER="asterisk"
AST_GROUP="asterisk"

Код: bash
vi /etc/asterisk/asterisk.conf

Снимаем комментарий с опций:

Цитироватьrunuser = asterisk
rungroup = asterisk

... и снимем комментарий с последующим редактированием:

Цитироватьdefaultlanguage = ru
documentation_language = ru_RU

Задаем владельца для следующих каталогов:

Код: bash
chown -R asterisk:asterisk /var/run/asterisk

Код: bash
chown -R asterisk:asterisk /etc/asterisk

Код: bash
chown -R asterisk:asterisk /var/{lib,log,spool}/asterisk

Код: bash
chown -R asterisk:asterisk /var/log/asterisk

Одной командой:

Код: bash
sudo chown -R asterisk.asterisk /etc/asterisk /var/run/asterisk /var/{lib,log,spool}/asterisk /usr/lib64/asterisk

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

Код: bash
asterisk -c

Мы должны увидеть Asterisk Ready:

Проверка запуска Asterisk

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

После успешной проверки, можно запустить Asterisk в качестве демона:

Код: bash
systemctl enable asterisk

Код: bash
systemctl start asterisk

Установка FreePBX

Возвращаемся в домашнюю папку пользователя:

Код: bash
cd ~

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

Код: bash
dnf install sox mpg123 -y


* где:

    sox — консольная утилита для преобразования аудиофайлов из одного формата в другой.
    mpg123 — аудиопроигрыватель/декодер реального времени.

Скачиваем портал для управления астериском:

Код: bash
wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-16.0-latest.tgz

* мы скачаем freepbx версии 15. Для CentOS 8 это оптимальная версия. Если необходимо установить freepbx 14, то устанавливаемая по умолчанию версия php выдаст ошибку.

Распаковываем скачанный архив:
Код: bash
tar zxvf freepbx-*.tgz

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

Код: bash
cd freepbx

Запускаем скрипт проверки работы Asterisk:

Код: bash
./start_asterisk start

Если видим:

ЦитироватьSTARTING ASTERISK
Asterisk is already running

... запускаем установку:

Код: bash
./install -n --dbuser root --dbpass password --webroot=/usr/share/nginx/html

* в данном примере мы указали учетные данные для подключения к СУБД (логин root и пароль, который мы создали после установки MariaDB); также мы указываем путь /usr/share/nginx/html, который является домашней директорией веб-сервера NGINX.

Начнется установка — в конце мы должны увидеть:

ЦитироватьYou have successfully installed FreePBX

Открываем браузер и заходим по адресу http:<IP-адрес сервера> — должна открываться страница конфигурирования FreePBX. Задаем настройки:

Задаем стартовые настройки freepbx

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

После входим в панель администратора под созданной учетной записью. Система нас запросит региональные настройки:

Настраиваем язык веб-интерфейса

Теперь открываем конфигурационный файл:

Код: bash
vi /etc/asterisk/manager.conf

Находим строки:

Цитировать#include manager_additional.conf
#include manager_custom.conf

... и меняем их на:

Цитировать;include manager_additional.conf
;include manager_custom.conf
Перезапускаем сервис Asterisk:

Код: bash
systemctl restart asterisk

Asterisk + FreePBX настроен.
#74
ервое, что требуется сделать — это обновить систему. Признаюсь честно это полезно делать перед каждой серьезной операцией.

   
Код: bash
sudo dnf update

Далее надо проверить текущую версию ядра.

Код: bash
uname -r

В терминале должен появится следующий ответ.

5.14.0-205.el9.x86_64

Теперь включите репозиторий под названием elrepo, который собирает для нас пакеты ядра и облегчает весь процесс.

Перед тем как добавить его в систему, скачайте и примените GPG ключ от него.

   
Код: bash
sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

Теперь добавьте репозиторий:

   
Код: bash
sudo dnf install https://www.elrepo.org/elrepo-release-9.el9.elrepo.noarch.rpm

Теперь можно легко установить ядро Linux Kernel 6.x. Для этого выполните следующую команду.

   
Код: bash
sudo dnf --enablerepo=elrepo-kernel install kernel-ml


Вот так легко и быстро это делается.

Чтобы применить изменения и загрузиться с новым ядром вам требуется перезагрузить машину (ПК).

После включения, выполните следующую команду для проверки работающего ядра.

    uname -r

Работает ядро 6.1
Работает ядро 6.1

Вы увидите новую версию ядра.
#75
 sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
#76
Windows. Все о нашей "любимой" ОС / DICM /Online
Последний ответ от George - Янв. 16, 2023, 04:36
Вы можете указать WIM или ESD файл с оригинальным установочным образом Windows, который нужно использовать в качестве источника для восстановления файлов компонентов системы. Предположим, вы смонтировали установочный ISO образ Windows 10 в виртуальный привод E:. Для восстановления хранилища компонентов из образа используйте одну из команд:

DISM /online /cleanup-image /restorehealth /source:E:\sources\install.wim
Или:
DISM /online /cleanup-image /restorehealth /source:E:\sources\install.esd

Чтобы запретить использовать центр обновлений Windows в Интернете, и выполнять сканирование и восстановление образа Windows только из локального WIM/ESD файла:

DISM /online /cleanup-image /restorehealth /source:E:\sources\install.wim /limitaccess
Или:
DISM /online /cleanup-image /restorehealth /source:E:\sources\install.esd /limitaccess

dism /online /cleanup-image /restorehealth /limitaccess
#77
Windows. Все о нашей "любимой" ОС / Virtual machine fails to start...
Последний ответ от George - Янв. 13, 2023, 11:32
When trying to start a virtual machine for the first time after copying (or replacing) its virtual hard drive file (.vhd or .vhdx) the virtual machine fails to start with the following error:

(x) An error occurred while attempting to start the selected virtual machine(s).

'PC-Name; failed to start.

Microsoft Emulated IDE Controller (Instance ID XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX): Failed to Power on with Error 'General access denied error'.

IDE/ATAPI Account does not have sufficient privilege to open attachment 'E:\Hyper-V\PC-Name\Virtual Hard Disks\MyVHD.vhdx'. Error: 'General access denied error'.

Where 'PC-Name' is the name of the virtual PC, the instance ID will be a unique series of letters and MyVHDX.vhdx will be the name (and path) of your own virtual hard drive file.

Causes
Each virtual machine is started using a virtual machine account. The virtual machine account needs read and write access to the .vhd/.vhdx file, but if the file has just been copied from somewhere then it most likely lacks the necessary file permissions.

Remedy
If you don't already have the Hyper-V Manager error dialog open ("An error occurred while attempting to start the selected virtual machine(s) ...") then try to start the virtual machine now. You need the error open.
Click "See details". This will show additional details, and will look something like:
'PC-Name' failed to start. (Virtual machine ID B9C4F7D4-0009-4BE2-90FB-9D60B1A06BDD)

'PC-Name' Microsoft Emulated IDE Controller (Instance ID XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX): Failed to Power on with Error 'General access denied error' (0x80070005). (Virtual machine ID B9C4F7D4-0009-4BE2-90FB-9D60B1A06BDD)

'PC-Name': IDE/ATAPI Account does not have sufficient privilege to open attachment 'E:\Hyper-V\PC-Name\Virtual Hard Disks\MyVHD.vhdx'. Error: 'General access denied error' (0x80070005). (Virtual machine ID B9C4F7D4-0009-4BE2-90FB-9D60B1A06BDD)

'PC-Name': Hyper-V Virtual Machine Management service Account does not have sufficient privolege to open attachment 'E:\Hyper-V\PC-Name\Virtual Hard Disks\MyVHD.vhdx'. Error: 'General access denied error' (0x80070005). (Virtual machine ID B9C4F7D4-0009-4BE2-90FB-9D60B1A06BDD)

Where PC-Name will be the name of your virtual PC. The long sequence of letters and numbers (in my case above "B9C4F7D4-0009-4BE2-90FB-9D60B1A06BDD") is the Virtual Machine ID. This number is significant and you need it to fix the problem.

On the host server open an elevated command prompt.
Enter the following:
Код: bash
icacls "full-path-to-vhd-or-vhdx-file" /grant "NT VIRTUAL MACHINE\Virtual-Machine-ID":(F)

substituting the path to the vhd/vhdx file - you can obtain this from the original error message, and the Virtual-Machine-ID that you obtained from the "See details" part of the error.

So the line for me was:

Код: bash
icacls "E:\Hyper-V\PC-Name\Virtual Hard Disks\MyVHD.vhdx" /grant "NT VIRTUAL MACHINE\B9C4F7D4-0009-4BE2-90FB-9D60B1A06BDD":(F)

But the path and Virtual Machine ID will be different to mine.

If you get the message "Failed processing 1 files" then check the virtual machine ID.

Now try to start the virtual machine. The error should no longer be present.
#78
РЕШЕНИЕ (для примера восстанавливаемая база будет называться testdb ):
1. При удаление ldf файла и попытки запустить базу только с mdf база перейдет в режим: Recovery Pending
2. Переводим базу в offline режим (tasks -> take offline)
ALTER DATABASE testdb set offline
3. Копируем mdf в другое место (из места расположения бд) в нашем  примере testdb.mdf
4. Удаляем базу. (DELETE)
DROP DATABASE testdb
5. Создаем новую бд с таким же именем testdb
CREATE DATABASE testdb
6. Переводим базу в offline режим (tasks -> take offline)
ALTER DATABASE testdb set offline
7. подменяем testdb.mdf (оригинальным, который вы копировали от поврежденной базы)
8.Переводим базу в online
ALTER DATABASE testdb set online
ВНИМАНИЕ: вы получите ошибку о том что ldf не соответсвет вашим MDF, но если обновите Microsoft SQL Server Managment Studio увидите что база перешла в режим Restricted User mode

9. пересоздаем ldf фаил (указываем новое им ldf).
ALTER DATABASE testdb REBUILD LOG ON (
NAME='testdb_LOG',
FILENAME='E:\SQL_bases\testdb_new_LOG.ldf')
GO

10. Переводим базу в многопользовательский режим и проверяем на целосность

ALTER DATABASE testdb Set MULTI_USER
DBCC CHECKDB (testdb ) WITH NO_INFOMSGS
#79
Следуйте методу, показанному в новой статье Уильяма Лама Passthrough of Integrated GPU [iGPU] для стандартного Intel NUC, где он объясняет, что проблема заключается в том, что ESXi претендует на драйвер VGA, но будьте осторожны, вы больше не увидите загрузку ESXi до того, как появится ваша автоматически запущенная виртуальная машина с прохождением GPU! Вот однострочная команда SSH, которую нужно выдать, а затем перезагрузить, вот и все!
Код: bash
esxcli system settings kernel set -s vga -v FALSE
Когда в следующем выпуске ESXi 7.x появится лучшее разрешение, мы можем выполнить следующую команду, чтобы отменить изменение:
Код: bash
esxcli system settings kernel set -s vga -v TRUE
возврат к исходному поведению ESXi 6.x, где на дисплее отображается знакомая черно-желтая последовательность загрузки ESXi DCUI, а затем передача VGA виртуальной машине с ускорением графического процессора позже, когда эта виртуальная машина будет автоматически запущена.

https://williamlam.com/2020/06/passthrough-of-integrated-gpu-igpu-for-standard-intel-nuc.html
#80
Код: bash
esxcli software vib install -v http://download3.vmware.com/software/vmw-tools/esxui/esxui-signed-latest.vib

на 5.5 работает, проверил лично
🡱 🡳

Отметьте интересные вам фрагменты текста и они станут доступны по уникальной ссылке в адресной строке браузера.