Новости:

SMF - Just Installed!

Главное меню

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

#61
mysql (Mariadb) / How to install MariaDB Databas...
Последний ответ от George - Март 30, 2023, 01:52
Update CentOS 8 Software Packages:
Connect to mariadb-01.centlinux.com as root user by using a ssh tool.

It is a best practice to always update the Linux software packages before installing anything new.

#
Код: bash
dnf update -y
Last metadata expiration check: 0:02:32 ago on Fri 29 May 2020 01:43:09 PM PKT.
Dependencies resolved.
Nothing to do.
Complete!
Our Linux machine is already up-to-date.

 

Install MariaDB Yum Repository in CentOS 8:
MariaDB Server 10.5.3 is the latest release therefore it is not available in CentOS 8 yum repositories.

MariaDB provides an official yum repository, that we can use to install MariaDB Server 10.5 on CentOS 8.

Create a yum repository file as follows.

#
Код: bash
vi /etc/yum.repos.d/MariaDB.repo
Add following directives in this file.

Код: bash
# MariaDB 10.5 CentOS repository list - created 2020-05-29 08:37 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.5/centos8-amd64
module_hotfixes=1
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
Build cache for MariaDB yum repository.

#
Код: bash
dnf makecache
CentOS-8 - AppStream                            7.8 kB/s | 4.3 kB     00:00
CentOS-8 - Base                                 292  B/s | 3.9 kB     00:13
CentOS-8 - Extras                               3.7 kB/s | 1.5 kB     00:00
MariaDB                                         164 kB/s | 512 kB     00:03
Metadata cache created.
 

Install MariaDB Server 10.5 on CentOS 8:
We have added the MariaDB yum repository, now we can easily install MariaDB Server using dnf command.

#
Код: bash
dnf install -y MariaDB-server
...
Two all-privilege accounts were created.
One is root@localhost, it has no password, but you need to
be system 'root' user to connect. Use, for example, sudo mysql
The second is mysql@localhost, it has no password either, but
you need to be the system 'mysql' user to connect.
After connecting you can set the password, if you would need to be
able to connect as any of these users with a password and without sudo

See the MariaDB Knowledgebase at https://mariadb.com/kb or the
MySQL manual for more instructions.

Please report any problems at https://mariadb.org/jira

The latest information about MariaDB is available at https://mariadb.org/.
You can find additional information about the MySQL part at:
https://dev.mysql.com
Consider joining MariaDB's strong and vibrant community:
https://mariadb.org/get-involved/
...
  MariaDB-shared-10.5.3-1.el8.x86_64
  galera-4-26.4.4-1.rhel8.0.el8.x86_64

Complete!
Enable and start MariaDB service.

#
Код: bash
systemctl enable --now mariadb.service
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service â /usr/lib/systemd/system/mariadb.service.
Verify the status for MariaDB service.

#
Код: bash
systemctl status mariadb.service
â mariadb.service - MariaDB 10.5.3 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor pre>
  Drop-In: /etc/systemd/system/mariadb.service.d
           ââmigrated-from-my.cnf-settings.conf
   Active: active (running) since Fri 2020-05-29 13:59:04 PKT; 12s ago
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/
  Process: 12496 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_ST>
  Process: 12475 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && V>
  Process: 12473 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_STA>
 Main PID: 12485 (mysqld)
   Status: "Taking your SQL requests now..."
    Tasks: 11 (limit: 5916)
   Memory: 75.8M
   CGroup: /system.slice/mariadb.service
           ââ12485 /usr/sbin/mysqld

May 29 13:59:04 mariadb-01.centlinux.com mysqld[12485]: 2020-05-29 13:59:04 0 [>
May 29 13:59:04 mariadb-01.centlinux.com mysqld[12485]: 2020-05-29 13:59:04 0 [>
As mentioned in the installation output,

Linux root user can connect to MariaDB server as MariaDB root user without any password
Linux mysql user can connect to MariaDB server as MariaDB mysql user without any password
Also no other Linux user is allowed to login as MariaDB root or mysql users.

To allow the other Linux users to login as root or mysql user we need to set the password for these database users.

Connect with MariaDB server by using new mariadb command.

#
Код: bash
mariadb -u root
ЦитироватьWelcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 10.5.3-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>
Set strong passwords for root and mysql users.

MariaDB [(none)]> alter user 'root'@'localhost' identified by 'Ahmer@1234';
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> alter user 'mysql'@'localhost' identified by 'Ahmer@1234';
Query OK, 0 rows affected (0.001 sec)
Reload the privileges tables.

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.001 sec)
List available databases in MariaDB server.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.001 sec)
Exit from MariaDB Shell.

MariaDB [(none)]> exit
Bye
Our MariaDB Server 10.5 has been installed successfully.

 

Configure Database Security for MariaDB Server:
We can optionally remove the test databases and restrict the remote logins by root user.

For this purpose, we can use new mariadb-secure-installation command.

# mariadb-secure-installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] n
 ... skipping.

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] n
 ... skipping.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!
We have successfully installed and configured MariaDB Server 10.5 on CentOS 8.
#62
Водите
login: root
password: zabbix
Смотрим список доступных локалей в системе CENTOS 8.
# localectl list-locales
Потом активную locale:
# localectl
   System Locale: LANG=en_US.UTF-8
       VC Keymap: us
      X11 Layout: us
Добавляем русский язык командой:
# dnf install glibc-langpack-ru
Соглашаемся с установкой пакета.
После этого надо перезапустить сервер на CENTOS 8.
# reboot
После этого смотрите, что получилось:
# localectl
   System Locale: LANG=ru_RU.utf8
       VC Keymap: ru
      X11 Layout: ru
Мы установили и активировали русский язык в ZABBIX 5.2.2 на CENTOS 8.
После снова переходим в профиль настройки ZABBIX  и наблюдаем при раскрытии настройки Language успешно установленную в систему локаль русского (Russian (ru_RU))

Выбираем Russian (ru_RU) и нажимаем Update (для принятия изменений), изменения о смене языка интерфейса применяться сразу же, в результате интерфейс управления ZABBIX изменится на русский
#63
Настройки *nix (почта, web, система etc) / TAIL команда
Последний ответ от George - Фев. 21, 2023, 02:58
Все знают о команде cat, которая используется для просмотра содержимого файлов. Но в некоторых случаях вам не нужно смотреть весь файл, иногда достаточно посмотреть только то, что находится в конце файла. Например, когда вы хотите посмотреть содержимое лог файла, то вам не нужно то, с чего он начинается, вам будет достаточно последних сообщений об ошибках.


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

Содержание статьи:

Команда tail в Linux
Использование tail
Выводы
Команда tail в Linux
Перед тем как мы будем рассматривать примеры tail linux, давайте разберем ее синтаксис и опции. А синтаксис очень прост:

$ tail опции файл

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

-c - выводить указанное количество байт с конца файла;
-f - обновлять информацию по мере появления новых строк в файле;
-n - выводить указанное количество строк из конца файла;
--pid - используется с опцией -f, позволяет завершить работу утилиты, когда завершится указанный процесс;
-q - не выводить имена файлов;
--retry - повторять попытки открыть файл, если он недоступен;
-v - выводить подробную информацию о файле;
В качестве значения параметра -c можно использовать число с приставкой b, kB, K, MB, M, GB, G T, P, E, Z, Y. Еще есть одно замечание по поводу имен файлов. По умолчанию утилита не отслеживает изменение имен, но вы можете указать что нужно отслеживать файл по дескриптору, подробнее в примерах.

Использование tail
Теперь, когда вы знаете основные опции, рассмотрим приемы работы с утилитой. Самый простой пример - выводим последние десять строк файла:

 
Код: bash
tail /var/log/syslog



 

Если вам недостаточно 10 строк и нужно намного больше, то вы можете увеличить этот параметр с помощью опции -n:

 
Код: bash
tail -n 100 /var/log/syslog



Когда вы хотите отслеживать появление новых строк в файле, добавьте опцию -f:


 
Код: bash
tail -f /var/log/syslog



Вы можете открыть несколько файлов одновременно, просто перечислив их в параметрах:

Код: bash
 tail /var/log/syslog /var/log/Xorg.0.log



С помощью опции -s вы можете задать частоту обновления файла. По умолчанию данные обновляются раз в секунду, но вы можете настроить, например, обновление раз в пять секунд:

Код: bash
 tail -f -s 5 /var/log/syslog



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

Код: bash
 tail -q var/log/syslog /var/log/Xorg.0.log



Если вас интересует не число строк, а именно число байт, то вы можете их указать с помощью опции -c:

Код: bash
 tail -c 500 /var/log/syslog



Для удобства, вы можете выбирать не все строки, а отфильтровать интересующие вас:

Код: bash
 tail -f /var/log/syslog | grep err


Особенно, это полезно при анализе логов веб сервера или поиске ошибок в реальном времени. Если файл не открывается, вы можете использовать опцию retry чтобы повторять попытки:

Код: bash
 tail -f --retry /var/log/syslog | grep err

Как я говорил в начале статьи, по умолчанию опция -f или --follow отслеживает файл по его имени, но вы можете включить режим отслеживания по дескриптору файла, тогда даже если имя измениться, вы будете получать всю информацию:

Код: bash
 tail --follow=descriptor /var/log/syslog | grep err


Выводы
В этой статье была рассмотрена команда tail linux. С помощью нее очень удобно анализировать логи различных служб, а также искать в них ошибки. Надеюсь, эта информация была полезной для вас.
#64
Когда пишешь даже минимальный скриптик, часто используешь echo — подсказки.
Согласитесь "цветной man" ведь намного приятнее читать, так почему бы не раскрасить вывод echo?
это достаточно легко.
Итак...

Задача:
Раскрасить текстовую строку выводимую на экран через команду echo
т.е. раскрасить эти самые подсказки

Что нужно:
1) man echo
www.opennet.ru/man.shtml?topic=echo&category=1

Из него нам пригодится точно

Цитироватьecho -e   # ключ -e в комманде echo включает отображение "backslash escapes"; например \n - переход на следующую строку, \t -табуляция
echo -n   # ключ -n в команде echo сигнализирует, что после вывода информации не нужно переходить на следующую строку.
echo -en   # в нашем случае поможет раскрасить вывод текста.



2) Хорошая статья с примерами «Управление консолью Linux» RUS
c-reaction.net/content/204

Хорошая статья с примерами «Colorizing Scripts» ENG
www.faqs.org/docs/abs/HTML/colorizing.html

Поехали:

Для начала одним глазом хотябы посмотрим на man echo rus, а потом рассмотрим как использовать цвет
www.opennet.ru/man.shtml?topic=echo&category=1

Переходим к Управлению цветом:

Цитироватьtput sgr0    Возврат цвета в "нормальное" состояние

\033[0m    все атрибуты по умолчанию
\033[1m    жирный шрифт (интенсивный цвет)
\033[2m    полу яркий цвет (тёмно-серый, независимо от цвета)
\033[4m    подчеркивание
\033[5m    мигающий
\033[7m    реверсия (знаки приобретают цвет фона, а фон -- цвет знаков)

\033[22m    установить нормальную интенсивность
\033[24m    отменить подчеркивание
\033[25m    отменить мигание
\033[27m    отменить реверсию

\033[30    чёрный цвет знаков
\033[31    красный цвет знаков
\033[32    зелёный цвет знаков
\033[33    желтый цвет знаков
\033[34    синий цвет знаков
\033[35    фиолетовый цвет знаков
\033[36    цвет морской волны знаков
\033[37    серый цвет знаков

\033[40    чёрный цвет фона
\033[41    красный цвет фона
\033[42    зелёный цвет фона
\033[43    желтый цвет фона
\033[44    синий цвет фона
\033[45    фиолетовый цвет фона
\033[46    цвет морской волны фона
\033[47    серый цвет фона


Таблица цветов и фонов:
Цвет        код       код фона

Цитироватьblack        30  40    \033[30m  \033[40m
red        31  41    \033[31m  \033[41m
green      32  42    \033[32m  \033[42m
yellow      33  43    \033[33m  \033[43m
blue        34  44    \033[34m  \033[44m
magenta      35  45    \033[35m  \033[45m
cyan        36  46    \033[36m  \033[46m
grey        37  47    \033[37m  \033[47m


Допускается объединение этих управляющих последовательностей.
Например \033[1m\033[5m\033[36m может быть заменено эквивалентной последовательностью \033[1;5;36m.

Пример:
Код: bash
#!/bin/sh
#
# скрипт выводит на экран сообщение с использованием цвета
#
echo -en "\033[37;1;41m Внимание \033[0m"



Еще пример:
Код: bash
#!/bin/sh
#
# скрипт запускает копию командного интерпретатора sh
# с цветным приглашением
#
export PS1="\[\033[1;30m\][\[\033[0m\]\t\[\033[1;30m\];\
\[\033[0m\]\W\[\033[1;30m\]]\[\033[36;1m\]|\[\033[0m\] "
echo "Now runing a new copy of shell width color prompt"
echo -en "use \033[1;36mexit\033[0m command or"
echo -e "\033[1;36m^D\033[0m to return back"
sh
#
# обратите внимание на то, что управляющие последовательности
# заключены в скобки "\[" и "\]"
# Это сделано для того, чтобы shell не учитывал их при
# оценке длины строки.
# В противном случае длинные строки будут переноситься неверно.
#



Для удобства пользвания можно цвет и доп. свойства назначить переменным:
Код: bash
RED='\033[0;31m'         #  ${RED}
GREEN='\033[0;32m'      #  ${GREEN}



Файл .sh должен быть в формате UNIX и с кодировкой UTF-8

Ну и напоследок — один хороший пример со всеми плюшками:
Код: bash
#!/bin/sh
# echo подсветка
# echo color
# Скрипт выводит на экран список меню

clear    # Очистка экрана

#Памятка, Таблица цветов и фонов
#Цвет           код       код фона

#black    30  40    \033[30m  \033[40m
#red      31  41    \033[31m  \033[41m
#green    32  42    \033[32m  \033[42m
#yellow    33  43    \033[33m  \033[43m
#blue    34  44    \033[34m  \033[44m
#magenta    35  45    \033[35m  \033[45m
#cyan    36  46    \033[36m  \033[46m
#white    37  47    \033[37m  \033[47m

# Дополнительные свойства для текта:
BOLD='\033[1m'       #  ${BOLD}      # жирный шрифт (интенсивный цвет)
DBOLD='\033[2m'      #  ${DBOLD}    # полу яркий цвет (тёмно-серый, независимо от цвета)
NBOLD='\033[22m'      #  ${NBOLD}    # установить нормальную интенсивность
UNDERLINE='\033[4m'     #  ${UNDERLINE}  # подчеркивание
NUNDERLINE='\033[4m'     #  ${NUNDERLINE}  # отменить подчеркивание
BLINK='\033[5m'       #  ${BLINK}    # мигающий
NBLINK='\033[5m'       #  ${NBLINK}    # отменить мигание
INVERSE='\033[7m'     #  ${INVERSE}    # реверсия (знаки приобретают цвет фона, а фон -- цвет знаков)
NINVERSE='\033[7m'     #  ${NINVERSE}    # отменить реверсию
BREAK='\033[m'       #  ${BREAK}    # все атрибуты по умолчанию
NORMAL='\033[0m'      #  ${NORMAL}    # все атрибуты по умолчанию

# Цвет текста:
BLACK='\033[0;30m'     #  ${BLACK}    # чёрный цвет знаков
RED='\033[0;31m'       #  ${RED}      # красный цвет знаков
GREEN='\033[0;32m'     #  ${GREEN}    # зелёный цвет знаков
YELLOW='\033[0;33m'     #  ${YELLOW}    # желтый цвет знаков
BLUE='\033[0;34m'       #  ${BLUE}      # синий цвет знаков
MAGENTA='\033[0;35m'     #  ${MAGENTA}    # фиолетовый цвет знаков
CYAN='\033[0;36m'       #  ${CYAN}      # цвет морской волны знаков
GRAY='\033[0;37m'       #  ${GRAY}      # серый цвет знаков

# Цветом текста (жирным) (bold) :
DEF='\033[0;39m'       #  ${DEF}
DGRAY='\033[1;30m'     #  ${DGRAY}
LRED='\033[1;31m'       #  ${LRED}
LGREEN='\033[1;32m'     #  ${LGREEN}
LYELLOW='\033[1;33m'     #  ${LYELLOW}
LBLUE='\033[1;34m'     #  ${LBLUE}
LMAGENTA='\033[1;35m'   #  ${LMAGENTA}
LCYAN='\033[1;36m'     #  ${LCYAN}
WHITE='\033[1;37m'     #  ${WHITE}

# Цвет фона
BGBLACK='\033[40m'     #  ${BGBLACK}
BGRED='\033[41m'       #  ${BGRED}
BGGREEN='\033[42m'     #  ${BGGREEN}
BGBROWN='\033[43m'     #  ${BGBROWN}
BGBLUE='\033[44m'     #  ${BGBLUE}
BGMAGENTA='\033[45m'     #  ${BGMAGENTA}
BGCYAN='\033[46m'     #  ${BGCYAN}
BGGRAY='\033[47m'     #  ${BGGRAY}
BGDEF='\033[49m'      #  ${BGDEF}

tput sgr0     # Возврат цвета в "нормальное" состояние

#Начало меню
echo ""
echo -n "     "
echo -e "${BOLD}${BGMAGENTA}${LGREEN} Меню DNS323 ${NORMAL}"
echo ""
echo -en "${LYELLOW} 1 ${LGREEN} Комманды для удобной работы в telnet ${GRAY}(Выполнить?)${NORMAL}\n" 
echo ""
echo -en "${LYELLOW} 2 ${LGREEN} Пути к папкам & Изменение прав доступа ${GRAY}(Комманды)${NORMAL}\n" 
echo ""
echo -en "${LYELLOW} 3 ${LGREEN} Transmission (${GREEN}Start${NORMAL}, ${LRED}Stop${NORMAL}, ${CYAN}Upgrade${NORMAL}) ${GRAY}(Меню)${NORMAL}\n" 
echo ""
echo -en "${LYELLOW} 4 ${LGREEN} Копирование (cp & rsync) ${GRAY}(Комманды)${NORMAL}\n"
echo ""
echo -en "${LYELLOW} 5 ${LGREEN} Создание ссылки на файл или папку ${GRAY}(Комманды)${NORMAL}\n"
echo ""
echo -en "${LYELLOW} 6 ${LGREEN} Установка из fun-plug & IPKG ${GRAY}(Комманды)${NORMAL}\n"
echo ""
echo -en "${LYELLOW} 7 ${LGREEN} Показать Трафик (${LYELLOW} n${LGREEN}load) ${GRAY}(Выполнить?)${NORMAL}\n"
echo ""
echo -en "${LYELLOW} 8 ${LGREEN} Диспетчер задач (${LYELLOW} h${LGREEN}top) ${GRAY}(Выполнить?)${NORMAL}\n"
echo ""
echo -en "${LYELLOW} 9 ${LGREEN} Midnight Commander (${LYELLOW} m${LGREEN}c) ${GRAY}(Выполнить?)${NORMAL}\n"
echo ""
echo -en "${LMAGENTA} q ${LGREEN} Выход ${NORMAL}\n"
echo ""
echo "(Введите пожалуйта номер пункта, чтобы выполнить комманды этого пункта, любой другой ввод, Выход)"
echo ""
tput sgr0

#65
Код: bash
#!/bin/bash
DATE=$(date +%Y-%m-%d-t-%H-%M-%S) 

if [[ $1 = --help ]]; then
echo USAGE:
echo './zip.sh /<fromdir> <to-subdir> - subdir will be not zipped'
echo './zip.sh /<fromdir> /<to-dir> - zipping <fromdir> to /<full_path_to_dir>'
else
arch_fld=$1
#if [$arch_fld = '--help']; then

if ! [ -z $1 ] && ! [ -z $2 ] ; then
	for folder in $arch_fld/*
	do
	    if [[ $2 = /* ]]; then
	      if ! `file $folder  | grep -i  -P $2'|'$RECYCLE.BIN'|System' > /dev/null 2>&1`; then
                save_path=${folder//$arch_fld/$2"/"$DATE}
                echo -'*Achiving folder - ' $folder ' to '$save_path'.zip *-'
                7z a -tzip -ssw -mx7 "$save_path.zip" "$folder"
              fi

	    else
	      if ! `file $folder  | grep -i  -P $2'|'$RECYCLE.BIN'|System' > /dev/null 2>&1`; then 
		save_path=${folder//$arch_fld/$arch_fld"/"$2"/"$DATE}
		echo -'*Achiving folder - ' $folder ' to '$save_path'.zip *-'
		7z a -tzip -ssw -mx7 "$save_path.zip" "$folder"
	      fi
	    fi
	done
else
echo Not enouth parametrs! Try --help 
fi
#66
В windows файл хранится по пути %systemdrive%\Users\<username>\.ssh\
Если пользователь с административными правами в файле sshd_config надо в конце поправить:

Код: bash
Match Group administrators
       AuthorizedKeysFile .ssh\administrators_authorized_keys

В один файл можно добавлять несколько ключей, в зависимости от числа пользователей *nix из-под которых будет проводиться запуск (мне надо доя rsync)
#67
Первая инструкция, наверное, которую я пишу полностью сам, все инструкции не рабочие (в обратную сторону, из вин в Lin)

Итак, пакет openssh мы установили, теперь надо настроить "прозрачную" авторизацию, чтоб забирать с windows машины, например, бэкапы. В 2020 году у меня был неприятный опыт, когда вирус шифровальщик, не только побил систему, на которой стоял сервер MSSQL, но и уничтожил все бэкапы этой базы... Поэтому забрать на linux машину бэкапы, и при этом не открывать доступ по SMB очень правильное решение  ;)

Код: bash
ssh-keygen
Код: bash
 rsync /root/.ssh/id_rsa.pub  sshuser@winserver:/cygdrive/%USERPROFILE%/.ssh/authorized_keys

Копируем полученный файл в %userprofile%\.ssh

наслаждается)
#68
Пакет OpenSSH Server включен в современные версии Windows 10 (начиная с 1803), Windows 11 и Windows Server 2022/2019 в виде Feature on Demand (FoD). Для установки сервера OpenSSH достаточно выполнить PowerShell команду:

Код: powershell
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH.Server*' | Add-WindowsCapability –Online

Или при помощи команды DISM:

Код: powershell
dism /Online /Add-Capability /CapabilityName:OpenSSH.Server~~~~0.0.1.0

Если ваш компьютер подключен к интернету, пакет OpenSSH.Server будет скачан и установлен в Windows.

Также вы можете установить сервер OpenSSH в Windows через современную панель Параметры (Settings -> Apps and features -> Optional features -> Add a feature, Приложения -> Управление дополнительными компонентами -> Добавить компонент. Найдите в списке OpenSSH Server и нажмите кнопку Install).

Установка openssh сервера из панели параметры windows 10

Здесь также можно установить набор инструментов администратора Remote Server Administration Tools (RSAT).
На изолированных от интернета компьютерах вы можете установить компонент с ISO образа Features On Demand (доступен в личном кабинете на сайте Microsoft: MSDN или my.visualstudio.com). Скачайте диск, извлеките его содержимое в папку c:\FOD (достаточно распаковать извлечь файл OpenSSH-Server-Package~31bf3856ad364e35~amd64~~.cab), выполните установку из локального репозитория:

Код: powershell
Add-WindowsCapability -Name OpenSSH.Server~~~~0.0.1.0 -Online -Source c:\FOD

Также доступен MSI установщик OpenSSH для Windows в официальном репозитории Microsoft на GitHub (https://github.com/PowerShell/Win32-OpenSSH/releases/). Например, для Windows 10 x64 нужно скачать и установить пакет OpenSSH-Win64-v8.9.1.0.msi. Следующая PowerShell команда скачает MSI файл и установит клиент и сервер OpenSSH:

Код: powershell
Invoke-WebRequest https://github.com/PowerShell/Win32-OpenSSH/releases/download/v8.9.1.0p1-Beta/OpenSSH-Win64-v8.9.1.0.msi -OutFile $HOME\Downloads\OpenSSH-Win64-v8.9.1.0.msi -UseBasicParsing
Код: powershell
msiexec /i c:\users\root\downloads\OpenSSH-Win64-v8.9.1.0.msi

установочный msi файл openssh server для windows

Также вы можете вручную установить OpenSSH сервер в предыдущих версиях Windows (Windows 8.1, Windows Server 2016/2012R2). Пример установки Win32-OpenSSH есть в статье "Настройка SFTP сервера (SSH FTP) в Windows".
Чтобы проверить, что OpenSSH сервер установлен, выполните:

Код: powershell
Get-WindowsCapability -Online | ? Name -like 'OpenSSH.Ser*'

State : Installed
проверить что установлен OpenSSH сервер в windows 10

Настройка SSH сервера в Windows
После установки сервера OpenSSH в Windows добавляются две службы:

ssh-agent (OpenSSH Authentication Agent) – можно использовать для управления закрытыми ключами если вы настроили SSH аутентификацию по ключам;
sshd (OpenSSH SSH Server) – собственно сам SSH сервер.
Вам нужно изменить тип запуска службы sshd на автоматический и запустить службу с помощью PowerShell:

Код: powershell
Set-Service -Name sshd -StartupType 'Automatic'
Код: powershell
Start-Service sshd

Start-Service sshd - запустить openssh

С помощью nestat убедитесь, что теперь в системе запущен SSH сервер и ждет подключений на порту TCP:22 :

Код: powershell
netstat -na| find ":22"

nestat - порт 22 ssh сервера windows

Проверьте, что включено правило брандмауэра (Windows Defender Firewall), разрешающее входящие подключения к Windows по порту TCP/22.

Код: powershell
Get-NetFirewallRule -Name *OpenSSH-Server* |select Name, DisplayName, Description, Enabled

Name DisplayName Description Enabled
---- ----------- ----------- -------
OpenSSH-Server-In-TCP OpenSSH SSH Server (sshd) Inbound rule for OpenSSH SSH Server (sshd) True
правило firewall для доступа к windows через ssh

Если правило отключено (состоянии Enabled=False) или отсутствует, вы можете создать новое входящее правило командой New-NetFirewallRule:

Код: powershell
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

Рассмотрим, где храниться основные компоненты OpenSSH:

Исполняемые файлы OpenSSH Server находятся в каталоге C:\Windows\System32\OpenSSH\  (sshd.exe, ssh.exe, ssh-keygen.exe, sftp.exe и т.д.)
Конфигурационный файл sshd_config (создается после первого запуска службы): C:\ProgramData\ssh
Файлы authorized_keys и ssh ключи можно хранить в профиле пользователей: %USERPROFILE%\.ssh\
Sshd_config: Конфигурационный файл сервера OpenSSH
Настройки сервере OpenSSH хранятся в конфигурационном файле %programdata%\ssh\sshd_config. Это обычный текстовый файл с набором директив. Для редактирования можно использовать любой текстовый редактор (я предпочитаю notepad++). Можно открыть с помощью обычного блокнота:

Код: powershell
start-process notepad C:\Programdata\ssh\sshd_config

Например, чтобы запретить SSH подключение для определенного доменного пользователя (и всех пользователей указанного домена), добавьте в конце файле директивы:

Код: powershell
DenyUsers winitpro\admin@192.168.1.10
Код: powershell
DenyUsers corp\*
Чтобы разрешить подключение только для определенной доменной группы:

Код: powershell
AllowGroups winitpro\sshadmins
Либо можете разрешить доступ для локальной группы:

Код: powershell
AllowGroups sshadmins
По умолчанию могут к openssh могут подключаться все пользователи Windows. Директивы обрабатываются в следующем порядке: DenyUsers, AllowUsers, DenyGroups,AllowGroups.

Можно запретить вход под учетными записями с правами администратора, в этом случае для выполнения привилегированных действий в SSH сессии нужно делать runas.

Код: powershell
DenyGroups Administrators
Следующие директивы разрешают SSH доступ по ключам (SSH аутентификации в Windows с помощью ключей описана в отдельной статье) и по паролю:

ЦитироватьPubkeyAuthentication yes
PasswordAuthentication yes
Вы можете изменить стандартный SSH порт TCP/22, на котором принимает подключения OpenSSH в конфигурационном файле sshd_config в директиве Port.

sshd - смена порта ssh 22

После любых изменений в конфигурационном файле sshd_config нужно перезапускать службу sshd:

Код: powershell
restart-service sshd

Подключение по SSH к Windows компьютеру
Теперь вы можете попробовать подключиться к своей Windows 10 через SSH клиент (в этом примере я использую putty).

Вы можете использовать встроенный SSH клиентом Windows для подключения к удаленному хосту. Для этого нужно в командной строке выполнить команду:
ssh alexbel@192.168.31.102

В этом примере alexbel – имя пользователя на удаленном Windows компьютере, и 192.168.31.102 – IP адрес или DNS имя компьютера.

Обратите внимание что можно использовать следующие форматы имен пользователей Windows при подключении через SSH:

alex@server1 – локальный пользователь Windows
alex@winitpro.ru@server1 –пользователь Active Directory (в виде UPN) или аккаунт Microsoft/ Azure(Microsoft 365)
winitpro\alex@server1 – NetBIOS формат имени
В домене Active Directory можно использовать Kerberos аутентификацию в SSH. Для этого в sshd_config нужно включить параметр:

ЦитироватьGSSAPIAuthentication yes
После этого можно прозрачно подключать к SSH сервер с Windows компьютера в домене из сессии доменного подключается. В этом случае пароль пользователя не указывается и выполняется SSO аутентификация через Kerberos:

ssh -K server1

При первом подключении появится стандартный запрос на добавление узла в список известных SSH хостов.

putty сохранить ключ

Нажимаем Да, и в открывшееся окне авторизуемся под пользователем Windows.

ssh сессия в win 10 на базе openssh

При успешном подключении запускается командная оболочка cmd.exe со строкой-приглашением.

Цитироватьadmin@win10tst C:\Users\admin>
В командной строке вы можете выполнять различные команды, запускать скрипты и программы.

подключение к windows 10 через ssh

Я предпочитаю работать в командной строке PowerShell. Чтобы запустить интерпретатор PowerShell, выполните:

Код: powershell
powershell.exe

powershell.exe в ssh сессии windows

Чтобы изменить командную оболочку (Shell) по умолчанию в OpenSSH с cmd.exe на PowerShell, внесите изменение в реестр такой командой:

Код: powershell
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String –Force

openssh - изменить shell по умолчанию на powershell

Осталось перезапустить SSH подключение и убедиться, что при подключении используется командный интерпретатор PowerShell (об этом свидетельствует приглашение PS C:\Users\admin>).

powershell cli в windows 10 через ssh

В SSH сессии запустилась командная строка PowerShell, в которой работают привычные функции: авто дополнение, раскраска модулем PSReadLine, история команд и т.д. Если текущий пользователь входит в группу локальных администраторов, то все команды в его сессии выполняются с повышенными правами даже при включенном UAC.

OpenSSH сервер в Windows можно использовать в различных сценариях SSH туннелирования.
Логи SSH подключений в Windows
В Windows логи подключений к SSH серверу по-умолчанию пишутся не в текстовые файлы, а в отдельный журнал событий через Event Tracing for Windows (ETW). Откройте консоль Event Viewer (eventvwr.msc>) и перейдите в раздел Application and services logs -> OpenSSH -> Operational.

При успешном подключении с помощью к SSH серверу с помощью пароля в журнале появится событие:

EventID: 4
sshd: Accepted password for root from 192.168.31.53 port 65479 ssh2
события подключения к openssh сервер windows в event viewer

Если была выполнена аутентификация с помощью SSH ключа, событие будет выглядеть так:

sshd: Accepted publickey for locadm from 192.168.31.53 port 55772 ssh2: ED25519 SHA256:FEHDEC/J72Fb2zC2oJNb45678967kghH43h3bBl31ldPs
Если вы хотите, чтобы логи писались в локальный текстовый файл, нужно в файле sshd_config включить параметры:

SyslogFacility LOCAL0
LogLevel INFO
Перезапустите службу sshd и провеьте, что теперь логи SSH сервера пишутся в файл C:\ProgramData\ssh\logs\sshd.log

текстовый sshd.log в windows
#69
mikroTik / Настройка IKEv2 mikrotik
Последний ответ от George - Фев. 07, 2023, 06:06
Настраиваем часовой пояс, NTP-клиента.

Код: bash
/system clock set time-zone-autodetect=no time-zone-name=Europe/Moscow
/system ntp client set enabled=yes servers=0.ru.pool.ntp.org,1.ru.pool.ntp.org

Добавляем бридж и вешаем пул адресов на него же

Код: bash
/interface bridge add name=IKE2-loopback
/ip address add address=10.0.100.1/24 interface=IKE2-loopback network=10.0.100.0
/ip pool add name="IKE2" ranges=10.0.100.100-10.0.100.200

Настройку DNS вам нужно провести самостоятельно в зависимости от вашей специфики, но в итоге нам нужно, чтобы по адресу cloud-life.site пинговался IP-адрес настраиваемого VPN-сервера 66.66.66.66.

Следующий шаг - генерация сертификатов. Я разбил команды на блоки не случайно. Ошибки при генерации сертификатов нам не нужны. Выполняем по порядку, дожидаясь завершения процесса подписания, не прерывать!!!!

Генерируем корневой сертификат:

Код: bash
/certificate
Код: bash
    add name=CA.cloud-life.site country=RU state=MO \
    locality="Moscow region" organization=Cloud-life \
    common-name=CA.cloud-life.site subject-alt-name=IP:66.66.66.66 \
    key-size=2048 days-valid=3650 trusted=yes \
    key-usage=digital-signature,key-encipherment,data-encipherment,key-cert-sign,crl-sign
   
Код: bash
sign CA.cloud-life.site

Генерируем сертификат VPN-сервера:

Код: bash
add name=ikev2@cloud-life.site country=RU state=MO locality="Moscow region" \
organization=Cloud-life common-name=ikev2@cloud-life.site subject-alt-name=DNS:cloud-life.site \
key-size=2048 days-valid=3560 trusted=yes key-usage=tls-server
Код: bash
sign ikev2@cloud-life.site ca=CA.cloud-life.site

Создаём шаблон для дальнейшего создания сертификатов через копирование с шаблона:
Код: bash
add name=~clienttemplate@cloud-life.site country=RU state=MO    locality="Moscow region" \
organization=Cloud-life common-name=~client-template@cloud-life.site \
subject-alt-name=email:~clienttemplate@cloud-life.site key-size=2048 days-valid=3650 \
trusted=yes key-usage=tls-client

Сертификат для схемы Site 2 Site (для микротика Site-2):

Код: bash
add copy-from=~clienttemplate@cloud-life.site name=s2s@cloud-life.site \
common-name=s2s@cloud-life.site subject-alt-name=email:s2s@cloud-life.site
Код: bash
sign s2s@cloud-life.site ca=CA.cloud-life.site

Для первого клиента:

Код: bash
add copy-from=~clienttemplate@cloud-life.site name=client-1@cloud-life.site \
common-name=client-1@cloud-life.site subject-alt-name=email:client-1@cloud-life.site
Код: bash
sign client-1@cloud-life.site ca=CA.cloud-life.site

Для второго клиента, а остальные по той же схеме:

Код: bash
add copy-from=~clienttemplate@cloud-life.site name=client-2@cloud-life.site \
common-name=client-2@cloud-life.site subject-alt-name=email:client-2@cloud-life.site
Код: bash
sign client-2@cloud-life.site ca=CA.cloud-life.site

Далее экспортируем сгенерированные ключи, но обратите внимание, что сертификаты экспортируются в разных форматах (pem и pkcs12). Обязательно установите пароль при экспорте, т.к. при его отсутствии ошибок не будет, но работать VPN тоже не будет. Ни в коем случае не экспортируйте CA-сертификат с паролем, т.к. тогда экспортируется и закрытый ключ.

Код: bash
/certificate export-certificate CA.cloud-life.site type=pem
Код: bash
/certificate export-certificate ikev2@cloud-life.site type=pem  export-passphrase=passwordforexport
Код: bash
/certificate export-certificate s2s@cloud-life.site type=pem  export-passphrase=passwordforexport
Код: bash
/certificate export-certificate client-1@cloud-life.site type=pkcs12  export-passphrase=passwordforexport
Код: bash
/certificate export-certificate client-2@cloud-life.site type=pkcs12  export-passphrase=passwordforexport

Скачиваем экспортированные сертификаты и сохраняем в одну папку. Я еще и переименовал скаченные сертификаты для удобства, удалив начало cert_export_.

Чуть настроим FireWall и изменим MSS. Правила размещайте перед запрещающими!!!! Я расположу их в самом начале списка (place-before=0)

Код: bash
/ip firewall filter
Код: bash
add action=accept chain=input comment="IKE2 - Accept UDP 500,4500 IPSec" \
    dst-address=66.66.66.66 dst-port=500,4500 protocol=udp place-before=0
Код: bash
add action=accept chain=input comment="IKE2 - Accept IPSec-esp" dst-address=\
    66.66.66.66 protocol=ipsec-esp place-before=0
Код: bash
add action=accept chain=input comment="Accept - In Ipsec" ipsec-policy=\
    in,ipsec src-address=10.0.100.0/24 place-before=0
Код: bash
add action=accept chain=forward comment=\
    "Accept - All Traffic from VPN to ANY" dst-address=192.168.0.0/22 \
    ipsec-policy=in,ipsec src-address=10.0.100.0/24 place-before=0
Код: bash
add action=accept chain=forward comment=\
    "Accept - All Traffic from VPN to ANY" dst-address=0.0.0.0/0 \
    ipsec-policy=in,ipsec src-address=10.0.100.0/24 place-before=0
Код: bash
/ip firewall mangle
Код: bash
add action=change-mss chain=forward dst-address=10.0.100.0/24 ipsec-policy=\
    in,ipsec new-mss=1360 passthrough=yes protocol=tcp tcp-flags=syn tcp-mss=\
    !0-1360  place-before=0

Добавим правила NAT и поместим их над правилом основного маскарада:

Код: bash
/ip firewall nat
Код: bash
add action=masquerade chain=srcnat comment="ike2 masq non ipsec" \
    ipsec-policy=out,none out-interface-list="WAN interfaces" place-before=0
Код: bash
add action=masquerade chain=srcnat comment="ike2 masq non ipsec" \
    ipsec-policy=out,none out-interface-list="WAN interfaces" src-address=\
    10.0.100.0/24 place-before=0
Код: bash
add action=src-nat chain=srcnat comment="ike2 masq non ipsec" ipsec-policy=\
    out,none out-interface=WAN src-address=10.0.100.0/24 to-addresses=\
    66.66.66.66 place-before=0
Настраиваем параметры IPSec. Настройка едина как для конфигурации Client 2 Site, так и для Site 2 Site:
Код: bash
/ip ipsec policy group
Код: bash
add name="clients"
add name="s2s
"
Код: bash
/ip ipsec profile
Код: bash
add dh-group=modp2048,modp1536,modp1024 enc-algorithm=aes-256,aes-192,aes-128 \
    hash-algorithm=sha256 name="cloud-life.site"
Код: bash
/ip ipsec peer
Код: bash
    add exchange-mode=ike2 local-address=66.66.66.66 name=\
    "peer VPN" passive=yes profile="cloud-life.site"
Код: bash
/ip ipsec proposal
Код: bash
add auth-algorithms=sha512,sha256,sha1 enc-algorithms="aes-256-cbc,aes-256-ctr\
    ,aes-256-gcm,aes-192-ctr,aes-192-gcm,aes-128-cbc,aes-128-ctr,aes-128-gcm" \
    lifetime=8h name="cloud-life.site" pfs-group=none
Код: bash
/ip ipsec mode-config
Код: bash
add address-pool=IKE2 address-prefix-length=32 name=clients.cloud-life.site split-include=\
    0.0.0.0/0 static-dns=10.0.100.1 system-dns=no
Код: bash
add address=10.0.100.2 name=s2s.cloud-life.site split-include=10.0.100.1 static-dns=10.0.100.1 \
    system-dns=no
Код: bash
/ip ipsec identity
    add auth-method=digital-signature certificate=ikev2@cloud-life.site \
    generate-policy=port-strict match-by=certificate mode-config=clients.cloud-life.site \
    peer="peer VPN" policy-template-group="clients" \
    remote-certificate=client-1@cloud-life.site remote-id=user-fqdn:client-1@cloud-life.site
Код: bash
add auth-method=digital-signature certificate=ikev2@cloud-life.site \
    generate-policy=port-strict match-by=certificate mode-config=clients.cloud-life.site \
    peer="peer VPN" policy-template-group="clients" \
    remote-certificate=client-2@cloud-life.site remote-id=user-fqdn:client-2@cloud-life.site
Код: bash
add auth-method=digital-signature certificate=ikev2@cloud-life.site \
    generate-policy=port-strict match-by=certificate mode-config=s2s.cloud-life.site \
    peer="peer VPN" policy-template-group="s2s" \
    remote-certificate=s2s@cloud-life.site remote-id=user-fqdn:s2s@cloud-life.site
Код: bash
/ip ipsec policy
   
Код: bash
add dst-address=10.0.100.2/32 group=s2s proposal=cloud-life.site src-address=10.0.100.1/32 template=yes
    add dst-address=10.0.100.0/24 group=clients proposal=cloud-life.site src-address=0.0.0.0/0 template=yes

Сразу добавим GRE-туннель, который в дальнейшем позволит нам легко настроить маршрутизацию между офисами:

Код: bash
/interface gre add local-address=10.0.100.1 name="IKEv2-GRE-Tunnel" remote-address=10.0.100.2
Код: bash
/ip route add distance=1 dst-address=10.10.10.0/24 gateway="IKEv2-GRE-Tunnel"

На этом настройку VPN-сервера можно считать законченной и пора переходить на сторону клиента.
#70
Код: powershell
# Проверка
Get-VMHost | SELECT -Property EnableEnhancedSessionMode

# Включение
Set-VMHost -EnableEnhancedSessionMode $True -Passthru
Настройка расширенного сеанса Hyper V (ESM) устанавливается только на уровне сервера, но что бы у нас работала возможность копирования нужно включить и пакет интеграции Hyper V, который по умолчанию отключен. Эта служба интеграции называется Guest services (Гостевая служба), и она включается у каждой виртуально машины отдельно. Для ее включения зайдем в настройки виртуально машины:.......

Код: powershell
# Просмотр включенных пакетов интеграций у ВМ с именем Win10
Get-VMIntegrationService -VMName 'Win10'

# Включение гостевого пакета интеграции
Enable-VMIntegrationService -VMName "Win10" -Name "Guest Service Interface"

# Включение на всех виртуальных машинах
Get-VM | Enable-VMIntegrationService -Name "Guest Service Interface"
🡱 🡳

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