Сервер через консоль как его настроить

Администрируем сервера через единую консоль

Давно собирался написать на Хабре, но все как-то откладывал. Но вот недавно прочитал пару статей (раз, два) и понял, что надо взять себя в руки. Это мой первый пост на Хабре, надеюсь, что он будет удачный.

Начало

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

Проба пера

Как только количество серверов перевалило за критическую отметку, у меня возник вопрос: как всем этим управлять и не тратить много времени на это. Понятно, что заходить на сервера по RDP\SSH и выполнять там одинаковые команды — это не по фэншую.

Беглый анализ показал, что для управления Windows серверами лучше всего подходит Powershell. Это стало поводом для его изучения. Для начала был написан простой скрипт, который позволял подключаться к Windows серверам и выполнять там скрипты и команды. В достаточно короткий промежуток времени этот скрипт был модернизирован и стал более-менее пригоден для выполнения повседневных задач. Это позволило значительно упростить работу. Однако наряду с этим возникали и трудности: приходилось каждый раз редактировать текстовый файл со списком серверов, чтобы выполнять команды только на нужных серверах. Так же было неудобно хранить готовые скрипты для выполнения. Кроме этого, хотелось сделать что-то универсальное и легкое в использовании. Тут пригодился небольшой опыт программирования на PHP. Идея была проста — прикрутить скрипт к WEB интерфейсу и сделать его рабочим для себя и коллег. Был поднят Denwer на рабочем компьютере и работа закипела.

Читайте также:  Как настроить отношение с парнем

Через небольшое время появился первый прототип. Теперь можно было вводить команды непосредственно в браузере и перечислять сервера «через запятую». Результат выполнения так же отображался в браузере. Спустя небольшой промежуток времени появились отдельные функции по управлению процессами и службами. Сайтом начали пользоваться коллеги, стали поступать новые идеи.

Версия 2

Как вы понимаете, речи о дизайне и «юзабилити» не шло. Это был просто набор линков, окошек ввода и вывода результата. Минимальная обработка ошибок. Кроме всего, я достаточно быстро понял, что сайт является не только удобством, но и несет в себе угрозу – не было никакого контроля за выполнением команд через сайт, не велось никаких логов (логи Apache не берем в расчет). Любой, кто знал адрес, мог легко подключится и выполнить любые команды, вплоть до выключения серверов и удаления с них данных. Авторизации на сайте не было. При этом не надо было знать ни логинов, ни паролей от серверов. Достаточно было ввести имя сервера(ов) и команду, остальное сайт делал сам. Справедливости ради надо сказать, что сайт находился на моем рабочем компе и доступа извне не было, но это не особо грело душу.

В таком состоянии сайт проработал недолго и было принято решение его немного переделать. Так появилась вторая версия сайта. Была добавлена авторизация через «.htaccess», меню, появился список «часто используемых скриптов», появился первый вариант «движка». Так же стали появляться узкоспециализированные функции, связанные со спецификой работы компании. Сайт «переехал» на сервер, под нормальную связку Apache\PHP\MySQL. Ниже скрины от второй версии.


1. Работа со службами


2. Часто используемые скрипты


3. Выполнить скрипт

Версия 3

На следующем этапе возникла необходимость разграничить доступ пользователям на разные сервера. Для простоты решения была поднята копия сайта с другим набором серверов. На тот момент этого было достаточно. Так появилась идея сделать нормальную авторизацию с разграничением прав.
Это послужило толчком для разработки третьей версии. При ее написании были учтены все проблемы и пожелания, имеющиеся на тот момент. В результате был модернизирован движок, написана своя авторизация, появился раздел админки (управления пользователями и доступными серверами), добавились недостающие разделы. На данный момент сайт работает на этой версии более года и обладает следующими возможностями:

  • Работа со службами
  • Работа с процессами
  • Удаленная командная строка (возможность сохранения скриптов)
  • Информация: о железе, списки DB, правила Firewall
  • База знаний
  • Ведения логов
  • Узкоспециализированные функции


4. Работа со службами


5. База знаний


6. Выполнить скрипт

Самый главный недостаток сайта – это работа только с Windows серверами. Это обусловлено тем, что подавляющее число серверов, используемых в нашей компании, это Windows сервера. В последнее время количество серверов под управлением Linux стало расти, и встал вопрос о том, как адаптировать работу сайта под них. Чтобы добавить поддержку Linux надо было очень много переписывать код и «ломать» идеологию сайта, чего делать не хотелось. Кроме этого, предпринималось много попыток найти способы выполнять команды Linux из-под Windows в консоли и как-то это прикрутить к скриптовым языкам. Через несколько месяцев решение было найдено.

Проект

Год назад я начал изучать фреймворки и в голове засела окончательная мысль – сделать проект. Проект получил имя: SSC Panel – Smart Server Control Panel. На данный момент заложена основа работы сайта. Есть реализация работы как с Windows, так и с Linux серверами. Реализована админка, удаленная командная строка, есть возможность сохранять скрипты, ведение логов. Пока немного, но, со временем, я надеюсь, их будет больше. Сайт использует движок Kohana 3.3.2, коммерческая тема «SmartAdmin» (не очень хорошо, думаю, что надо менять), для работы с Windows используется Powershell v3 (необходима на сервере, у клиента может быть v2), для работы с Linux используется библиотека Posh-SSH. Как говорится, лучше один раз увидеть:

Источник

Базовые команды для настройки и управления Windows Server Core

В этой статье я постарался собрать в одном месте основные команды cmd и PowerShell, которые полезны при настройке и управлении Windows Server Core. Думаю, этот гайд будет полезен как новичкам, так и опытным системным администраторам, как справочник по базовым командам Server Core.

Преимущества Windows Serve Core:

  • Меньшие требования к ресурсам;
  • Повышенная стабильность, безопасность, требует установки меньшего количества обновлений (за счет меньшего количества кода и используемых компонентов);
  • Идеально подходит для использования в качестве сервера для инфраструктурных ролей (контроллер домена Active Directory, DHCP сервер, Hyper-V сервер, файловый сервер и т.д.).

Server Core лицензируется как обычный физический или виртуальный экземпляр Windows Server (в отличии от Hyper-V Server, который полностью бесплатен).

Для установки Windows Server 2016/2019 в режиме Core нужно выбрать обычную установку. Если вы выберите Windows Server (Desktop Experience), будет установлен GUI версия операционной системы (в предыдущих версиях Windows Server она называлась Server with a GUI).

После установки Windows Server Core перед вами появляется командная строка, где нужно задать пароль локального администратора.

При входе на Server Core открывается командная строка (cmd.exe). Чтобы вместо командной строки у вас всегда открывалась консоль PowerShell.exe, нужно внести изменения в реестр. Выполните команды:

Powershell.exe
Set-ItemProperty -Path ‘HKLM:\Software\Microsoft\Windows NT\CurrentVersion\WinLogon’ -Name Shell -Value ‘PowerShell.exe’

И перезагрузите сервер:

Настройка Windows Server Core с помощью SCONFIG

Для базовой настройки Server Core можно использовать встроенный скрипт sconfig. Просто выполните команду sconfig в консоли. Перед вами появиться меню с несколькими пунктами:

С помощью меню Server Configuration можно настроить:

  • Добавить компьютер в домен или рабочую группу;
  • Изменить имя компьютера (hostname);
  • Добавить локального администратора;
  • Разрешить/запретить удаленное управления и ответы на icmp;
  • Настроить параметры обновления через Windows Update;
  • Установить обновления Windows;
  • Включить/отключить RDP;
  • Настроить параметры сетевых адаптеров (IP адрес, шлюз, DNS сервера);
  • Настроить дату и время;
  • Изменить параметры телеметрии;
  • Выполнить logoff, перезагрузить или выключить сервер.

Все пункт в меню sconfig пронумерованы. Чтобы перейти в определенное меню наберите его номер и Enter.

В некоторых пунктах меню настройки sconfig есть вложенные пункты. Там также, чтобы перейти к определенной настройке, нужно сделать выбор цифры пункта меню.

Не будем подробно рассматривать все пункты настройки sconfig, т.к. там все достаточно просто и очевидно. Однако в большинстве случаев администраторы предпочитают использовать для настройки новых хостов с Server Core различные PowerShell скрипты. Это намного проще и быстрее, особенно при массовых развёртываниях.

Основные команды PowerShell для настройки Server Core

Рассмотрим основные команды PowerShell, которые можно использовать для настройки Server Core.

Узнать информацию о версии Windows Server и версии PowerShell:

Get-ComputerInfo | select WindowsProductName, WindowsVersion, OsHardwareAbstractionLayer
$PSVersionTable

Для перезагрузки Server Core нужно выполнить команду PowerShell :

Чтобы выполнить выход из консоли Server Core, наберите:

Настройка параметров сети

Теперь нужно из PowerShell нужно настроить параметры сети (по умолчанию Windows настроена на получение адреса от DHCP). Выведите список сетевых подключений:

Теперь укажите индекс интерфейса сетевого адаптера (InterfaceIndex), который нужно изменить и задайте новый IP адрес:

New-NetIPaddress -InterfaceIndex 4 -IPAddress 192.168.13.100 -PrefixLength 24 -DefaultGateway 192.168.13.1
Set-DNSClientServerAddress –InterfaceIndex 4 -ServerAddresses 192.168.13.11,192.168.13. 111

Проверьте текущие настройки:

Set-DnsClientServerAddress –InterfaceIndex 4 –ResetServerAddresses
Set-NetIPInterface –InterfaceIndex 4 -Dhcp Enabled

Включить/отключить сетевой адаптер:

Disable-NetAdapter -Name “Ethernet0”
Enable-NetAdapter -Name “Ethernet 0”

Включить, отключить, проверить статус поддержки IPv6 для сетевого адаптера:

Disable-NetAdapterBinding -Name «Ethernet0» -ComponentID ms_tcpip6
Enable-NetAdapterBinding -Name «Ethernet0» -ComponentID ms_tcpip6
Get-NetAdapterBinding -ComponentID ms_tcpip6

netsh Winhttp set proxy :

Настройка времени/даты

Вы можете настроить дату, время, часовой пояс с помощью графической утилиты intl.cpl или с помощью PowerShell:

Set-Date -Date «09/03/2022 09:00»
Set-TimeZone «Russia Time Zone 3

Задать имя компьютера, добавить в домен, активация

Чтобы изменить имя компьютера:

Rename-Computer -NewName win-srv01 -PassThru

Добавить сервер в домен Active Directory:

Add-Computer -DomainName «corp.winitpro.ru » -Restart

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

Add-LocalGroupMember -Group «Administrators» -Member «corp\anovikov»

Для активации Windows Server нужно указать ваш ключ:

Или можно активировать хост на KMS сервере (например, для Windows Server 2019):

slmgr /ipk N69G4-B89J2-4G8F4-WWYCC-J464C
slmgr /skms kms-server.winitpro.ru:1688
slmgr /ato

Разрешить удаленный доступ

Разрешить удаленный доступ к Server Core через RDP:

cscript C:\Windows\System32\Scregedit.wsf /ar 0

Разрешить удаленное управление:

Configure-SMRemoting.exe –Enable
Enable-NetFirewallRule -DisplayGroup “Windows Remote Management”

Настройка Windows Firewall

Информация о настройке Windows Firewall есть в статье по ссылке. Здесь оставлю несколько базовых команд.

Включить Windows Defender Firewall для всех профилей:

Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True
Изменить тип сети с Public на Private:

Get-NetConnectionProfile | Set-NetConnectionProfile -NetworkCategory Private

Полностью отключить Windows Firewall (не рекомендуется):

Get-NetFirewallProfile | Set-NetFirewallProfile -enabled false

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

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 “Remote Scheduled Tasks Management”
Enable-NetFireWallRule -DisplayGroup “Windows Firewall Remote Management”
Enable-NetFirewallRule -DisplayGroup «Remote Administration»

Установка обновлений в Server Core

Для управления параметрами обновлений предпочтительно использовать групповые политики Windows Update, но можно задать параметры и вручную.

Отключить автоматическое обновление:
Set-ItemProperty -Path HKLM:\Software\Policies\Microsoft\Windows\WindowsUpdate\AU -Name AUOptions -Value 1
Автоматически скачивать доступные обновления:
Set-ItemProperty -Path HKLM:\Software\Policies\Microsoft\Windows\WindowsUpdate\AU -Name AUOptions -Value 3
Получить список установленных обновлений:
Get-Hotfix
Или
wmic qfe list
Для ручной установки обновлений Windows можно использовать утилиту wusa:
Wusa update_name.msu /quiet

Также для установки и управления обновлениями из командной строки удобно использовать PowerShell модуль PSWindowsUpdate.

Управление ролями, службами и процессами Windows

Для получения списка всех доступных ролей в Windows Server Core выполните команду PowerShell:

Получить список всех установленных ролей и компонентов в Windows Server(можно быстро понять, для чего используется сервер):

Get-WindowsFeature | Where-Object <$_. installstate -eq "installed">| ft Name,Installstate

Например, для установки службы DNS воспользуйтесь такой командой:

Install-WindowsFeature DNS -IncludeManagementTools

Список всех служб в Windows:

Список остановленных служб:

Restart-Service -Name spooler

Для управление процессами можно использовать стандартный диспетчер задач (taskmgr.exe) или PowerShell модуль Processes:

Get-Process cmd, proc1* | Select-Object ProcessName, StartTime, MainWindowTitle, Path, Company|ft

Часто используемые команды в Server Core

Ну и наконец, приведу список различных полезных мне команд, которые я периодически использую в Server Core.

Информация о статусе и здоровье физических дисков (используется стандартный модуль управления дисками Storage):

Get-PhysicalDisk | Sort Size | FT FriendlyName, Size, MediaType, SpindleSpeed, HealthStatus, OperationalStatus -AutoSize

Информация о времени последних 10 перезагрузок сервера:

Get-EventLog system | where-object <$_.eventid -eq 6006>| select -last 10

Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize

Скачать и распаковать zip файл с внешнего сайта:

Invoke-WebRequest https://contoso/test.zip -outfile test.zip
Expand-Archive -path ‘.\test.zip’ -DestinationPath C:\Users\Administrator\Documents\

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

$session = New-PSSession -ComputerName remotsnode1
Copy-Item -Path «C:\Logs\*» -ToSession $session -Destination «C:\Logs\» -Recurse -Force

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

Pnputil –i –a c:\distr\hpdp.inf

Также Microsoft предлагает специальный пакет Server Core App Compatibility Feature on Demand (FOD), который позволяет установить в Windows Server 2019 некоторые графические инструменты и консоли (MMC, Eventvwr, Hyper-V Manager, PerfMon, Resmon, Explorer.exe, Device Manager, Powershell ISE). Этот FOD доступен для загрузки в виде ISO при наличии активной подписки. Установка выполняется командой:

Add-WindowsCapability -Online -Name ServerCore.AppCompatibility

Установка Server Core App Compatibility Feature on Demand будет использовать дополнительно около 200 Мб оперативной памяти в Server Core.

В этой статье я постарался собрать самые нужные команды, которые нужно постоянно держать под рукой при работе с Windows Server Core. Время от времени я буду обновлять статью и добавлять новые команды, которые покажутся мне нужными для повседневной работы.

Источник

Оцените статью