среда, 26 октября 2022 г.

BTOP++. Продвинутый аналог утилиты TOP

Ссылка на проект: https://github.com/aristocratos/btop
Установка из исходных кодов:
# cd /usr/src/
# mkdir btop
# cd btop
С ресурса скачиваем свежую версию утилиты https://github.com/aristocratos/btop/releases/tag/v1.2.12
# wget https://github.com/aristocratos/btop/releases/download/v1.2.12/btop-x86_64-linux-musl.tbz
Распаковываем архив:
# yum install bzip2
# bzip2 -d btop-x86_64-linux-musl.tbz
# tar -xvf btop-x86_64-linux-musl.tar
# make install


# ./setuid.sh
Запуск:
# /usr/local/bin/btop
Наслаждаемся фантастическим дизайном отображения основных характеристик сервера:




Утилита ncdu. Отображение размера занятого дискового пространства в псевдографическом интерфейсе

Установка утилиты
# yum install ncdu

Для использования нужно выполнить команду ncdu с аргументом в котором написать путь для сканирования. Например, «/»
#ncdu /
Утилита просканирует систему и представит наглядный интерфейс занятого места:
 


воскресенье, 23 октября 2022 г.

Подключение из нового Rocky Linux 9 к старому CentOS 6

Rocky Linux 9 имеет повышенный уровень защищенности.
В ОС по умолчанию не поддерживается устаревший алгоритм шифрования SHA1.
Подключение к старой версии CentOS 6.4 затруднительно.
При настройках по умолчанию подключение выдает ошибку:
# ssh root@10.10.50.252
ssh_dispatch_run_fatal: Connection to 10.10.50.252 port 22: error in libcrypto

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

1) В старой системе CentOS 6.4 использовать алгоритм ECDSA вместо RSA для создания ключа.
На сервере CentOS6.4 ключ ECDSA создается так:
# yum update openssh
# ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -C '' -N ''
# chmod 600 /etc/ssh/ssh_host_ecdsa_key
# chmod 640 /etc/ssh/ssh_host_ecdsa_key.pub
# restorecon /etc/ssh/ssh_host_ecdsa_key.pub

Добавляем в настройки демона ssh опцию использования ключа ECDSA
# nano /etc/ssh/sshd_config
Добавляем строчку:
    HostKey /etc/ssh/ssh_host_ecdsa_key
Рестартуем сервис SSH:
# service sshd restart
На новом сервере Rocky Linux 9 указываем в настройках клиента SSH:
# nano /etc/ssh/ssh_config
    Host 10.10.50.252
        Hostkeyalgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521

Рестартуем сервис SSH:
# systemctl restart sshd

2) Разрешить на Rocky Linux 9 работать с алгоритмом SHA1.
Для этого нужно выполнить команду:
# update-crypto-policies --set DEFAULT:SHA1
Данная команда добавит к настройкам по умолчанию возможность работы с SHA1
После этого нужно перезагрузить систему:
# reboot
Просмотр текущих политик шифрования:
# update-crypto-policies --show
Подробнее о политиках шифрования в Rocky Linux 9 (red hat 9):
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/security_hardening/using-the-system-wide-cryptographic-policies_security-hardening
Возврат к первоначальным политикам шифрования:
# update-crypto-policies --set DEFAULT
# reboot


Примечание:
Если на удаленном сервере провели замену типа ключа шифрования,
то при подключении к удаленному серверу на локальном может возникать ошибка:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:hsXXFgEjfF3lSdQEiTmN+EvuEbhY7eR.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending RSA key in /root/.ssh/known_hosts:2
Host key for 10.10.50.252 has changed and you have requested strict checking.
Host key verification failed.

Для решения проблемы нужно на локальном сервере удалить старый ключ из файла /root/.ssh/known_hosts
# nano /root/.ssh/known_hosts
Здесь нужно найти строчку с IP адресом удаленного сервера, к которому подключаемся.
Например, строка может быть такая:
10.10.50.252 ssh-rsa AAAAB3NzaC1yc2EAAAaKNoaFSSnD/S5mvc
Удаляем строку.
После этого подключение к удаленному серверу 10.10.50.252 по новому протоколу ECDSA будет проходить успешно.

пятница, 21 октября 2022 г.

MariaDB10 особенности работы mysqldump со старыми серверами MySQL5

На новом сервере установил MariaDB 10.9.1

Обнаружил, что команды mysqldump с удаленным сервером 10.10.50.252 с MySQL 5.1 работают не так как ожидалось.
Например, команда которая должна выгружать данные (без структуры) с удаленного сервера реально не работает:
# mysqldump -h10.10.50.252 -uuserdb -ppasswd --no-create-info dbname > dbname_data.sql
Оказалось, что при выполнении mysqldump на новом сервере и обращении к старому серверу нужно специально указывать опцию использования другого формата.
Это опция: --compatible=ansi
Таким образом команда должна быть такая:
# mysqldump -h10.10.50.252 -uuserdb -ppasswd --no-create-info --compatible=ansi dbname > dbname_data.sql
После анализа выгружаемой информации обнаружилось, что русские буквы не читаются в выгрузке.
Вместо русских букв - знаки вопроса, например: '????? ? ??????????? text 10.10.2017, ????'
Для решения проблем с кодировкой необходимо в команде задать используемую кодировку. Это опция: --default-character-set=utf8
Команда получается такая:
# mysqldump -h10.10.50.252 -uuserdb -ppasswd --no-create-info --compatible=ansi --default-character-set=utf8 dbname > dbname_data.sql
После выполнения команды в текущем каталоге будет корректный файл dbname_data.sql

Загрузка данных в новую базу данных на новый сервер из файла dbname_data.sql:
# mysql -uuserdb -ppasswd dbname < dbname_data.sql

среда, 19 октября 2022 г.

Исправление ошибки в браузере: не установлено корректное значение атрибута «SameSite»

В новых браузерах при работах с cookies файлами необходимо использовать атрибут SameSite. Данный атрибут предназначен для защиты от подделки межсайтовых запросов (CSRF). С помощью этого атрибута можно запретить браузеру передавать cookies файлы на другие сервера при переходе по ссылкам.

Если на сервере данный атрибут не задается явно, то в браузере в консоли разработчика будем видеть ошибки:
Для куки «XXXXX» не установлено корректное значение атрибута «SameSite». Вскоре куки без атрибута «SameSite» или с некорректным значением этого атрибута будут рассматриваться как «Lax». Это означает, что куки больше не будут отправляться в сторонних контекстах. Если ваше приложение зависит от доступности этих кук в подобных контекстах, добавьте к ним атрибут «SameSite=None». Чтобы узнать больше об атрибуте «SameSite», прочитайте https://developer.mozilla.org/docs/Web/HTTP/Headers/Set-Cookie/SameSite
Пример:


Для решения данной проблемы необходимо заставить сервер устанавливать атрибут SameSite в файлы cookies.

1)    В настройках php это прописывается в директиве session.cookie_samesite фаайла php.ini.
# nano /etc/php.ini
; Add SameSite attribute to cookie to help mitigate Cross-Site Request Forgery (CSRF/XSRF)
; Current valid values are "Strict", "Lax" or "None". When using "None",
; make sure to include the quotes, as `none` is interpreted like `false` in ini files.
; https://tools.ietf.org/html/draft-west-first-party-cookies-07
session.cookie_samesite = Lax


2)    В коде php это прописывается так:
 Пример для php 8.1
setcookie('cookie-name', 'cookie-value',
 array('expires' => time() + 86400,
 'path' => '/',
'samesite' => 'Lax'));
 

Пример для php 5.4:
setcookie('cookie-name', 'cookie-value', 0, '/; samesite=Lax ');




Rocky Linux 9. Вывод ошибок PHP8 в web интерфейс

Для вывода ошибок php в web интерфейс нужно отредактировать php.ini
# nano /etc/php.ini
Устанавливаем следующие директивы в On
    display_errors = On
    display_startup_errors = On

Перезапускаем модуль php:
# systemctl restart php-fpm
Все.

Логи ошибок в консоли можно посмотреть тут:
# tail -f /var/log/php-fpm/www-error.log

вторник, 18 октября 2022 г.

Rocky Linux 9. Kernel panic при установке ОС.

При установке ОС на один из серверов  была получена ошибка:
Kernel panic - not syncing: Attempted to kill init! exitcode 0x00007f00
Внешний вид ошибки:

Причина оказалась в отказе разработчиков дистрибутивов от совместимости со старыми процессорами. Подробная информация:   
На сервере, на который пытался устанавливать ОС был процессор Intel Core2Duo, который не поддерживается в оптимизированном ядре дистрибутива RockyLinux 9. Пришлось установить Debian 11 )) 


понедельник, 17 октября 2022 г.

Rocky Linux 9. Установка MariaDB 10.9.3, Apache, PHP8.1, PhpMyAdmin 5.2.0

Установка MariaDB

Устанавливаем репозитарий MariaDB.
# curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | sudo bash
Устанавливаем свежую стабильную версию MariaDB. На момент написания - это 10.9.3.
# yum install mariadb-server
Добавляем в автозапуск и запускаем сервис:
# systemctl enable mariadb.service
# systemctl start mariadb.service

Запускаем скрипт, инициализирующий удаление лишних тестовых баз и гостевых пользователей. Следующие ответы позволят задать root пароль для базы данных и позволить подключаться в базе с паролем root
# mariadb-secure-installation
    Switch to unix_socket authentication [Y/n] Y
    Change the root password? [Y/n] Y
    New password: <вводим пароль>
    Re-enter new password: <вводим пароль еще раз>
    Remove anonymous users? [Y/n] Y
    Disallow root login remotely? [Y/n] n
    Remove test database and access to it? [Y/n] Y
    Reload privilege tables now? [Y/n] Y


Открываем возможность доступа к Mariadb по сети:
# firewall-cmd --permanent --add-service=mysql
# firewall-cmd --reload


Установка Apache
# yum install httpd
# nano /etc/httpd/conf/httpd.conf

Имя сервера прописывается в директиве ServerName
ServerName serv.domain.ru:80
Добавляем сервер Apache в скрипт автозапуска и запускам сервис
# systemctl enable httpd.service
# systemctl start  httpd.service

Открываем порт 80 в файрволл:
# firewall-cmd --permanent --add-service=http
# firewall-cmd --reload

Проверяем работу Apache обратившись к серверу так: http://<IP-сервера>

Установка PHP 8.1.11
# dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
# dnf module reset php
# dnf module install php:remi-8.1
# dnf install php-gd php-odbc php-mysqlnd php-mysqli php-bcmath php-ctype php-json

Перезапускаем web-сервер
# systemctl restart httpd.service
Создаем файл для проверки работы PHP
# nano /var/www/html/info.php
вписываем туда
<?php phpinfo(); ?>
Теперь при запросе страницы Info.php (http://<IP-сервера>/info.php ) можно увидеть информацию о модуле PHP

Установка PHPMYADMIN.
# dnf install phpmyadmin
# nano /etc/httpd/conf.d/phpMyAdmin.conf

Добавляем Require all granted под Require local
<Directory /usr/share/phpMyAdmin/>
   AddDefaultCharset UTF-8
   Require local
   Require all granted
</Directory>

Перезапускаем сервер Apache
# systemctl restart httpd.service
Теперь к странице phpmyadmin можно обратиться так: http://<IP-сервера>/phpmyadmin

Для добавления настроек, включающих дополнительные возможности PHPMYADMIN выполняем следующее:
Создаем базу данных для служебной информации:
# mysql < /usr/share/phpMyAdmin/sql/create_tables.sql -u root -p
Раскомментируем дополнительные возможности phpmyadmin в конфигурационном файле config.inc.php:
# nano /etc/phpMyAdmin/config.inc.php
Раскомментируем стоки:
 // Это логин пользователя, который можно сменить
 $cfg['Servers'][$i]['controluser'] = 'pma';
 // Пароль по умолчанию pmapass, который нужно обязательно заменить
 $cfg['Servers'][$i]['controlpass'] = 'pmapass123';
 $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
 $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
 $cfg['Servers'][$i]['relation'] = 'pma__relation';
 $cfg['Servers'][$i]['table_info'] = 'pma__table_info';
 $cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
 $cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
 $cfg['Servers'][$i]['column_info'] = 'pma__column_info';
 $cfg['Servers'][$i]['history'] = 'pma__history';
 $cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
 $cfg['Servers'][$i]['tracking'] = 'pma__tracking';
 $cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
 $cfg['Servers'][$i]['recent'] = 'pma__recent';
 $cfg['Servers'][$i]['favorite'] = 'pma__favorite';
 $cfg['Servers'][$i]['users'] = 'pma__users';
 $cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
 $cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
 $cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
 $cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
 $cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
 $cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

Подключаемся к консоли mysql и создаем пользователя pma с правами на базу данных phpmyadmin:
# mysql -uroot -p
>GRANT USAGE ON mysql.* TO 'pma'@'localhost' IDENTIFIED BY 'pmapass123';
>GRANT SELECT (
        Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv,
        Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv,
        File_priv, Grant_priv, References_priv, Index_priv, Alter_priv,
        Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv,
        Execute_priv, Repl_slave_priv, Repl_client_priv
        ) ON mysql.user TO 'pma'@'localhost';
>GRANT SELECT ON mysql.db TO 'pma'@'localhost';
>GRANT SELECT (Host, Db, User, Table_name, Table_priv, Column_priv)
        ON mysql.tables_priv TO 'pma'@'localhost';
>GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost';

После данных манипуляций нужно выйти и заново зайти на страницу http://<IP-сервера>/phpmyadmin. Теперь можно пользоваться дополнительными возможностями программы.

четверг, 6 октября 2022 г.

Rocky Linux 9 в качестве виртуальной машины в Oracle VM VirtualBox.

После создания машины Linux в VirtualBox и установки Rocky Linux 9, при загрузке  выдается ошибка:

# journalctl -b -p err
Oct 06 18:22:28 localhost systemd-vconsole-setup[213]: /usr/bin/loadkeys failed with exit status 1.
Oct 06 18:22:28 localhost systemd[1]: Failed to start Setup Virtual Console.
Oct 06 18:22:29 localhost kernel: Warning: Unmaintained hardware is detected:  e1000:100E:8086 @ 0000:00:03.0
Oct 06 18:22:37 localhost kernel: [drm:vmw_host_printf [vmwgfx]] *ERROR* Failed to send host log message.

# systemctl status systemd-vconsole-setup
× systemd-vconsole-setup.service - Setup Virtual Console
     Loaded: loaded (/usr/lib/systemd/system/systemd-vconsole-setup.service; static)
     Active: failed (Result: exit-code) since Thu 2022-10-06 18:22:28 +04; 11min ago
       Docs: man:systemd-vconsole-setup.service(8)
             man:vconsole.conf(5)
   Main PID: 213 (code=exited, status=1/FAILURE)
        CPU: 189ms
Oct 06 18:22:28 localhost systemd-vconsole-setup[218]: loadkeys: Unable to open file: ru: No such file or directory
Oct 06 18:22:28 localhost systemd-vconsole-setup[213]: /usr/bin/loadkeys failed with exit status 1.
Oct 06 18:22:28 localhost systemd[1]: systemd-vconsole-setup.service: Main process exited, code=exited, status=1/FAILURE
Oct 06 18:22:28 localhost systemd[1]: systemd-vconsole-setup.service: Failed with result 'exit-code'.
Oct 06 18:22:28 localhost systemd[1]: Failed to start Setup Virtual Console.
Notice: journal has been rotated since unit was started, output may be incomplete.


Решение проблемы:
# dnf install kbd-legacy
# dracut -f
(выполняется несколько минут)


Еще одна возможная ошибка при загрузке Rocky Linux 9 на платформе VirtualBox:
Oct 06 18:40:22 localhost kernel: [drm:vmw_host_printf [vmwgfx]] *ERROR* Failed to send host log message.
Данная ошибка исправляется выставлением типа Графического контроллера в параметрах Дисплея виртуальной машины.
Нужно поставить Графический контроллер "VBoxVGA"


Следующая ошибка говорит о неверном драйвере для сетевого адаптера:
Oct 06 18:40:15 localhost kernel: Warning: Unmaintained hardware is detected:  e1000:100E:8086 @ 0000:00:03.0
Ошибка связана с сетевой картой Intel типа (e1000:100E) в VirtualBox и драйвером 0000:00:03.0
# ethtool -i enp0s3
driver: e1000
version: 5.14.0-70.13.1.el9_0.x86_64
firmware-version:
expansion-rom-version:
bus-info: 0000:00:03.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no

В исправлении этой ошибки испробованы следующие методы:
1) Отключение механизмов: GSO (Generic Segmentation Offload), TSO (TCP Segmentation Offload) и GRO (Generic Receive Offload) на сетевом интерфейсе:
# ethtool -K enp0s3 gso off gro off tso off
2) Отключение генерации контрольных сумм:
# ethtool -K enp0s3 tx off rx off
Actual changes:
tx-checksum-ip-generic: off

tx-tcp-segmentation: off [not requested]
3) Отключение в настройках Системы виртуальной машины VirtualBox
В Дополнительных возможностях параметра "Включить I/O APIC".
После отключения данного параметра ошибки при загрузке системы исчезли.


Настройка сети в RockyLinux 9

Для настройки сети используется графический инструмент NetworkManager, под названием NMTUI. Запуск интерфейса из командной строки:
# nmtui
Откроется меню:
 


Выбираем первый пункт «Edit a connection» и нажимаем Enter. Откроется меню выбора интерфейса. Выбираем интерфейс, переходим на кнопку <Edit…> и нажимаем Enter.



Откроется окно редактирования сетевых параметров интерфейса. Для статического задания IP адреса на интерфейсе устанавливаем IPv4 CONFIGURATION в значение <Manual>. После этого можно будет задать:

Addresses – IP адрес и маску сети
Gataway – Шлюз сети
DNS Servers – IP адреса DNS серверов.

Опционально можно задать Routing  - маршруты через данный интерфейс.
Четыре опции (галочки) оставляем пустыми.

Never use this network for defaul route (Не использовать эту сеть для текущего маршрута)
Ignore automaticaliy obtained routes (Игнорировать автоматически полученные маршруты)
Ignore automaticaliy obtained DNS parametrs (Игнорировать автоматически полученные параметры DNS)
Require IPv4 addressing for this connection (Соединение требует адресации IPv4)

IPv6 CONFIGURATION можно установить в <Disabled>
Следующие галочки устанавливаем:

Automatically connect (Подключаться автоматически)
Available to all users (Доступно всем)


Переводим курсор на <OK> и нажимаем Enter. При этом мы вернемся в предыдущее меню. Выбираем “Activate a connection”, открывается меню, где можно активировать или деактивировать соединение. Для выхода из этого окна используем кнопку <back>


Возвратившись в основное меню, выбираем Quit. После этого произойдет возврат к консоли.

Проверить корректность изменений можно командами:
# ip a
# nmcli device show

среда, 5 октября 2022 г.

Ошибка при подключении к серверу по SSH - Couldn’t agree a key exchange algorithm

Установив новый дистрибутив RockyLinux 9 обнаружил проблемы при подключении к нему по SSH:

Ошибка – Couldn’t agree a key exchange algorithm …..
Я использую mtputty. Оказывается в качестве приложения SSH была старая версия PuTTY - 0.62.
Новую версию можно скачать отсюда:
https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
Для использования в mtputty нужно выбрать бинарный файл:

Скаченным файлом заменить файл в директории mtputty: App/putty/PUTTY.EXE