Sunday 24 October 2021

PowerShell Security book #2.

Hi all.

Today I would like to present second part of my resume by e-book "PowerShell Security".

JEA.

I don't know if I need to describe JEA again. Ok, I will write about it very shortly today. So, by default, there are three Session Configurations on each Windows computer, namely: 

  • microsoft.powershell, 
  • microsoft.powershell.workflow,
  • microsoft.windows.server-managerworkflows.

1) Get-PSSessionConfiguration

Define "HelpDesk" configuration:

Register-PSSessionConfiguration -Name HelpDesk

This opens the dialog you already know from managing file permissions:

Register-PSSessionConfiguration -Name HelpDesk -ShowSecurityDescriptorUI

Defining RunsAs users:

Register-PSSessionConfiguration -Name HelpDesk -RunAsCredential forza.com\MikeLee

Set additional options via configuration file:

New-PSSessionConfigurationFile -Path .\MyConfig.pssc

The following are particularly useful to prevent users from potentially harmful actions:

-languageMode with the values FullLanguage, RestrictedLanguage, ConstrainedLanguage, NoLanguage: The latter allows only the exe-cution of cmdlets and functions, other language resources are not available. 

FullLanguage offers the full range of language capabilities, the other two lie between these two poles.

-VisibleAliases, VisibleCmdlets, VisibleFunctions, VisibleProviders: These allow you to specify which aliases, cmdlets, functions, and providers are available in the session. 

You can use wildcards and specify multiple values as array.

Example:

New-PSSessionConfigurationFile -Path .\MyConfig.pssc -VisibleCmdlets "Get*","Select*"

You adjust the Session Configuration based on this file:

Set-PSSessionConfiguration -Name HelpDesk -Path .\MyConfig.pssc

Enter-PSSession -ComputerName Remote-PC -ConfigurationName HelpDesk

-OR-

Invoke-Command -ComputerName Remote-PC -ConfigurationName Helpdesk {Get-ChildItem}

2) New-PSRoleCapabilityFile -Path MyRCF.psrc

-OR-

JEA Helper Tool create MyRCF.psrc

Once you have created the list of permitted cmdlets and parameters, you can add them to the .psrc file. You save this file in a directory called RoleCapabilities under

$env:ProgramFiles\WindowsPowerShell\Modules

The last step is to link the role capabilities to the desired session configu-ration. To do this, edit the configuration file with the extension .pssc and add the role functions there.

Since you create this file automatically at the beginning, this (commented out) section for RoleDefinitions should already be there:

RoleDefinitions = @{ 'CONTOSO\SqlAdmins' = ` @{ RoleCapabilities = 'SqlAdministration' }; 

'CONTOSO\SqlManaged' = @{ RoleCapabilityFiles = 'C:\RoleCapability\SqlManaged.psrc' }; 

'CONTOSO\ServerMonitors' = ` @{ VisibleCmdlets = 'Get-Process' } }

Friday 22 October 2021

Тонкое искусство пофигизма.

Всем привет.

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

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

Оглянитесь вокруг себя. Пролистайте ленту соцсетей. Прислушайтесь. И вы услышите, как  окружающий мир настойчиво твердит: «Будь лучше!», «Добейся успеха любой ценой!», «Будь первым!» Несмотря на то, что человеческая цивилизация еще никогда в истории не жила в таком достатке, всё больше людей испытывают необъяснимое ощущение фрустрации. Будто бы чего-то не хватает, будто бы у всех твоих френдов в соцсетях жизнь лучше и приятнее. 

"И вот парадокс: сосредоточенность на позитиве - на лучшем, на превосходном - лишь напоминает нам снова и снова о том, чем мы не стали; о том, чего нам не хватает; о мечтах, которые не сбылись. Ведь ни один подлинно счастливый человек не будет стоять перед зеркалом и вдалбливать себе, что он счастлив. Зачем ему это?".

Что делать? Куда бежать? И где найти силы, чтобы со всем этим справиться?

Мэнсон легким языком, доступно и понятно объясняет, как жить в мире, который ежеминутно давит на тебя, принуждая стать успешным, богатым и знаменитым. В своем международном бестселлере автор приходит к парадоксальным выводам:

  • быть середнячком зачастую куда более приятно и полезно, чем карабкаться на недостижимый Олимп.
  • мы постоянно ошибаемся, и это нормально. 
  • неудачи - это хорошо, а боль - прекрасный стимул. 
  • умение говорить «нет» - путь к комфортной жизни.
  • счастье, к которому нас все призывают, это ложная цель.

Я вас уверяю что книга вас не отпустит, и в то же время даст вам возможность дышать свободно. У автора есть и другие книги, но вы начните с этой, как я. Удачи!

"Ищи истину самостоятельно, и там я тебя встречу."


Форсаж апгрейда Windows с помощью SCCM.

Всем привет.

Одной из полезных фишек функционала SCCM является тесная работа с клиентской операционной системой Windows 10. Большое внимание уделяется ее поддержке, а именно апгрейду с младших версий до старшей, вплоть до 20Н2. Теперь не нужно забирать у пользователей компьютеры на глобальное обновление системы, потому как сотрудник может получить новенькую ОС, не отходя от рабочего места и не выключая его.

Автоматический переход между версиями Windows 10 осуществляется при помощи плана обслуживания после настроки необходимых ролей, а также создания правила отбора компьютеров. Аналогично это же можно выполнить через настройку последовательности задач. Оба варианта подробно рассмотрены здесь

А я лишь коснусь  моментов когда по техническим причинам нам надо форсировать процесс обновления. Итак пусть наша коллекция названа как Upgrade_20H2. 

Вариант 1.

Добавляем нужный хост в коллекцию в консоли SCCM. Для форсирования обновления минут через 15 на самом хосте запускаем Configuratiоn Manager и стартуем на выполнение три политики


по очереди с минутной паузой. После этого в разделе Updates Software Center появится само обновление на котором нам и следует кликнуть Install All.

Wednesday 20 October 2021

PowerShell Security book #1.

Hi all.

Today I would like to present for your eyes the best e-book of authors Michael Pietroforte and Wolfgang Sommergut "PowerShell Security".

These authors describe in details security features in Powershell:

  • Control execution of scripts using execution policy, code signing and constrained language mode
  • Secure PowerShell remoting with SSH und TLS
  • Delegate administrative tasks with JEA
  • Audit and analyze PowerShell activities, encrypt logs
  • Improve code quality following best practices.

PowerShell is a powerful tool for system administration and as such also a perfect means for hackers. Due to the tight integration into the system, attempts to simply block PowerShell provide a false impression of security. The best protection is provided by PowerShell's own mechanisms. PowerShell offers almost unlimited access to the resources of a Windows computer and also can automate numerous applications such as Exchange. Users aren't limited to the many modules and cmdlets, but can also integrate .NET classes, Windows APIs, and COM objects. These capabilities are particularly dangerous in the hands of attackers. Since many versions of With Windows Server, Microsoft avoids to activate any roles and features on a freshly installed machine in order to minimize the attack surface. On such a locked down system users must explicitly add all required services.



So, now I try to explain for you these features in practically. Let's go.

# Execution scripts.

We can define policies for execution Powershell scripts on the host by:

  • GPO
  • signing our script
  • set constrained language mode.

# Execution policy.

I prefer set RemoteSigned mode. It means that Scripts downloaded from the Internet must be signed by a trusted publisher.

How it set?

  • Set-ExecutionPolicy RemoteSigned
  • Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
  • $env:PSExecutionPolicyPreference

How it check?

Get-ExecutionPolicy -List | ft -AutoSize

We can set Turn on Poweshell script execution by GPO.

How it set?

mmc: Policies => Administrative Templates => Windows Components => Windows PowerShell and is called Turn on Script Execution.

Result: powershell.exe -ExecutionPolicy "Unrestricted" doesn't work!

However you can bypass it as following:

a) If a user decides to circumvent this policy, he simply copies the contents of a script to the ISE and runs it there. 

b) RemoteSigned allows unsigned scripts downloaded from the Internet to be started if you unblock the file using Unblock-File.

c) Another bypass consists of encoding the script in Base64 and transferring it to PowerShell.exe via the EncodedCommand parameter. 

To limit possible damage caused by such activities, it is recommended to use the Constrained Language Mode.

Wednesday 13 October 2021

ScriptRunner как диспетчер скриптов.

Всем привет.

В Windows 10 есть такая прикольная утилита как ScriptRunner. Она позволяет запускать один или нескольких скриптов или исполняемых файлов. Утилита ScriptRunner.exe изначально разрабатывалась для применения в средствах виртуализации приложений Microsoft (App-V). Данная технология позволяет системным администраторам делать определенные приложения доступными для конечных пользователей, не устанавливая эти приложения непосредственно на их компьютеры. Утилита устанавливалась как часть средства виртуализации приложений и использовалась в качестве средства запуска множества сценариев по одному триггеру (запускающему событию). Средство виртуализации приложений App-V входит в состав пакета оптимизации рабочего стола Майкрософт (MDOP), который входит в состав подписки Microsoft Software Assurance.

Для получения подсказки по применению ScriptRunner.exe используется команда:

ScriptRunner /?

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

ScriptRunner.exe -appvscript scriptFileName [Arguments] [-appvscriptrunnerparameters [-wait] [-timeout=] [-rollbackonerror]]

Параметры командной строки:

-appvscript - этот параметр задает имя файла сценария, исполняемого или командного файла (scriptFileName) и аргументы командной строки (Arguments), если они есть.

-appvscriptrunnerparameters - этот параметр определяет режим ожидания завершения сценария (-wait) и интервал ожидания в секундах (-timeout=TimeInSeconds), а также режим выполнения при возникновении ошибки (-rollbackonerror). 

По умолчанию для параметра -appvscriptrunnerparameters приняты значения – нет ожидания, нет таймаута, нет обработки ошибок ( No wait, No timeout, No rollback on error).

Параметры разделяются символом пробела в Unicode (U+0020).

Откат при ошибке работает так: если сценарий создает новый выходной файл, откат удаляет файл, но если сценарий обновляет или заменяет существующий файл, откат не отменяет эти изменения.

Если команда Scriptrunner содержит более одного предложения -appvscript, откат при ошибке может не работать ни для одного из сценариев.

Sunday 10 October 2021

Windows Admin Center.

Всем привет.

В 2017 году Microsoft анонсировала работы по разработке бесплатного HTML5 веб-интерфейса для администрирования и централизованного управления серверами Windows Server. Проект получил кодовое название Project Honolulu. В апреле 2018 года Microsoft выпустила RTM решение и теперь данный продукт официально называется Windows Admin Center.

Идея Microsoft заключается в замене традиционных MMC консолей и других графических инструментов управления серверами Windows возможностью управления из браузера через единый веб интерфейс по аналогии с веб-клиентом управления VMware vCenter. Admin Center разворачивается локально и может быть использован в том числе для управления серверами, изолированных от Интернета.

Windows Admin Center поддерживает управление следующими версиями ОС: Windows Server 2016, Windows Server 2012 / R2, Hyper-V 2016/2012R2/2012, Windows 10, северами Azure, а также Core редакциями. Возможно также управление целыми кластерами: Failover Clusters, Hyper-V Clusters и виртуальными машинами Hyper-V на них.

На управляемый хост не нужно устанавливать никаких агентов или дополнительных расширений. Коммуникация осуществляется выполняется через Remote PowerShell и WMI over WinRM с помощью RESTful API. На управляемых серверах должен быть установлен как минимум Management Framework 5.0 (Powershell 5.0). На Windows Server 2012 / R2 WMF 5.0 нужно становить отдельно.

Сам веб интерфейс Windows Admin Centerнаписан на HTML 5 и корректно работает в Edge и Chrome (Internet Explorer пока полностью не поддерживается).

В последней доступной версии Windows Admin Center прямо из окна браузера поддерживается RDP подключение через веб-интерфейс и консоль PowerShell.

На Windows Server 2016 можно установить Windows Admin Center в режиме шлюза (Gateway Mode), в этом режиме возможно удаленно подключаться к консоли управление с других компьютерах. На Windows 10 / Windows Server 2012 клиент устанавливается в режиме Desktop Mode (консоль доступна только с локального компьютера).

Установить Windows Admin Center можно на Windows 10 или на Windows Server (2016 и 1709) в режиме Gateway. Чтобы скачать msi дистрибутив Windows Admin Center (около 30 Мб), можно на странице https://docs.microsoft.com/en-us/windows-server/manage/windows-admin-сenter/understand/windows-admin-center

Установить дистрибутив Windows Admin Center можно из командной строки (с самоподписанным сертификатом сроком действия 60 дней)

msiexec /i HonoluluTechnicalPreview1712-05002.msi /qn /L*v log.txt SME_PORT=6516 SSL_CERTIFICATE_OPTION=generate

Либо с помощью обычного мастера установки. По умолчанию для управления используется порт 6515 (можно изменить). На Windows Server компонент Admin Center устанавливается в виде отдельной службы.

Если у вас есть selfsigned сертификат:

Start-Process -FilePath "C:\Users\Administrator\Downloads\wac.msi" -ArgumentList " /qn SSL_CERTIFICATE_OPTION=generate"

Если у вас есть купленный сертификат или серитфикат от Let’s Encrypt, установленный в системной хранилище сертификатов, то впишите его Thumbprint в аргументы установщика.

Get-ChildItem -Path Cert:LocalMachine\MY | Select-Object FriendlyName, Thumbprint

Start-Process -FilePath "C:\Users\Administrator\Downloads\wac.msi" -ArgumentList " /qn SME_THUMBPRINT=AA5B564B720ECA01340B1E9178261BB72E5550AF SSL_CERTIFICATE_OPTION=installed"

После установки веб интерфейс консоли Honolulu можно открыть, перейдя по адресу:

https://ip_сервера:6516

или с помощью значка на рабочем столе который залинкован на:

"C:\Program Files\Windows Admin Center\SmeDesktop.exe"

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

С помощью кнопки Add можно добавить

• Отдельный сервер (Server Manager)

• Отказоустойчивый кластер (Failover Cluster Manager)

• Кластер Hyper-V (Hyper-Converged Cluster Manager)

Saturday 9 October 2021

Управление Windows Defender с помощью PowerShell.

Всем привет.

Сегодня под финал пройдемся по управлению Windows Defender с помощью PowerShell в описании Сергея Яремчука. Оригинал был напечатан в журнале "Системный администратор", № 2015/4.

Начиная с Windows 8 продукт Windows Defender (Защитник Windows) получил функционал Microsoft Security Essentials и из простейшего сканера шпионских программ теперь стал полнофункциональным антивирусным решением, способным обнаруживать широкий спектр потенциально вредоносного ПО.

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

На данный момент Windows Defender входит в состав клиентских версий ОС и Windows Server 2012 R2 в варианте установки Server Core и включен по умолчанию. В недавно появившейся бета-версии Windows Server его можно установить как компонент (Install-WindowsFeature-NameWindows-Server-Antimalware). Проверить статус работы службы можно, введя sc query Windefend.

Кроме GUI, настройки Windows Defender устанавливаются с помощью групповых политик (Computer Configuration - Admin Templates - Windows Components - Windows Defender). Кроме этого, в PowerShell 4.0 появился модуль Defender, состоящий из 11 командлетов. Просмотреть их список можно, введя комманду:

PS> Get-Command -Module Defender

Командлеты Get-MpComputerStatus и Get-MpPreference выводят данные о состоянии антивируса – версии антивируса и баз, включенные параметры, расписание, дату проверки и так далее. Все командлеты могут выполняться как локально, так и удаленно.

PS> $session = NewCimSession -ComputerName comp1

PS> Get-MpComputerStatus -CimSession $session

В настройках по умолчанию отключены IPS, проверка съемных дисков, email и некоторые другие. Для установки параметров используется командлет Set-MpPreference. Например, чтобы включить проверку внешних носителей, установим DisableRemovableDriveScanning в false (по умолчанию true):

PS> Set-MpPreference -DisableRemovableDriveScanning $false

Два командлета Add-MpPreference и Remove-MpPreference позволяют добавлять и удалять параметры. Наиболее часто они используются, чтобы исключить каталоги, процессы и файлы с определенным расширением из проверки. Например, исключим сканирование каталога с  временными файлами:

PS> Add-MpPreference -ExclusionPath C:\Temp

Для обновления баз следует применять командлет Update-MpSignature, по умолчанию используются настройки компьютера, но с помощью дополнительных параметров можно указать другие источники (сервер WSUS, сервер обновлений Microsoft, MMPC или каталог). В случае применения для обновлений каталога следует скачать обновления с Microsoft Malware Protection Center (http://www.microsoft.com/security/portal/mmpc) и положить в папку, на которую указать с помощью SignatureDefinitionUpdateFileSharesSources:

PS> Set-MpPreference -SignatureDefinitionUpdateFileSharesSources \\server\update

PS> Update-MpSignature -UpdateSource FileShares

Запуск сканирования осуществляется командлетом Start-MpScan, по умолчанию производится т.н. быстрая проверка только критически важных файлов. Тип проверки можем изменить с помощью параметра ScanType - FullScan, QuickScan или СustomScan.

PS> Start-MpScan -ScanType FullScan

Два параметра – Get-MpThreat и Get-MpThreatDetection – позволяют просмотреть информацию по угрозам, обнаруженным на компьютере. Командлет Remove-MpThreat позволяет удалить активные угрозы:

PS> Get-MpThreat

PS> Remove-MpThreat

Список известных Windows Defender угроз выводит Get-MpThreatCatalog.

PS> Get-MpThreatCatalog | select SeverityID, ThreatName

Успехов.

Friday 8 October 2021

Настройка Windows Firewall с помощью PowerShell.

Всем привет.

Сегодня пройдемся по Firewall с помощью PowerShell в описании Сергея Яремчука. Оригинал был напечатан в журнале "Системный администратор", № 2014/12.

В будущих релизах Windows Microsoft планирует отказаться от использования утилит netsh; для настройки сетевых функций и Windows Firewall будут применяться только командлеты PowerShell.

В Windows Server 2012 и Windows 8 доступен соответствующий модуль NetSecurity, содержащий 27 командлетов для настройки брандмауэра Windows в режиме повышенной безопасности WFAS (Windows Firewall with Advanced Security), охватывающих все возможные настройки и полностью заменяющих netsh advfirewall.

Просмотреть их список очень просто:

PS> Import-Module NetSecurity

PS> Get-Command -Noun "*Firewall*"

Узнать подробную информацию по работе каждого можно с помощью командлета Get-Help. Знакомство упрощает то, что названия командлетов пересекаются с командами netsh. Разберем некоторые примеры. Смотрим текущие установки профилей:

PS> Get-NetFirewallProfile

Включаем все профили (Domain, Public, Private).

PS> Set-NetFirewallProfile -All -Enabled True

Вместо параметра All можем указать конкретный профиль:

PS> Set-NetFirewallProfile -Profile Domain -Enabled True

Установим для профиля Domain блокировку всех входящих как действие по умолчанию:

PS> Set-NetFirewallProfile –Name Domain –DefaultInboundAction Block


Командлет Set-NetFirewallProfile позволяет настроить все параметры профиля: журналирование, добавить IP, порт, протокол и многое другое. Например, можем исключить Ethernet-интерфейс из профиля Public, добавляем правило:

PS> Set-NetFirewallProfile -name Public -DisabledInterfaceAliases Ethernet

Все манипуляции с правилами производятся с помощью семи командлетов *-NetFirewallRule. Для просмотра установленных правил используем командлет Get-NetFirewallRule. Например, выберем только блокирующие правила:

PS> Get-NetFirewallRule -Enabled true -Action block

Создадим правило, блокирующее исходящие соединения для IE в двух профилях.

PS> New-NetFirewallRule -Program "C:\Program Files\Internet Explorer\iexplore.exe" -Action Block -Profile Domain, Private -DisplayName "Block IE" -Description "Block IE" -Direction Outbound

PS> New-NetFirewallRule -DisplayName "Allow Inbound OpenVPN Client" -Direction Inbound -LocalPort 1194 -Protocol UDP -Action Allow

Правило может содержать и прочие атрибуты – порт, протокол, интерфейс, направление, путь к программе и т.п. Для примера добавим к правилу протокол, порт и IP удаленной и локальной системы.

PS> Set-NetFirewallRule -DisplayName "Block IE" -Protocol TCP -RemotePort 80 -RemoteAddress "192.168.1.1" -LocalAddress "192.168.1.10"

Смотрим команды:

PS> Get-NetFirewallRule -DisplayName “*IE*”

Отключается правило очень просто:

PS> Disable-NetFirewallRule -DisplayName "Block IE"

Для удаления используется командлет RemoveNetfirewall-Rule. Параметр -DisplayGroup позволяет группировать правила, чтобы в дальнейшем задавать параметры сразу всем правилам в группе.

PS> Set-NetFirewallRule -DisplayGroup "Windows Firewall Remote Management" -Enabled True


Thursday 7 October 2021

Настройки сети с помощью PowerShell.

Всем привет.

Я решил сделать записи на память по использованию PowerShell для администрирования Windows сети, Firewall и Defender в описании Сергея Яремчука.

Сегодня пройдемся по настройкам сети. Оригинал был напечатан в журнале "Системный администратор", № 2014/6.

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

С выходом PowerShell 4.0 модуль Net TCP/IP пополнился новыми командлетами, которые упростили настройку сети. За настройку параметров интерфейса вместо netsh interface ipv4 отвечают два командлета – New-NetIPAddress и Set-NetIPAddress, синтаксис у них схож, оба могут создавать новые настройки, но второй позволяет модифицировать текущие.

New-NetIPAddress -InterfaceAlias Ethernet -IPv4Address 192.168.0.2 -DefaultGateway 192.168.0.1

Set-NetIPAddress -InterfaceAlias Ethernet -PrefixLength 24

Вместо InterfaceAlias удобнее использовать индекс InterfaceIndex, его легко узнать, просмотрев вывод Get-NetIPInterface. Для удаления настроек IP используется командлет Remove-NetIPAddress.

Remove-NetIPAddress -IPAddress 192.168.0.2

Для корректной работы нам понадобится настроить адреса DNS-серверов, это решается с помощью командлета Set-DNSClientServerAddress (из состава модуля DNSClient):

Get-DnsClientServerAddress

Set-DNSClientServerAddress -InterfaceIndex 12 -ServerAddresses "192.168.0.1","8.8.8.8"

Текущие сетевые настройки можно узнать из выводов Get-NetIPAddress и Get-NetIPConfiguration (алиас gip), являющихся аналогами ifconfig. Например, Get-NetIPConfiguration выводит полную информацию о сетевых настройках: IP-адреса интерфейса и шлюза и DNS. Дополнительный параметр -Detailed позволит получить больше данных. Команда route долго использовалась для просмотра и настройки маршрутов, теперь ему на замену идет набор командлетов *-NetRoute, очень простых и понятных в использовании. Получаем текущие настройки маршрутизации и устанавливаем новый маршрут по умолчанию.

Get-NetRoute

New-NetRoute -DestinationPrefix "0.0.0.0/0" -NextHop "192.168.0.1" -InterfaceIndex 12

Чтобы проверить доступность определенного узла, PowerShell предлагает два командлета: Test-Connection и Test-NetConnection (сокращенно tnc). Первый входит в основной модуль PowerShell Management и для проверки использует ICMP (в работе напоминает обычный ping).

Второй входит в состав модуля NetTCPIP и обладает большими возможностями, позволяя проверить доступность определенного порта или системы с разных ПК. Например, проверим подключение к SRV01.example.org с двух систем:

Test-NetConnection -ComputerName SRV01.example.org -source localhost, SRV02.example.org

Чтобы получить больше информации достаточно добавить ключ -InformationLevel Detailed, ключ -TraceRoute позволит произвести трассировку подключения (аналог tracert). Для проверки, слушается ли порт, следует указать его номер (поддерживается четыре строковых параметра – SMB, HTTP, RDP и PING). Если ввести команду без указания узла, будет проверено подключение к Интернету. 

Test-NetConnection -Port 80 -InformationLevel Detailed

Количество решаемых задач может быть очень велико, для каждых условий будут оптимальны разные настройки TCP, а установки по умолчанию эффективны не всегда. Для тюнинга TCP предназначен набор командлетов *-NetTCPSetting и *-NetTransportFilter.

С помощью Get-NetTCPSetting получаем список преднастроек. По умолчанию SettingName установлено в значение Automatic, и настройки пусты. Зато существенно различаются между собой InternetCustom, DatacenterCustom, Compat, Datacenter и Internet, назначение которых понятно и без объяснений. Но редактировать можно только профили InternetCustom и DatacenterCustom. Какие подключения будет использовать профиль, можно выяснить, выполнив Get-NetTCPConnections.

Включим расширения IP ECN (Explicit Congestion Notification, явное уведомление о  перегруженности, см. RFC 3168) и протокол DCTCP (Data Center TCP) для DatacenterCustom.

Set-NetTCPSetting -SettingName DatacenterCustom -ECNCapability Enabled -CongestionProvider DCTCP

Чтобы применить параметр TCP к порту с номером или диапазону IP-адреса назначения, надо создать транспортный фильтр с помощью командлета New-NetTransportFilter.

New-NetTransportFilter –SettingName DatacenterCustom –DestinationPrefix 172.16.0.0/16

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


Wednesday 6 October 2021

Выбор ядра по умолчанию в CentOS.


Всем привет.

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

grubby --default-kernel

Результат:

/boot/vmlinuz-4.18.0-80.11.2.el8_0.x86_64

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

grubby --default-index

Посмотреть список доступных:

ls -l /boot/vmlinuz-*

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

grubby --info /boot/vmlinuz-4.18.0-80.11.2.el8_0.x86_64

index=0

kernel="/boot/vmlinuz-4.18.0-80.11.2.el8_0.x86_64"

args="ro net.ifnames=0 biosdevname=0 crashkernel=auto resume=/dev/mapper/cl_centos--8-swap rd.lvm.lv=cl_centos-8/root rd.lvm.lv=cl_centos-8/swap rhgb quiet $tuned_params"

root="/dev/mapper/cl_centos--8-root"

initrd="/boot/initramfs-4.18.0-80.11.2.el8_0.x86_64.img $tuned_initrd"

title="CentOS Linux (4.18.0-80.11.2.el8_0.x86_64) 8 (Core)"

id="a674259de3b90440a00f4c61ff4fde63-4.18.0-80.11.2.el8_0.x86_64"

Выбрать ядро для загрузки можно указав имя файла используя:

grubby --set-default /boot/vmlinuz-4.18.0-80.11.2.el8_0.x86_64

Или можно указать индекс, посмотреть имеющиеся индексы можно так:

grubby --info /boot/vmlinuz-4.18.0-80.11.2.el8_0.x86_64 | grep index

После чего указать grubby требуемый:

grubby --set-default-index=1 

У меня получилось следующее:


Успехов.

Tuesday 5 October 2021

Напомни мне про пароль.

Всем привет.

Еще с выходом в свет Windows 2008 администраторы столкнулись с маленькой, но неприятной проблемой: оповещение об истечении срока действия пароля пользователя стало сиротливо появляться в самом неприметном правом углу экрана. С выходом Windows 10 его появление вообще приобрело случайный момент. Отсюда и смена паролей в последний момент под аккомпанемент отказов доступа, и негодование, почему вдруг перестал работать VPN, и что с этим делать в командировке или на удаленке. Конечно, не проблема года, но явление назойливое, эмоциональное и, как следствие, неприятное. 

Поэтому пишем Powershell скрипт. После анализа первоисточника я оставил у себя нижеследующий код: 

Import-Module ActiveDirectory

# Задаем пороги срабатывания уведомлений в днях за 5 дней и за 1. 

# Чаще нет смысла, пользователь либо реагирует либо бесполезно.)

$WarnDate = (get-date).adddays(5).ToLongDateString()

$AlarmDate = (get-date).adddays(1).ToLongDateString()


# Настройка тела сообщения напоминания

$MailSender = 'Monitor@forza.com'

$Subject    = 'Увага! Термін дії Вашого паролю закінчується.'

$EmailStub1 = ", термін дії Вашого паролю закінчується "

$EmailStub2 = "`nБудь ласка, подбайте про зміну вашого паролю. Або зверніться в сервіс-деск."

$EmailStub3 = "`n`nЦе нагадування створено автоматично, не відповідайте на нього."

$SmtpServer = 'mail.forza.com'


# Получаем список пользователей домена которые:

# не заблокированные ― Enabled -eq $True.

# у кого пароль имеет срок жизни ― PasswordNeverExpires -eq $False

# у кого вообще не установлен пароль ― PasswordLastSet -gt 0

# у кого есть емаил ― EmailAddress -like '*'.


$users = Get-ADUser -filter {Enabled -eq $True -and PasswordNeverExpires -eq $False -and PasswordLastSet -gt 0 -and EmailAddress -like '*'} `

 -Properties "Name", "EmailAddress", "msDS-UserPasswordExpiryTimeComputed" | Select-Object -Property "Name", "EmailAddress", `

 @{Name = "PasswordExpiry"; Expression = {[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed").tolongdatestring() }}


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

$users | Export-Csv "d:\sources\Users.csv" -Encoding UTF8

# Задаем имя списка для тех кому будет отослано сообщение:

$filename5 = "d:\sources\Users5.csv"

$filename1 = "d:\sources\Users1.csv"


# Проверяем сроки действия и отправляем уведомления, и фиксируем ФИО пользователей в файлах.

foreach ($user in $users) {

     if ($user.PasswordExpiry -eq $WarnDate) {

         $EmailBody =  $user.name, $EmailStub1, $WarnDate, $EmailStub2, $EmailStub3 -join ' '

         $smtp = New-Object net.mail.smtpclient($SmtpServer)

         $smtp.Send($MailSender, $user.EmailAddress, $Subject, $EmailBody)

         $user.name + ', ' + $WarnDate | Out-File $filename5 -Append -Force -Encoding UTF8


    }

     elseif ($user.PasswordExpiry -eq $AlarmDate) {

         $EmailBody =  $user.name, $EmailStub1, $AlarmDate, $EmailStub2, $EmailStub3 -join ' '

         $smtp = New-Object net.mail.smtpclient($SmtpServer)

         $smtp.Send($MailSender, $user.EmailAddress, $Subject, $EmailBody)

         $user.name + ', ' + $WarnDate | Out-File $filename1 -Append -Force -Encoding UTF8

     }

    else {}

 }

Успехов.

Monday 4 October 2021

Шпаргалка по SCCM.


Всем привет.

Моя шпаргалка по подключению к sccm03.forza.com - моему серверу SCCM.

Необходимо иметь доступ на сетевом уровне с сервера  sccm03.forza.com в сторону контроллеров домена компании по портам tcp\udp 49152-65535,135,445,3268,3269.

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

В ветке реестра 

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate

параметры WUServer и WUStatusServer не должны назначаться вручную и не затираться политиками домена.

Выполняем запрос 

REG QUERY "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" -v WUServer

REG QUERY "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" -v WUStatusServer

Например у меня оба значения ключей: http://sccm03.forza.com:8530

Сводка по портам для работоспособности SCCM:

SCCM Management Point:

Client -> sccm03.forza.com 

tcp 80,443,10123

SCCM Distribution Point:

Client -> sccm03.forza.com 

tcp 80,443,445 udp:63000-64000

SCCM SUP (Software Update Point):

Client ->  sccm03.forza.com 

tcp 80, 443, 8530, 8531

SCCM сlient push:

sccm03.forza.com -> Client 

tcp 135, 445

ICMP:

sccm03.forza.com -> Client

Доступ к центрам сертификации (функционал PKI + доступ CRL):

Client -> pki01.forza.com 

tcp 80,443, 135, 49152-65535 udp 135, 49152-65535

Удаленный помошник SCCM (SCCM Remote Control):

Console SCCM -> Client 

tcp 2701,3389 udp 3389


Saturday 2 October 2021

Используем Flexible NetFlow.

Всем привет.

Мы уже знаем что NetFlow позволяет нам отслеживать потоки (flow) трафика в сети. Мы можем использовать эту информацию для решения таких проблем, как обнаружение узких мест, определения того, какие приложения используются, какую пропускную способность они используют и т.д.

Flexible NetFlow - это гибкий инструмент мониторинга трафика для задач оптимизации использования ресурсов, планирования производительности сети, определения оптимального уровня обеспечения качества обслуживания (QoS), а также для обнаружения событий сетевой безопасности.

Преимущества Cisco IOS Flexible NetFlow:

  • Гибкость и масштабируемость данных о потоках по сравнению с традиционным NetFlow;
  • Тонкие настройки идентификации трафика;
  • Возможность сосредоточиться и контролировать конкретное сетевое поведение;
  • Возможность отслеживать более широкий спектр информации о пакетах, создавая новую информацию о поведении сети;
  • Улучшенное обнаружение сетевых аномалий и безопасности;
  • Объединение нескольких технологий учета в один учетный механизм.

Компоненты Flexible NetFlow:

  • Запись потока (Flow record) - потоки определяются множеством различных фрагментов информации о трафике; информация, используемая Flexible Netflow, может быть определена в пользовательских или стандартных записях.
  • Экспортер потока (Flow exporter) -  сервер/ы, на который/которые будет экспортироваться информация о потоках.
  • Монитор потока (Flow monitor) - компонент, который используется для обеспечения фактического мониторинга трафика на настроенном интерфейсе. Когда монитор потока применяется к интерфейсу, создается кэш монитора потока, который используется для сбора трафика на основе ключевых (key) и неключевых (nonkey) полей в настроенной записи.
  • Шаблон потока (Flow Sampler) используется, когда имеется большой объем трафика для анализа, который потенциально может повлиять на производительность контролируемого устройства. В этой ситуации можно использовать шаблон потока, чтобы ограничить количество пакетов, которые будут анализироваться монитором потока. Например, 1 из каждых 2 пакетов может быть захвачен и проанализирован.

Пользовательские определения по практикуму от SEDICOMM:

CUSTOM-OUT - пользовательская запись исходящего потока

COLLECTOR-HOST - экспортер потока

INBOUND-MONITOR - монитор входящего потока

OUTBOUND-MONITOR - монитор исходящего потока

1. Итак, создадим два вида записей потока: стандартный (ipv4 original-input) и пользовательский (CUSTOM-OUT). Для создания пользовательской записи необходимо выполнить настройки:

flow record CUSTOM-OUT

description Custom Flow Record for outbound traffic

# key items

match ipv4 destination address

match transport destination-port


# no key items

collect counter bytes

collect counter packets

exit


Проверяем:

show flow record CUSTOM-OUT

Friday 1 October 2021

Про Algorius Net Viewer.

Всем привет.

Коллеги дали попробовать крутой инструмент - Algorius Net Viewer.

Algorius Net Viewer - это программа, которая позволит администраторам сети просматривать, управлять, контролировать, проводить инвентаризацию и получать уведомления на происходящие события. 

Одна из его основных функций - визуализация! Благодаря этому программному обеспечению мы можем удобно просматривать инфраструктуру нашей сети и легко перемещаться по ней. В этом смысле у нас есть редактор схем компьютерных сетей, и мы даже можем легко создать карту нашей сети. Кроме того, он позволяет создавать географические карты, которые позволяют размещать устройства с географической привязкой и четко видеть их географическое положение (OpenStreetMap), а также импортировать и экспортировать документ формата MS Visio.

Еще одна его функция - мониторинг с визуальным отслеживанием маршрута, в котором с интегрированным Тraceroute он покажет нам маршрут к устройству визуально на карте и в виде текста. Он также позволяет сканировать порты, а с помощью встроенной утилиты Wake-On-Lan мы можем включать компьютеры удаленно. Встроенные браузеры SNMP и WMI позволяют просматривать детальную информацию об устройствах, таблицы сетевых интерфейсов, соединений, т.е. упрощается выбор OID и написание WQL выражений для настройки мониторинга.


Algorius Net Viewer осуществлет мониторинг, используя различные протоколы и технологии: ICMP, UDP, TCP, SNMP, WMI, PowerShell, SSH, ARP, DNS, NETBIOS, HTTP(s), FTP(s), SQL, POP3, IMAP, SMTP. Это дает возможность контролировать практически любой аспект работы служб, серверов и других сетевых устройств.

Основные способы опроса (SNMP, PING, WMI) реализованы, как плагины на базе общего API. Это позволяет сторонним разработчикам расширять функционал приложения, создавая дополнительные плагины, адаптированные под собственные потребности.

Версия на печать

Популярное