Ubuntu всякое

Обновление

apt update -y && apt full-upgrade -y && apt autoremove -y && apt autoclean -y && apt clean -y

Обновление через прокси-сервер

Для команды Apt требуется своя настройка прокси-сервера. Нужно создать новый файл с конфигурацией:

vi /etc/apt/apt.conf.d/00proxy.conf

Acquire::http::Proxy "http://10.128.2.51:8080/";
Acquire::https::Proxy "https://10.128.2.51:8080/";

SSH ограничить адрес или поменять порт

SSHd now uses socket-based activation Ubuntu 22.10 or later.

vi /lib/systemd/system/ssh.socket

ListenStream=IP1:22
ListenStream=IP2:2222

systemctl daemon-reload
systemctl restart ssh

netstat -tulpn

SFTP

useradd cdp
passwd cdp

mkdir -p /sftp_root/cdp/cdp
chown -R cdp:cdp /sftp_root/cdp/cdp

nano /etc/ssh/sshd_config
добавляем:

Port 2222

Match LocalPort 2222
        ChrootDirectory /sftp_root/%u
        AllowTCPForwarding no
        X11Forwarding no
        ForceCommand internal-sftp

Match User cdp, LocalPort 22
        DenyUsers cdp


service ssh restart

на 1 раз (до перезагрузки):
mount --bind /www/cdp/html /sftp_root/cdp/cdp

на постоянную:
vi /etc/fstab
добавить строку:
/www/cdp/html /sftp_root/cdp/cdp none rw,bind 0 0
перезагрузить сервер: reboot
поиск и проверка смонтированного:
findmnt

HAProxy

https://www.haproxy.com/blog/how-to-install-haproxy-on-ubuntu/

apt install --no-install-recommends software-properties-common
add-apt-repository ppa:vbernat/haproxy-2.4 -y
apt install haproxy=2.4.\*
haproxy -v

Добавить русскую локализацию на сервер

https://obu4alka.ru/rusificziruem-ubuntu-server-16-04-lts.html

Zabbix

https://bestmonitoringtools.com/how-to-install-zabbix-server-on-ubuntu/

apt install php7.4-fpm

add-apt-repository ppa:ondrej/nginx-mainline
apt install nginx-core nginx-common nginx nginx-full

Утилита zabbix_get, оказывается, не устанавливается вместе с сервером Zabbix, нужно установить отдельно:

apt install zabbix-get

Цветовая схема VIM

https://www.cyberciti.biz/faq/turn-on-or-off-color-syntax-highlighting-in-vi-or-vim/

для текущей сессии можно отменить или поменять цветовую схему так:

:syntax off
или
:syntax on
:

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

vi ~/.vimrc

if !has('gui_running')
    set t_Co=256
endif
set termguicolors
colorscheme torte

:wq

echo "colorscheme torte" >> ~/.vimrc

Chrony, Timezone

apt install -y chrony
systemctl enable chrony
vi /etc/chrony/chrony.conf

server 172.31.2.22 iburst                                                                                                                                                                                         
server 172.31.2.23 iburst                                                                                                                                                                                         
server 10.197.2.16 iburst

timedatectl status
chronyc sources
chronyc sourcestats
chronyc tracking
date

timedatectl list-timezones | grep Amster
timedatectl set-timezone Europe/Amsterdam

Nginx

https://www.linuxcapable.com/how-to-install-upgrade-latest-nginx-mainline-stable-on-ubuntu-20-04/

add-apt-repository ppa:ondrej/nginx-mainline
apt update
apt install nginx-core nginx-common nginx nginx-full

MariaDB

https://mariadb.org/download/?t=repo-config

apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
add-apt-repository 'deb [arch=amd64,arm64,ppc64el,s390x] https://atl.mirrors.knownhost.com/mariadb/repo/10.6/ubuntu focal main'
apt update
apt install mariadb-server
apt install mariadb-client

mariadb --version

mysql_secure_installation

отдельный раздел под БД, смонтировать

https://disnetern.ru/move-mysqldb-new-hdd/
https://andreyex.ru/bazy-dannyx/baza-dannyx-mysql/kak-peremestit-katalog-dannyx-mysql-na-novoe-mesto-v-centos-i-ubuntu/

innodb – отдельные таблицы

https://ealebed.github.io/posts/2015/тюнинг-mysql-сервера-включение-опции-innodb_file_per_table/

Алгоритм включения опции innodb_file_per_table следующий:

  • останавливаем сервисы, использующие базу данных (apache, zabbix, sphinxsearch и т. д.);
  • делаем резервную копию (дамп) базы данных;
  • удаляем базу данных;
  • останавливаем MySQL-сервер;
  • в конфиге /etc/mysql/my.cnf удаляем параметр innodb_data_file_path и добавляем параметр innodb_file_per_table;
  • удаляем файлы /var/lib/mysql/ibdata, /var/lib/mysql/ib_logfile0, /var/lib/mysql/ib_logfile1 и т. д.;
  • запускаем MySQL-сервер;
  • создаем базу данных;
  • восстанавливаем данные из резервной копии;
  • проверяем наличие файлов с расширением *.ibd для каждой таблицы;
  • запускаем остановленные в первом пункте сервисы.
mysqldump --user=root --password=PASSWORD zabbix | gzip > ./zabbix.sql.gz

cd /etc/mysql/mariadb.conf.d/
vi 50-server.cnf
[mysqld]
innodb-file-per-table = 1

mysql -uroot -p
PASSWORD
mysql> create database zabbix character set utf8 collate utf8_bin;
zcat ./zabbix.sql.gz | mysql zabbix -uroot -pPASSWORD

partitioning

https://bestmonitoringtools.com/zabbix-partitioning-tables-on-mysql-database/

PHP

apt install php7.4
apt install php7.4-fpm

vi /etc/php/7.4/fpm/php-fpm.conf
ll /etc/php/7.4/fpm/pool.d/


PHP 8.1
apt install software-properties-common
add-apt-repository ppa:ondrej/php
apt update
apt install php8.1
apt install php8.1-fpm

apt install php8.1-common php8.1-mysql php8.1-xml php8.1-xmlrpc php8.1-curl php8.1-gd php8.1-imagick php8.1-cli php8.1-dev php8.1-imap php8.1-mbstring php8.1-opcache php8.1-soap php8.1-zip php8.1-redis php8.1-intl -y

vi /etc/php/8.1/fpm/php.ini
upload_max_filesize = 32M 
post_max_size = 48M 
memory_limit = 256M 
max_execution_time = 600 
max_input_vars = 3000 
max_input_time = 1000

vi /etc/php/8.1/fpm/pool.d/www.conf
user = username 
group = username 
listen.owner = username
listen.group = username

Zabbix Agent

wget https://repo.zabbix.com/zabbix/4.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.4-1+focal_all.deb
dpkg -i zabbix-release_4.4-1+focal_all.deb
apt-get update
apt-get install zabbix-agent

Zabbix proxy

wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-1+ubuntu20.04_all.deb
dpkg -i zabbix-release_6.0-1+ubuntu20.04_all.deb
apt update
apt install zabbix-proxy-mysql zabbix-sql-scripts zabbix-agent

shell> mysql -uroot -p<password>
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user 'zabbix'@'localhost' identified by '<password>';
mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost';
mysql> quit;

cat /usr/share/doc/zabbix-sql-scripts/mysql/proxy.sql | mysql zabbix -uzabbix -p <password>

vi /etc/zabbix/zabbix_proxy.conf
DBHost=127.0.0.1
DBName=zabbix
DBUser=zabbix
DBPassword=<password>
Server=<zbx_server_ip>
Hostname=<Hostname>
EnableRemoteCommands=1
ProxyOfflineBuffer=168
ConfigFrequency=600
StartPollers=50
StartPollersUnreachable=10
StartPingers=20
StartHTTPPollers=10
CacheSize=200M
HistoryCacheSize=200M
HistoryIndexCacheSize=200M
Timeout=15
LogSlowQueries=3000
TLSConnect=psk
TLSPSKIdentity=<TLSPSKIdentity>
TLSPSKFile=/etc/zabbix/<TLSPSKIdentity>.psk

vi <TLSPSKIdentity>.psk <-- paste psk 

systemctl restart zabbix-proxy
systemctl enable zabbix-proxy

vi /etc/zabbix/zabbix_agentd.conf
Server=<zbx_server_ip,zbx_proxy_ip,127.0.0.1>
ServerActive=<zbx_server_ip,zbx_proxy_ip,127.0.0.1>
Hostname=<Hostname>
UnsafeUserParameters=1
TLSConnect=psk
TLSAccept=psk
TLSPSKIdentity=<TLSPSKIdentity>
TLSPSKFile=/etc/zabbix/<TLSPSKIdentity>.psk

vi <TLSPSKIdentity>.psk <-- paste psk 

systemctl restart zabbix-agent
systemctl status zabbix-agent
systemctl enable zabbix-agent

apt install snmp

Docker

https://docs.docker.com/engine/install/ubuntu

Для начала удаляем старые версии:

for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

Добавляем репозиторий docker:

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

Устанавливаем docker + docker-compose:

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Увеличить размер раздела диска в Ubuntu

https://winitpro.ru/index.php/2023/02/21/uvelichit-razdel-diska-ubuntu

echo 1>/sys/class/block/sda/device/rescan
cfdisk
lsblk
vgdisplay
pvresize /dev/sda3
lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv
resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
df -h

Default system language on Windows 10

Встретился с интересной проблемой, что у пользователя системные диалоги (например, Microsoft Visual C++ Redistributable) вылезали на польском языке, хотя язык был везде выставлен Английский.
Как так – объяснить никто не смог, возможно это было зашито на заводе, но оказалось, что в Windows изначально язык по-умолчанию польский 😀

Сменить его оказалось не так-то просто. Все манипуляции с языком интерфейса пользователя никак не влияли на язык системы по-умолчанию…

Посмотреть язык системы по-умолчанию можно командой: lpksetup /u, или dism /online /get-intl

В общем, на reddit-е нашлось решение, и я оставлю его здесь, ибо найти его заново будет непросто.

Found a solution! To anyone suffering the same insufferable issue, here is how you fix it. and set a new default system language for your PC.

  • 1 Install the language pack you need/want your PC to be in. (this can be done in language and region settings)
  • 2 Open command prompt in admin mode.
  • 3 Type lpksetup /u Into cmd prompt and you should see a window like this: https://i.imgur.com/qwltu8F.png
  • 4 Open Regedit in admin mode, then go to: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Language
  • 5 Find the language code of the language you installed on this webpage: https://msdn.microsoft.com/en-us/library/cc233982.aspx
  • 6 Edit the Default and InstalLanguage values to your preferred language value, For British English the value is 0809
  • 7 Restart your PC.
  • 8 Open command Prompt in admin mode again and enter lpksetup /u This time your preferred language will be set as the system default.
  • 9 Select the language you didn’t want and remove it. Your PC will need to restart again and you should be done!
  • 10 You can check if it worked by opening cmd prompt in admin mode and typing dism /online /get-intl Read through and you should see your default system language is set correctly.

VPN к домашней сети c доменного компьютера

Подключение к домашнему роутеру с рабочего доменного компьютера – частая задача для админа. В этой довольно простой задаче есть маааленький нюанс, который, если забыть, будет сильно мешать работать.
Точнее, нюанса 2, но об этом – в конце.

Симптомы следующие:
1) перестают открываться ресурсы, использующие короткие имена (например \\Server)
2) те же самые ресурсы продолжают работать, если открывать их по FQDN (например \\Server.domain.local)
3) все сетевые тесты проходят нормально, все ресурсы резолвятся как положено, телнетом порты открываются…

Дело в том, как Windows производит аутентификацию к таким ресурсам. Для имён ресурсов не-FQDN используется NTLM-аутентификация.
А при подключенном VPN-соединении Windows перезаписывает учётные данные NTLM пользователя теми, что были указаны в VPN-подключении.

Данное поведение нельзя изменить где-то в видимых настройках подключения. Решением является правка конфигурационного файла, в котором хранятся все настройки подключений dial-up и vpn.
Файл хранится в профиле пользователя: %appdata%\Microsoft\Network\Connections\Pbk\rasphone.pbk

В разделе с названием нужного VPN-подключения нужно выставить UseRasCredentials=0

Вторая настройка – отключение галочки “Использовать основной шлюз в удаленной сети” в настройках VPN-подключения.
Иначе перестанет работать доменная сеть, а весь трафик по-умолчанию будет маршрутизироваться на домашний роутер…

Exchange: разрешить любого получателя для коннектора отправки

Для отправки оповещений в виде email устройствами, системами мониторинга и прочими админскими штуками зачастую в Exchange создаётся специальный коннектор для отправки таких сообщений без аутентификации.
Конечно же, область действия такого коннектора административно ограничивается определёнными подсетями и адресами доверенных хостов.
Однако отправка почты на домены, не входящие в число доверенных в организации Exchange, в коннекторе по-умолчанию запрещена. Если нужно отправить оповещалку внешнему получателю – проблема.
В логе можно увидеть такое сообщение:

550 5.7.54 SMTP; Unable to relay recipient in non-accepted domain

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

Get-ReceiveConnector "MSK-MAIL2-01\Without Auth" | Add-ADPermission -User "NT AUTHORITY\ANONYMOUS LOGON" -ExtendedRights "Ms-Exch-SMTP-Accept-Any-Recipient"
Get-ReceiveConnector "MSK-MAIL2-01\Without Auth" | Get-ADPermission | sort user | where {$_.extendedrights -like "Ms-Exch-SMTP-Accept-Any-Recipient"} | ft User,ExtendedRights -auto

https://docs.microsoft.com/en-us/Exchange/mail-flow/connectors/receive-connectors?view=exchserver-2019#receive-connector-permission-groups

Автоматическое восстановление конфигурации MikroTik

В Cisco есть замечательная консольная команда, которая позволяет вернуть конфигурацию и восстановить связь с удаленно конфигурируемым устройством, если что-то пошло не так.
В MikroTik тоже есть некое подобие, называемое Safe Mode, однако работает оно совсем не так, как хотелось бы. При любом разрыве связи – сразу идёт откат настроек. Это приводит к тому, что сменить IP-адрес или Default gateway на устройстве, используя Safe Mode, невозможно.
Поэтому, как это обычно происходит в микротиках, на помощь приходит скрипт! 🙂

Мой скрипт нацелен на тот случай, когда устройство конфигурируется удалённо и дорога далёкая…
При этом сценарий возврата конфигурации по перезагрузке невозможен по причине того, что MikroTik сохраняет настройки сразу после применения.

Действия следующие.

1) Администратор вручную создает на устройстве бэкап конфига, к которому нужно откатиться в случае чего.
Через Winbox: меню Files, в открывшемся окне сверху нажать кнопку Backup. В окне создания бэкапа в поле Name ввести “safe1” (без кавычек) и выставить галочку Don’t Encrypt:

В командной строке:

/system backup save name=safe1

2) Затем администратор настраивает в шедулере запуск скрипта, приведённого ниже.

:global usersactive [/user active print count-only]
:if (usersactive=0) do={
	/system backup load name="safe1.backup" password=""
} else={
	:log warning "skip restore, active users found"
}

В поле Start Time нужно выставить время предполагаемого ребута. Дать себе 10-20-30мин на настройку.

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

И, как обычно, главное – не забыть удалить шедулер со скриптом по окончании работ 🙂

Кто входил на компьютер. Поиск в логах.

Если нужно определить на удалённом компьютере, под каким пользователем на него входили (интерактивный вход), то, подключившись оснасткой Computer Management, можно зайти в Event viewer/Windows Logs/Security (Просмотр событий/Журналы Windows/Безопасность) и справа нажать Filter Current Log (Фильтр текущего журнала). В открывшемся окне нужно перейти во вкладку XML и нажать снизу галочку Edit query manually (Изменить запрос вручную).
В окне ввода фильтра вписать:

<QueryList>
  <Query Id="0" Path="Security">
    <Select Path="Security">*[System[Provider[@Name='Microsoft-Windows-Security-Auditing'] and (EventID=4624)] and (EventData[Data[@Name='LogonType']='2'] or EventData[Data[@Name='LogonType']='11'])]</Select>
  </Query>
</QueryList>

После нажатия ОК покажутся только события входа в Windows.
Также можно добавить в фильтр события разблокировки компьютера (LogonType=7), чтобы получить все события локальных действий с компьютером, но для данной задачи это не нужно.

Тип входа 2: Интерактивный. Пользователь непосредственно вошел на этот компьютер.

Событие с типом входа = 2 записывается в журнал безопасности когда пользователь вошел или попытался войти в систему непосредственно локально, используя клавиатуру и введя имя пользователя и пароль в окне входа в систему. Событие с типом входа = 2 возникает при использовании как локальной так и доменной учетной записи.
Если пользователь входит с доменной учетной записью, событие с типом входа = 2 появится если пользователь будет действительно аутентифицирован в домене (контроллером домена)
В случае, если контроллер домена недоступен, но пользователь предоставил валидный пароль, закэшированный в локальном компьютере, Windows поставит тип входа = 11.

Тип входа 11: CachedInteractive. Пользователь вошел на этот компьютер с сетевыми учетными данными, которые хранились локально на компьютере. Контроллер домена не использовался для проверки учетных данных.

Когда пользователь входит в домен, Windows кэширует учетные данные пользователя локально, так что он позже может войти даже если контроллер домена будет недоступен. По умолчанию, Windows кэширует 10-25 последних использованных доменных учетных записей (это зависит от версии Windows). Когда пользователь пытается войти с доменной учетной записью, а контроллер домена не доступен, Windows проверяет учетные данные по сохраненным хэшам и регистрирует события 4624 или 4625 с типом входа = 11.

(с) Тип входа (Logon type) – что означает этот параметр?

Работа с Hyper-V Server 2019

Установка и настройка Free Windows Hyper-V Server 2019 (2016)

https://winitpro.ru/index.php/2019/08/07/nastrojka-free-windows-hyper-v-server/

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

План следующий:
1) делаем тиминг
2) создаём виртуальный сетевой коммутатор на интерфейсе тиминга
3) создаём виртуальный сетевой адаптер для управления Hyper-V Server
4) присваиваем сетевые настройки на сетевом адаптере управления

Литература:

https://www.altaro.com/hyper-v/virtual-networking-configuration-best-practices/
http://pyatilistnik.org/nic-teaming-on-windows-server-2019/

Объединение сетевых карт (Teaming)

Посмотреть список физических сетевых адаптеров с мак-адресами (можно также через ipconfig /all):

Get-NetAdapter | FT -auto

Предположим, мы хотим объединить интерфейсы “Ethernet” и “Ethernet 2”.

Если действия будут производиться с интерфейсом, по которому в данный момент идёт удалённое управление сервером, то, прежде чем начинать, нужно подключиться к консоли сервера (iLO или KVM), т.к. в процессе создания тиминга входящие в него интерфейсы потеряют адреса, а свежесозданный тиминг IP-адреса иметь не будет, по умолчанию он будет пытаться получить его по dhcp.

New-NetLbfoTeam -Name Teaming_Mgmt -TeamMembers "Ethernet", "Ethernet 2" -TeamingMode SwitchIndependent -LoadBalancingAlgorithm Dynamic

Удалить или добавить сетевую карту в тиминг:

Add-NetLbfoTeamMember -Team Teaming_Mgmt -Name "Ethernet 2"
Remove-NetLbfoTeamMember -Team Teaming_Mgmt -Name "Ethernet 2"

Создание виртуального сетевого коммутатора (vSwitch)

Создадим виртуальный свитч на менеджмент интерфейсе Teaming_Mgmt:

New-VMSwitch -Name vSwitch-Mgmt -NetAdapterName Teaming_Mgmt
Remove-VMSwitch -Name vSwitchName

Данная команда создаёт виртуальный свитч типа External (можно указать -SwitchType Internal/Private).

Создание виртуального сетевого адаптера (vNIC)

Add-VMNetworkAdapter -ManagementOS -SwitchName vSwitch-Mgmt -Name vNIC-Mgmt
Get-VMNetworkAdapter –ManagementOS
Rename-VMNetworkAdapter -ManagementOS -Name CurrentName -NewName NewName

Указание VLAN на виртуальном сетевом адаптере

Set-VMNetworkAdapterVlan -ManagementOS -VMNetworkAdapterName vNIC-Mgmt -Access -VlanId 3303
Get-VMNetworkAdapterVlan -ManagementOS

Сетевые настройки на виртуальном сетевом адаптере

Задать IP-адрес можно следующей командой:

New-NetIPAddress -InterfaceAlias Teaming_Mgmt -IPAddress 172.16.1.120 -PrefixLength 24 -DefaultGateway 172.16.1.1
New-NetIPAddress -InterfaceIndex 34 -IPAddress 172.16.1.120 -PrefixLength 24 -DefaultGateway 172.16.1.1

В случае если у интерфейса не задан InterfaceAlias, можно указать InterfaceIndex, взяв его из результата команды Get-NetAdapter

Задать DNS-сервер:

Set-DnsClientServerAddress -InterfaceAlias Teaming_Mgmt -ServerAddresses 10.128.2.16

Настройка Firewall

https://winitpro.ru/index.php/2019/09/25/upravlenie-windows-firewall-powershell/

Get-NetFirewallRule | ft DisplayName, Enabled
Set-NetFirewallRule -DisplayName "File and Printer Sharing (Echo Request - ICMPv4-In)" -enabled True
Set-NetFirewallRule -DisplayName "File and Printer Sharing (SMB-In)" -Enabled True

Enable-NetFireWallRule -DisplayName "Windows Management Instrumentation (DCOM-In)"
Enable-NetFireWallRule -DisplayGroup "Remote Event Log Management"
Enable-NetFireWallRule -DisplayGroup "Remote Service Management"
Enable-NetFireWallRule -DisplayGroup "Remote Volume Management"
Enable-NetFireWallRule -DisplayGroup "Windows Defender Firewall Remote Management"
Enable-NetFireWallRule -DisplayGroup "Remote Scheduled Tasks Management"

netsh advfirewall monitor show currentprofile
netsh advfirewall set allprofiles state off
netsh advfirewall set allprofiles state on
netsh advfirewall show allprofiles
netsh advfirewall set publicprofile state on
netsh advfirewall reset

#Включить уделенное управление томами
Enable-NetFirewallRule -name RVM-RPCSS-In-TCP,RVM-VDSLDR-In-TCP,RVM-VDS-In-TCP

Отключение IPv6 на сетевом адаптере

Get-NetAdapterBinding | Where-Object -Property DisplayName -Match IPv6 | Format-Table –AutoSize
Disable-NetAdapterBinding -Name "MyAdapter" -ComponentID ms_tcpip6
Get-NetAdapterBinding | Where-Object -Property DisplayName -Match IPv6 | Disable-NetAdapterBinding -ComponentID ms_tcpip6

Включение MPIO

https://winitpro.ru/index.php/2013/11/15/ustanovka-i-nastrojka-mpio-v-windows-server-2012/

Add-WindowsFeature -Name 'Multipath-IO'

Графический интерфейс для включения MPIO можно открыть, введя команду mpiocpl

Из командной строки:

mpclaim.exe -r -i -a ""

Команда проанализирует все устройства, обнаруженные системой, определит какие из них имеют несколько путей и включит поддержку MPIO для них:

Обязательно перезагрузить сервер для включения MPIO!

Обновление списка дисков

diskpart
list disk
rescan
list disk

"rescan" | diskpart
"list disk" | diskpart

Удалённая консоль mmc бесполезна. При любом изменении данных консоль нужно открывать заново, никакие кнопки “обновить” не помогают!
Можно использовать Windows Admin Center, тоже основные функции выполнять можно.

Просмотреть WWN storage-адаптеров

Get-InitiatorPort

Список дисков и LUN

Get-WmiObject Win32_DiskDrive | sort scsilogicalunit | ft @{Label=”Disk Number”;Expression={"Disk "+$_.index}}, @{Label=”Size (GB)”;Expression={[Math]::Round($_.size / 1GB, 2)}; Alignment="left"}, @{Label=”LUN”;Expression={$_.scsilogicalunit}}, @{Label=”ScsiBus”;Expression={$_.scsibus}}, SerialNumber, Caption -autosize

Отключить/включить сетевую карту

Get-NetAdapter | FT -auto
Get-NetAdapter -name Teaming_Data | Disable-NetAdapter -Confirm:$false
Get-NetAdapter -name Teaming_Data | Enable-NetAdapter -Confirm:$false

Создание кластера без домена

http://woshub.com/workgroup-failover-cluster-windows-server-2016/

https://www.vembu.com/blog/workgroup-cluster-in-hyper-v-failover-cluster/

https://www.mssqltips.com/sqlservertip/4951/deploy-a-windows-server-2016-failover-cluster-without-active-directory-part-1/

Установка Windows Admin Center

После того как сетевые настройки выполнены и есть доступ по сети к управляющему интерфейсу Hyper-V Server, можно установить довольно удобную админку, в которой можно впоследствии делать рутинные операции по управлению сервером и виртуальными машинами.

Скачиваем пакет msi со странички:
https://www.microsoft.com/en-us/evalcenter/evaluate-windows-admin-center
и заливаем его в папку на локальном диске через SMB. Открываем со своего компьютера \\HYPERV\c$ и вводим логин/пароль администратора.

Заходим по RDP на хост Hyper-V и в командной строке запускаем установочный файл msi:

PS C:\_Distrib> .\WindowsAdminCenter2103.2.msi

Запустится установщик с GUI. Все настройки можно оставить по-умолчанию, не устанавливать галочку напротив Use WinRM over HTTPS only, порт оставляем 443, установить галочку редиректа с 80-го порта.

Настройка хранения файлов виртуальных машин

Get-VMHost | FL
Set-VMHost -VirtualMachinePath D:\Hyper-V -VirtualHardDiskPath 'D:\Hyper-V\Virtual Hard Disks'

Установка Server Core App Compatibility Feature on Demand (OFD)

Набор совместимости предназначен для Windows Server Core, но также может быть установлен на Hyper-V Server.

Скачать отсюда:
https://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-2019

https://docs.microsoft.com/en-us/windows-server/get-started/server-core-app-compatibility-feature-on-demand

Если нужна консоль управления кластером, сначала нужно добавить фичу кластера в ОС, а затем установить FOD:

Install-WindowsFeature -Name Failover-Clustering -IncludeManagementTools
Mount-DiskImage -ImagePath c:\_Distrib\17763.1.180914-1434.rs5_release_amd64fre_SERVER-FOD-PACKAGES_OEM_amd64fre_MULTI.iso
Add-WindowsCapability -Online -Name ServerCore.AppCompatibility~~~~0.0.1.0 -Source D:\ -LimitAccess

После завершения установки необходимо перезагрузить сервер.

Появятся следующие возможности:

  • Microsoft Management Console (mmc.exe)
  • Event Viewer (Eventvwr.msc)
  • Performance Monitor (PerfMon.exe)
  • Resource Monitor (Resmon.exe)
  • Device Manager (Devmgmt.msc)
  • File Explorer (Explorer.exe)
  • Windows PowerShell (Powershell_ISE.exe)
  • Disk Management (Diskmgmt.msc)
  • Failover Cluster Manager (CluAdmin.msc)

Настройка Live Migration

https://theitbros.com/live-migration-in-hyper-v/

https://winitpro.ru/index.php/2017/03/30/nastrojka-hyper-v-live-migration-bez-klastera/

Изоляция виртуальных машин с помощью ACL

https://windowsnotes.ru/virtualization/spiski-kontrolya-dostupa-porta-v-hyper-v/

Подключение pass-through дисков

http://devguis.com/hyper-v-storage-pass-through-disks.html

тут отговаривают от проброса дисков:
https://www.altaro.com/hyper-v/hyper-v-pass-through-disks/

Основным минусом я вижу то, что никак нельзя сделать снэпшот диска средствами гипервизора и зафиксировать состояние диска вместе с ВМ.
Получается, без агента внутри ВМ нельзя бэкапить Exchange, SQL и т.д.

SSL Hardening Tools

Mozilla SSL Configuration Generator

На данной страничке можно создать конфиг для настроек SSL таких продуктов как Apache, NGINX, HAProxy, MySQL и т.д.
При этом можно выбрать параметры совместимости и даже оттолкнуться от установленной в системе версии OpenSSL.

SSL Labs SSL Server Test

Однозначно необходимый тест для проверки настройки выставленного в Интернет сайта.
Покажет ошибки в сертификате сервера, доступные на сервере протоколы и шифры, а также связанные с этим риски и несовместимые операционные системы и браузеры.
Также проверит на широко известные уязвимости веб-сервера и параметры, снижающие общую безопасность сайта.
Ну и, что самое главное, просто покажет рейтинг безопасности! Чем-то же надо меряться… 🙂

Использование сертификата Let’s Encrypt

На нашем CentOS 7 с веб-сервером nginx и haproxy перед ним, получим бесплатный сертификат для одного сайта.

Настройка и получение первого сертификата

Для получения сертификата и последующего обновления будем использовать программку cetbot с плагином webroot.
Этот способ не предполагает остановки веб-сервера для получения сертификата или вмешательства в DNS.

Read moreИспользование сертификата Let’s Encrypt

Создание самоподписанного сертификата

Оснастка IIS

Внимание! При создании самоподписанного сертификата через консоль Internet Information Manager (пункт меню Create Self-Signed Certificate), создается сертификат с использованием алгоритма шифрования SHA-1. Такой алгоритм уже считается устаревшим и браузеры могут выдавать предупреждение о ненадёжности, даже если сертификат установлен в доверенные.

Поэтому лучше воспользоваться методом powershell или другим.

Powershell

В Windows 10/8.1 и Windows Server 2016/2012R2 можно использовать командлет New-SelfSignedCertificate, входящий в состав модуля PKI (Public Key Infrastructure).
Запускать команду необходимо с правами администратора, иначе будет ошибка доступа в ветку LocalMachine.

New-SelfSignedCertificate -DnsName *.domain.com -CertStoreLocation cert:\LocalMachine\My -FriendlyName "*.domain.com (self-signed)" -NotAfter [datetime]::now.AddYears(5)

Документация от Microsoft по командлету и по модулю PKI.

Также, очень полезная статья от Вадимса Поданса:
https://www.sysadmins.lv/blog-en/self-signed-certificate-creation-with-powershell.aspx

OpenSSL под Windows

Скачать можно тут:

https://slproweb.com/products/Win32OpenSSL.html

Создание CSR с помощью OpenSSL

openssl req –new –newkey rsa:2048 –nodes –keyout yourdomain.key –out yourdomain.csr

Далее в интерактивном режиме будут запрошены дополнительные данные.

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

Проверка СSR запроса

openssl req -in yourdomain.csr -noout -text