Веб-версияОткрыть в Telegram
ССистемный Администратор Windows

Системный Администратор Windows

@win_sysadmin · канал · Технологии · в индексе с 2026-07-19
3 093подписчиков−7 за неделю
239постов в индексе
С
Системный Администратор Windows
👋 Привет, админы! Сегодня расскажу о небольшом, но полезном трюке для мониторинга дисков в Windows через PowerShell. Иногда места на сервере внезапно становится критически мало, и если не отследить вовремя - можно получить падение сервисов или невозможность сохранить логи. Get-PSDrive -PSProvider FileSystem | Select-Object Name,@{n="FreeGB";e={[math]::Round($_.Free/1GB,2)}},@{n="Used%";e={[math]::Round(100-($_.Free/$_.Used+ $_.Free)*100,2)}} Он показывает: - Имя диска - Свободное место (ГБ) - Процент занятости Можно добавить в планировщик задач и получать отчёт на почту или писать лог. А если подключить это к мониторингу (например, через Zabbix/PRTG), то сервер сам предупредит о критическом заполнении. 👉 @win_sysadmin
13 · 1.4K ·
С
Системный Администратор Windows
👋 Админы, всем доброго понедельника! Сегодня напомню про недооценённый инструмент - PowerShell-диски (PSDrive). Это логические “диски” к разным хранилищам: файловая система (C:), реестр (HKCU:/HKLM:), сертификаты (Cert:) и т.д. С ними удобно навигироваться одинаково, одной логикой командлетов Location. 🧭 Базовые команды: # Показать все доступные PSDrive Get-PSDrive # Отфильтровать только файловую систему Get-PSDrive -PSProvider FileSystem # Навигация по реестру как по папкам Set-Location HKLM:\SOFTWARE Push-Location .\Microsoft Get-Location (И да, Get-PSDrive покажет и провайдеры вроде Registry/Certificate/Environment - удобно для обзора). 🧩 Создание своих “дисков”: # Монтируем удобный ярлык на папку New-PSDrive -Name Tools -PSProvider FileSystem -Root "C:\Admin\Tools" # Короткий путь к важной ветке реестра New-PSDrive -Name CV -PSProvider Registry -Root HKLM:\Software\Microsoft\Windows\CurrentVersion ⚠️ Такие диски живут в текущей сессии. Хотите постоянно - добавьте New-PSDrive в профиль ($PROFILE). 🧹 Удаление: Remove-PSDrive -Name Tools Нельзя удалить диск, если вы “на нём” (сначала Set-Location в другое место). 💡 Лайфхаки из практики: - Держите короткие алиасы на длинные ветки реестра для быстрых правок. - Для огляда системы делайте Get-PSDrive | Format-Table Name,Provider,Root -Auto. - В профиле храните свои стандартные монтирования для админских задач. 👉 @win_sysadmin
9 · 1.2K ·
С
Системный Администратор Windows
Ссылка
нажмите — покажем
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https://max.ru/bash_srv Bash Советы https://max.ru/sysadminof Книги для админов, полезные материалы https://max.ru/i_odmin_book Библиотека Системного Администратора https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др. https://max.ru/tipsysdmin Типичный Сисадмин 1C разработка 📌 https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С Программирование C++📌 https://max.ru/cpp_lib Библиотека C/C++ разработчика Программирование Go📌 https://max.ru/golang_lib Библиотека Go (Golang) разработчика Программирование React📌 https://max.ru/react_lib React Программирование Python 📌 https://max.ru/python_of Python академия. https://max.ru/BookPython Библиотека Python разработчика Java разработка 📌 https://max.ru/bookjava Библиотека Java разработчика GitHub Сообщество 📌 https://max.ru/githublib Интересное из GitHub Базы данных (Data Base) 📌 https://max.ru/database_info Все про базы данных Фронтенд разработка 📌 https://max.ru/frontend_1 Подборки для frontend разработчиков Библиотеки 📌 https://max.ru/programmist_of Книги по программированию https://max.ru/proglb Библиотека программиста https://max.ru/bfbook Книги для программистов Программирование 📌 https://max.ru/bookflow Лекции, видеоуроки, доклады с IT конференций https://max.ru/itmozg Программисты, дизайнеры, новости из мира IT https://max.ru/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻 Шутки программистов 📌 https://max.ru/itumor Шутки программистов Защита, взлом, безопасность 📌 https://max.ru/thehaking Канал о кибербезопасности https://max.ru/xakkep_1 Хакер Free Книги, статьи для дизайнеров 📌 https://max.ru/odesigners Статьи, книги для дизайнеров Математика 📌 https://max.ru/Pomatematike Канал по математике https://max.ru/phismat_1 Обучающие видео, книги по Физике и Математике Вакансии 📌 https://max.ru/progjob Вакансии в IT Мир технологий 📌 https://max.ru/m
2 · 945 ·
С
Системный Администратор Windows
👋 Всем админам доброго утра! Продолжаю тему теневых копий в Windows - на этот раз чисто PowerShell-практика. Теневые копии (VSS) не раз спасали меня, когда нужно быстро вернуть удалённый файл без полноценного восстановления из бэкапа. Ниже - мой минималистичный «набор выживальщика»: создать снапшот, смонтировать, вытащить файл, почистить и настроить расписание. 🚀 Базовые операции VSS через PowerShell Создать теневую копию тома C: # PS 5.1/7+ (через CIM) Invoke-CimMethod -ClassName Win32_ShadowCopy -MethodName Create ` -Arguments @{ Volume = 'C:\'; Context = 'ClientAccessible' } | Out-Null Список доступных теневых копий: Get-CimInstance Win32_ShadowCopy | Sort-Object InstallDate -Descending | Format-Table ID, VolumeName, InstallDate, ClientAccessible, DeviceObject -Auto Смонтировать самую свежую копию в папку (удобно лазить по снапшоту проводником): $sh = Get-CimInstance Win32_ShadowCopy | Sort-Object InstallDate -Desc | Select-Object -First 1 $mount = 'C:\ShadowMounts\C_latest' New-Item -ItemType Directory -Path $mount -Force | Out-Null $dev = ($sh.DeviceObject.TrimEnd('\')) + '\' cmd /c "mklink /d `"$mount`" `"$dev`"" # Готово: открывайте C:\ShadowMounts\C_latest Вытянуть конкретный файл из последней копии (без монтирования): $path = 'C:\Data\report.xlsx' # что хотим вернуть $sh = Get-CimInstance Win32_ShadowCopy | Sort-Object InstallDate -Desc | Select-Object -First 1 $rel = $path -replace '^[A-Za-z]:\\','' # убрать "C:\" $src = Join-Path ( ($sh.DeviceObject.TrimEnd('\')) + '\' ) $rel Copy-Item $src $path -Force Удалить конкретную теневую копию: $sh | Remove-CimInstance 🧠 Управление хранилищем теневых копий Проверить и ограничить размер: vssadmin list shadowstorage vssadmin resize shadowstorage /For=C: /On=C: /MaxSize=20% 👉 Если места мало - VSS начнёт сносить самые старые копии. Планируйте «MaxSize». ⏰ Планирование ежедневного снапшота (02:00) $cmd = 'powershell.exe' $arg = '-NoProfile -WindowStyle Hidden -Command
22 · 1.2K ·
С
Системный Администратор Windows
👋 Всем админам доброго утра! Сегодня разберем автоматическое обновление групповых политик (GPO) на клиентах без необходимости ждать стандартного обновления (которое бывает раз в 90 минут + случайное отклонение до 30 минут). 🔥 Если вам нужно срочно применить новую политику, используйте: gpupdate /force Но что, если нужно обновить политику на всех компьютерах домена сразу? Тут поможет PowerShell: Invoke-GPUpdate -Computer "ИмяКомпьютера" -RandomDelayInMinutes 0 А если нужно массово обновить политики на всех машинах в OU? Тогда можно так: Get-ADComputer -Filter * -SearchBase "OU=Computers,DC=domain,DC=local" | ForEach-Object { Invoke-GPUpdate -Computer $_.Name -RandomDelayInMinutes 0 -AsJob } 🔹 gpupdate /force - хорош для локального применения. 🔹 Invoke-GPUpdate - удобен для удаленного обновления GPO. 🔹 Комбинация с Get-ADComputer - идеальна для массового обновления в домене. 👉 @win_sysadmin
30 · 1.3K ·
С
Системный Администратор Windows
Фотография
нажмите — покажем
👋 Привет, админы! Сегодня разберем одну из самых неприятных ситуаций – когда пользователи жалуются, что их учетные записи блокируются без видимых причин. Разбираешься в логах – а там Event ID 4740 с минимумом информации. Что делать? 🔥 PowerShell спасает! Вот скрипт, который поможет быстро найти источник блокировки: $LockedUser = "[email protected]" # Замените на нужный аккаунт Get-WinEvent -LogName Security | Where-Object { $_.Id -eq 4740 -and $_.Message -match $LockedUser } | Select-Object TimeCreated, @{n="Источник";e={($_.Properties[1].Value)}} Этот код просканирует журнал безопасности, найдет все события 4740 (блокировка учетной записи) и покажет кто именно заблокировал пользователя. Если видите странные IP-адреса или подозрительные устройства – пора разбираться! 💡 Если хотите автоматически мониторить блокировки и получать уведомления, можно настроить Scheduled Task с этим скриптом или завязать на SIEM. 👉 @win_sysadmin
31 · 1.4K ·
С
Системный Администратор Windows
👋 Привет, админы! Сегодня разберем скрытых пожирателей ресурсов в Windows и как их быстро выявить. Бывает, сервер вроде бы работает, но периодически подтормаживает. CPU не загружен, RAM в норме, диск не трещит, а лаги есть. В таких случаях я первым делом проверяю скрытые потребители ресурсов, которых не видно в обычном диспетчере задач. 🔥 Вот парочка полезных команд в PowerShell, которые помогут найти виновника: 1️⃣ Процессы с аномально высоким потреблением дескрипторов (например, утечки в сервисах): Get-Process | Sort-Object -Property Handles -Descending | Select-Object -First 10 Если видите процесс с сотнями тысяч дескрипторов – это тревожный звоночек. 2️⃣ Проверка использования сети процессами (чтобы вычислить неожиданно болтливые службы): Get-NetTCPConnection | Group-Object -Property OwningProcess | Sort-Object Count -Descending | Select-Object -First 10 Выяснит, какие процессы держат максимум соединений. Особенно полезно, если сервер внезапно грузит сеть. 3️⃣ Файлы, которые держит процесс (можно отследить, кто блокирует файлы или грузит диск): Get-Process | Sort-Object -Property Handles -Descending | Select-Object -First 10 Это поможет найти виновника, если диск занят, но не ясно, кто именно активничает. 👉 @win_sysadmin
34 · 1.5K ·
С
Системный Администратор Windows
👋 Привет, админы! В небольших организациях часто бывает так: компьютер списали, из домена вывели, а учетку в AD забыли удалить. Со временем таких “осиротевших” записей становится всё больше - и вот уже список объектов в AD раздувается, мешает управлению и порождает бардак. Найти такие "забытые" объекты можно с помощью встроенного инструмента PowerShell. 📌 Скрипт ниже ищет компьютеры, которые не логинились в домен 90+ дней, сохраняет список в файл и отправляет его через SMTP: # Настройки $days = 90 $time = (Get-Date).AddDays(-$days) $exportPath = "C:\Scripts\StaleComputers.csv" # Поиск устаревших компьютеров $computers = Get-ADComputer -Filter {LastLogonDate -lt $time -and Enabled -eq $true} -Properties LastLogonDate | Select-Object Name, LastLogonDate, DistinguishedName # Экспорт в CSV $computers | Export-Csv -Path $exportPath -NoTypeInformation -Encoding UTF8 # Параметры SMTP $smtpServer = "smtp.yourdomain.local" $from = "[email protected]" $to = "[email protected]" $subject = "Отчет: Устаревшие учетные записи компьютеров" $body = "Во вложении список компьютеров, не входивших в домен более $days дней." # Отправка письма Send-MailMessage -From $from -To $to -Subject $subject -Body $body -SmtpServer $smtpServer -Attachments $exportPath ✅ Идеально запускать такой скрипт по расписанию через Task Scheduler раз в месяц! 👉 @win_sysadmin
34 · 1.5K ·
С
Системный Администратор Windows
👋 Привет, админы! Недавно нужно было срочно найти, кто и когда отключил службу Windows Defender на одном из серверов. В журнале событий куча мусора, стандартный просмотр через Event Viewer - то ещё удовольствие 😅 В таких случаях PowerShell - наше всё. Вот короткий и полезный скрипт, который спас меня: Get-WinEvent -LogName "System" -FilterXPath "*[System[Provider[@Name='Service Control Manager'] and (EventID=7036)]]" | Where-Object { $_.Message -like "*Windows Defender*" -and $_.Message -like "*stopped*" } | Select-Object TimeCreated, Message 📌 Что делает этот скрипт: - Фильтрует события 7036 - это смена состояния служб; - Ищет по ключевым словам в сообщении (stopped и Windows Defender); - Показывает, когда именно служба была остановлена. 🔥 Быстро, удобно и без GUI. Кстати, таким образом можно отслеживать отключения любых критичных сервисов. 👉 @win_sysadmin
18 · 1.4K ·
С
Системный Администратор Windows
👋 Привет, админы! Нужно было выключить группу компьютеров в конце дня, чтобы не гоняли лишнее электричество. Ручками заходить на каждый - удовольствие ниже среднего, поэтому сразу пошёл через PowerShell. 🔥 Вот скрипт, который пробегает по списку имен и выключает их удалённо: $computers = Get-Content "C:\Scripts\pc_list.txt" foreach ($pc in $computers) { try { Write-Host "Выключаю $pc..." -ForegroundColor Yellow Stop-Computer -ComputerName $pc -Force -ErrorAction Stop Write-Host "$pc выключен." -ForegroundColor Green } catch { Write-Host "Не удалось выключить $pc: $_" -ForegroundColor Red } } ✅ В файле pc_list.txt - просто список имен или IP адресов, по одному на строку. 💡 Не забудь, чтобы всё сработало, на удалённых ПК должна быть включена служба WMI и разрешён доступ через брандмауэр. И конечно, запускай от имени администратора. 👉 @win_sysadmin
18 · 1.2K ·
С
Системный Администратор Windows
Ссылка
нажмите — покажем
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https://max.ru/bash_srv Bash Советы https://max.ru/sysadminof Книги для админов, полезные материалы https://max.ru/i_odmin_book Библиотека Системного Администратора https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др. https://max.ru/tipsysdmin Типичный Сисадмин Excel лайфхак 📌 https://t.me/Excel_lifehack Excel лайфхак 1C разработка 📌 https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С Программирование C++📌 https://max.ru/cpp_lib Библиотека C/C++ разработчика Программирование Go📌 https://max.ru/golang_lib Библиотека Go (Golang) разработчика Программирование React📌 https://max.ru/react_lib React Программирование Python 📌 https://max.ru/python_of Python академия. https://max.ru/BookPython Библиотека Python разработчика Java разработка 📌 https://max.ru/bookjava Библиотека Java разработчика GitHub Сообщество 📌 https://max.ru/githublib Интересное из GitHub Базы данных (Data Base) 📌 https://max.ru/database_info Все про базы данных Фронтенд разработка 📌 https://max.ru/frontend_1 Подборки для frontend разработчиков Библиотеки 📌 https://max.ru/programmist_of Книги по программированию https://max.ru/proglb Библиотека программиста https://max.ru/bfbook Книги для программистов Программирование 📌 https://max.ru/bookflow Лекции, видеоуроки, доклады с IT конференций https://max.ru/itmozg Программисты, дизайнеры, новости из мира IT https://max.ru/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻 Шутки программистов 📌 https://max.ru/itumor Шутки программистов Защита, взлом, безопасность 📌 https://max.ru/thehaking Канал о кибербезопасности https://max.ru/xakkep_1 Хакер Free Книги, статьи для дизайнеров 📌 https://max.ru/odesigners Статьи, книги для дизайнеров Математика 📌 https://max.ru/Pomatematike Канал по математике https://max.ru/phismat_1 Обучающие видео, книги по Физике и Математике Вакансии 📌 https://max.
2 · 1.1K ·
С
Системный Администратор Windows
👋 Привет, админы! Есть очень простой и полезный трюк, который помогает выявить подозрительные подключения к вашему Windows-серверу - особенно актуально, если сервер доступен извне. 🔥 Проверить активные входящие подключения можно командой: Get-NetTCPConnection -State Established | Where-Object { $_.RemoteAddress -ne '127.0.0.1' } | Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort, State, OwningProcess | Sort-Object -Property RemoteAddress А чтобы узнать, какой процесс стоит за каждым подключением, дополним это: Get-NetTCPConnection -State Established | Where-Object { $_.RemoteAddress -ne '127.0.0.1' } | ForEach-Object { $proc = Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue [PSCustomObject]@{ RemoteAddress = $_.RemoteAddress RemotePort = $_.RemotePort LocalPort = $_.LocalPort ProcessName = $proc.ProcessName PID = $_.OwningProcess } } | Sort-Object RemoteAddress 📌 Этот способ помогает быстро выявить: - необычные подключения к RDP или кастомным портам; - неизвестные процессы, которые “висят” в сети; - потенциальный бэкдор или троян. Поставьте это на регулярный мониторинг через таск или скрипт с логом в файл. 👉 @win_sysadmin
30 · 1.5K ·
С
Системный Администратор Windows
👋 Привет, админы! Как быстро понять, кто и когда логинился на сервер или важную машину? Особенно если подозрения на взлом или кто-то заходит в неурочное время (хотя сам так делаю, как правило ночью). Данный PowerShell-скрипт вытащит логи входа в систему (Event ID 4624) из журнала безопасности: Get-WinEvent -FilterHashtable @{ LogName = 'Security'; Id = 4624; StartTime = (Get-Date).AddDays(-1) } | ForEach-Object { $xml = [xml]$_.ToXml() [PSCustomObject]@{ TimeCreated = $_.TimeCreated AccountName = $xml.Event.EventData.Data | Where-Object {$_.Name -eq "TargetUserName"} | Select-Object -ExpandProperty '#text' IPAddress = $xml.Event.EventData.Data | Where-Object {$_.Name -eq "IpAddress"} | Select-Object -ExpandProperty '#text' LogonType = $xml.Event.EventData.Data | Where-Object {$_.Name -eq "LogonType"} | Select-Object -ExpandProperty '#text' } } | Where-Object { $_.AccountName -ne "ANONYMOUS LOGON" -and $_.LogonType -eq "10" } | Sort-Object TimeCreated 📌 LogonType = 10 - это удалённый интерактивный вход (RDP). 📌 Можно заменить на 2, если нужен локальный интерактивный логон. 📌 Или убрать фильтр, чтобы увидеть всё. Полезно для расследований, мониторинга активности админов, а ещё, если нужно зафиксировать "кто заходил ночью" 😅 (главное на себя не выйти 😂) 👉 @win_sysadmin
39 · 1.5K ·
С
Системный Администратор Windows
👋 Привет, админы! Сегодня покажу, как быстро найти и перезапустить зависший сервис через PowerShell. 📌Бывают случаи, когда сервис вроде как "работает", статус Running, но по факту не отвечает или не выполняет свои задачи. Такое бывает с агентами резервного копирования, антивирусами и даже SQL Server. Ниже скрипт, который мне помогает выявить такие "зомби-сервисы" и перезапустить их: $serviceName = "Имя_сервиса" $svc = Get-Service -Name $serviceName if ($svc.Status -eq "Running") { $process = Get-WmiObject Win32_Service | Where-Object { $_.Name -eq $serviceName } if ($process.ProcessId -ne 0) { Write-Host "Сервис запущен с PID $($process.ProcessId). Перезапускаем..." Restart-Service -Name $serviceName -Force } else { Write-Host "PID не найден. Возможна проблема – проверь вручную!" } } else { Write-Host "Сервис не запущен. Статус: $($svc.Status)" } 💡 Это особенно полезно на тех серверах, где нет стороннего мониторинга, а время реагирования критично. 👉 @win_sysadmin
13 · 1.5K ·
С
Системный Администратор Windows
👋 Привет, админы! Как массово проверить статус служб на нескольких серверах? Причём не просто глянуть, работают или нет, а убедиться, что определённые критически важные сервисы (типа w32time, WinRM, TermService) действительно в состоянии Running. Ниже собственно скрипт $servers = @("server1", "server2", "server3") $servicesToCheck = @("w32time", "WinRM", "TermService") foreach ($server in $servers) { Write-Host "🔍 Проверка $server" -ForegroundColor Cyan foreach ($service in $servicesToCheck) { $status = Get-Service -ComputerName $server -Name $service -ErrorAction SilentlyContinue if ($status.Status -eq 'Running') { Write-Host "$service: OK" -ForegroundColor Green } else { Write-Host "$service: НЕ РАБОТАЕТ!" -ForegroundColor Red } } Write-Host "" } Удобно, когда нужно быстро прогнать по десятку машин. 👉 @win_sysadmin
8 · 1.4K ·
С
Системный Администратор Windows
👋 Привет, админы! Нужно было настроить автологин для одного стендового сервера в изолированной сети - без домена, без пользователей, просто чтобы поднимался нужный софт после перезагрузки. Решается это через редактирование реестра: $RegPath = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" Set-ItemProperty -Path $RegPath -Name "AutoAdminLogon" -Value "1" Set-ItemProperty -Path $RegPath -Name "DefaultUsername" -Value "UserName" Set-ItemProperty -Path $RegPath -Name "DefaultPassword" -Value "UserPassword" Set-ItemProperty -Path $RegPath -Name "DefaultDomainName" -Value "$env:COMPUTERNAME" ⚠️ Обратите внимание: пароль хранится в открытом виде в реестре (DefaultPassword), поэтому использовать это стоит только в безопасной среде. 🛡️ Есть ещё один способ - через netplwiz, но он не автоматизируется скриптами. А если хотите чуть безопаснее — можно использовать специальные учетные записи без доступа к сети и минимальными правами. 🔄 После внесения изменений — либо ребут, либо shutdown /r /t 0 для применения. 👉 @win_sysadmin
11 · 1.4K ·
С
Системный Администратор Windows
👋 Привет, админы! Сегодня покажу, как отключить автоматический вход в Windows, если его кто-то однажды настроил (и забыл). 🔧 Всё просто - правим те же ключи в реестре: $RegPath = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" Set-ItemProperty -Path $RegPath -Name "AutoAdminLogon" -Value "0" Remove-ItemProperty -Path $RegPath -Name "DefaultPassword" -ErrorAction SilentlyContinue Если хотите полностью зачистить следы, можно ещё убрать DefaultUsername и DefaultDomainName, особенно если вход теперь идёт по другим учеткам или через домен: Remove-ItemProperty -Path $RegPath -Name "DefaultUsername" -ErrorAction SilentlyContinue Remove-ItemProperty -Path $RegPath -Name "DefaultDomainName" -ErrorAction SilentlyContinue 🎯 После этого автологин не будет срабатывать, и пользователь снова увидит окно входа. Если нужно массово проверить, включен ли автологин на серверах, можно пробежаться скриптом по списку машин и вытащить AutoAdminLogon: Invoke-Command -ComputerName (Get-Content servers.txt) -ScriptBlock { Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" -Name "AutoAdminLogon" } 👉 @win_sysadmin
11 · 1.5K ·
С
Системный Администратор Windows
👋 Привет, админы! Если вдруг замечаете странную активность по RDP - сессии отваливаются, логов много, сервер грузится - самое время проверить, кто брутфорсит. Вот быстрый способ вытащить неудачные попытки входа по RDP через события: Get-WinEvent -FilterHashtable @{ LogName = 'Security' Id = 4625 } | Where-Object { $_.Properties[10].Value -eq '10' # Logon Type 10 = RDP } | Select-Object TimeCreated, @{Name='Username';Expression={$_.Properties[5].Value}}, @{Name='IP';Expression={$_.Properties[18].Value}} | Sort-Object TimeCreated -Descending | Select-Object -First 20 📌 Покажет: - когда была попытка - откуда (IP) - под каким логином пытались зайти 👮‍♂️ Можно быстро зафайрволить источник, добавить в blacklist или передать в SIEM. 🛡️ Плюс к этому — рекомендую включить защиту учётных записей от перебора пароля: net accounts /lockoutthreshold:5 /lockoutduration:15 /lockoutwindow:15 👉 @win_sysadmin
19 · 1.5K ·
С
Системный Администратор Windows
👋 Всем админам доброго раннего утра! Сегодня коротко и по делу, что включить в Audit Policy, чтобы отслеживать все подключения по RDP. Без нужных политик никакой логгер не поможет. 🎯 Включаем аудит входа и сетевых логинов: AuditPol /set /subcategory:"Logon" /success:enable /failure:enable AuditPol /set /subcategory:"Logoff" /success:enable AuditPol /set /subcategory:"Special Logon" /success:enable AuditPol /set /subcategory:"Logon with explicit credentials" /success:enable /failure:enable 📝 После этого в логе Security начнут появляться события: - 4624 - Успешный вход (в том числе по RDP - Logon Type 10) - 4625 - Неудачный вход (ошибка пароля, нет такой учётки и т.п.) - 4634 - Выход из системы - 4778 и 4779 - Подключение и отключение от RDP-сессии 📌 Также полезно включить аудит групповой политики: AuditPol /set /subcategory:"Other Logon/Logoff Events" /success:enable /failure:enable 👉 @win_sysadmin
23 · 1.2K ·
С
Системный Администратор Windows
👋 Привет, админы! Если вы уже используете Wazuh (open-source SIEM), то грех не настроить сбор событий безопасности с Windows, особенно для анализа логинов и брутфорса по RDP. Вот как это делается 👇 🛠️ Установка Wazuh Agent на Windows 1. Скачиваем агент отсюда: https://wazuh.com/ 2. Устанавливаем с указанием менеджера (сервер Wazuh): msiexec /i "wazuh-agent-4.x.x.msi" /qn WAZUH_MANAGER="10.0.0.1" WAZUH_REGISTRATION_SERVER="10.0.0.1" WAZUH_AGENT_NAME="srv-win01" 3. После установки — правим C:\Program Files (x86)\ossec-agent\ossec.conf (если надо вручную задать имя, группы и т.п.) 4. Перезапускаем агент: net stop wazuh-agent net start wazuh-agent 📋 Что собирает агент? По умолчанию: - События из Security, System, Application - Входы в систему (4624, 4625, 4778, 4779) - Изменения в учётках, политиках, реестре - Информация об установке/удалении софта 🎯 Всё это попадает в дашборд Wazuh и может быть обработано правилами: алерты, уведомления, триггеры. 🔥 Пример алерта в Wazuh при брутфорсе по RDP: { "rule": { "id": "18107", "level": 10, "description": "Windows RDP brute-force attempt detected", "group": "windows, authentication_failed, brute_force" }, "srcip": "192.168.1.200", "user": "admin", "location": "Security", "full_log": "Logon failure: Type 10 (RemoteInteractive)" } 📌 Это можно отправить на почту, в Telegram, или автоматизировать блокировку IP (например, через Active Responses). 💬 А вы уже пробовали Wazuh или у вас другая SIEM-система? Сравнивали с Graylog, Splunk, Sentinel? 👉 @win_sysadmin
18 · 1.4K ·
С
Системный Администратор Windows
👋 Привет, админы! На днях столкнулся с интересной ситуацией: служба Windows Update на одном из серверов Windows Server 2019 просто отказалась стартовать. Перезапуск, reset компонентов — ничего не помогло. Оказалось, что виноват битый файл базы данных обновлений. Решение оказалось простым, но мало кто его делает вручную: 🔥 Вот PowerShell-скрипт, который полностью сбрасывает Windows Update, включая очистку базы данных: Stop-Service -Name wuauserv -Force Stop-Service -Name bits -Force Remove-Item -Path "C:\Windows\SoftwareDistribution" -Recurse -Force Start-Service -Name wuauserv Start-Service -Name bits После этого сервер спокойно начал тянуть апдейты. Главное — не забудьте перезапустить сервисы, а лучше сразу проверить доступность обновлений: Get-WindowsUpdate (если стоит PSWindowsUpdate модуль) 💡Если хотите автоматизировать это на нескольких машинах — добавьте Invoke-Command и в путь! 👉 @win_sysadmin
20 · 1.6K ·
С
Системный Администратор Windows
👋 Привет, админы! Как срочно проверить, кто и когда перезагружал сервер. Вроде бы задача простая, но в спешке иногда забываешь точные команды. Делюсь, чтобы не искать в следующий раз: 🕵️‍♂️ Ловим события перезагрузки через журнал: Get-EventLog -LogName System -Source User32 | Where-Object { $_.EventID -eq 1074 } | Select TimeGenerated, Message | Sort-Object TimeGenerated -Descending Этот запрос покажет, кто инициировал перезагрузку, с какой причиной и когда это было. Очень полезно при разборе неожиданных рестартов или плановых работ, которые никто "не помнит". ✅ Дополнительно можно глянуть системные события ID 6006 (нормальное выключение) и 6005 (загрузка журнала, т.е. запуск системы): Get-EventLog -LogName System | Where-Object { $_.EventID -eq 6006 -or $_.EventID -eq 6005 } | Select TimeGenerated, EventID | Sort-Object TimeGenerated -Descending 🔥 Удобно добавлять эти команды в свой набор “быстрых админских команд”. 👉 @win_sysadmin
25 · 1.5K ·
С
Системный Администратор Windows
👋 Привет, админы! Сегодня расскажу про один кейс, который недавно словил на одном из файловых серверов. Пользователи начали жаловаться, что не могут открыть файлы по SMB - «доступ запрещен», хотя права вроде бы на месте. 📌 В Event Viewer (журнал Security) увидел кучу записей с кодом ошибки 0xc000006d (STATUS_LOGON_FAILURE). А рядом — ещё интереснее: Audit Failure, Logon Type 3, учетка domain\username. 🔥 Оказалось, что проблема была в сбитом времени на сервере — он отставал на 6 минут от контроллера домена. Из-за этого Kerberos-билеты считались просроченными, и аутентификация тупо ломалась. 📎 Решение: 1. Проверил текущую синхронизацию времени: w32tm /query /status 2. Перезапустил службу времени и указал правильный NTP: w32tm /config /manualpeerlist:"time.windows.com,0x9" /syncfromflags:manual /reliable:yes /update Restart-Service w32time 3. Синхронизировал вручную: w32tm /resync /force ✅ После этого всё заработало, ошибки исчезли, пользователи успокоились. 👉 @win_sysadmin
15 · 1.5K ·
С
Системный Администратор Windows
Как я автоматизировал очистку Temp на всех ПК в домене Иногда кажется, что папка %TEMP% - это черная дыра. Пользователи жалуются на тормоза, места на диске мало, а ты заходишь туда - и видишь архивы обновлений, временные файлы Office, кэш инсталляторов и прочий мусор за последние сто лет. Руками чистить на каждом ПК? Нет уж. Я сделал это через PowerShell и GPO. Решение: Скрипт для очистки временных файлов запускается через планировщик задач от имени SYSTEM, раз в неделю. Вот пример скрипта: $TempPath = "$env:TEMP" Get-ChildItem -Path $TempPath -Recurse -Force -ErrorAction SilentlyContinue | Where-Object { -not $_.PSIsContainer -and $_.LastWriteTime -lt (Get-Date).AddDays(-7) } | Remove-Item -Force -ErrorAction SilentlyContinue Чтобы запускался на всех компах в домене: 1. Создал GPO с task scheduler (Computer Configuration -> Preferences -> Control Panel Settings -> Scheduled Tasks) 2. Указал Action: Create, Run as: SYSTEM, триггер раз в неделю. 3. В Program/script указал powershell.exe, а в аргументах: -ExecutionPolicy Bypass -File \\ваш-сервер\netlogon\clean_temp.ps1 Важно: – Скрипт не трогает свежие файлы (новее 7 дней) – Работает бесшумно, ничего не спрашивает – Можно дополнительно чистить C:\Windows\Temp, если уверены Вывод: Не запускайте такую штуку в logon-скриптах - это затормозит вход в систему. Лучше использовать планировщик задач. И, конечно, тестируйте сначала на паре машин — на всякий случай. 👉 @win_sysadmin
129 · 3.9K ·
С
Системный Администратор Windows
👋 Привет, админы! Сегодня хочу поделиться полезным трюком, как отслеживать подключения к RDP - кто, когда и откуда логинился на сервер. Это особенно актуально, если вы не используете полноценный SIEM, но хотите держать руку на пульсе. 🔍 Используем журнал событий и PowerShell: Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4624} | Where-Object { $_.Properties[8].Value -eq '10' } | Select-Object TimeCreated, @{Name='User';Expression={$_.Properties[5].Value}}, @{Name='IP';Expression={$_.Properties[18].Value}} | Sort-Object TimeCreated -Descending | Out-GridView 📌 Что делает скрипт: - Ищет события успешного входа (4624), - Фильтрует по типу логина 10 (удалённый интерактивный - это RDP), - Показывает дату, пользователя и IP-адрес источника. Очень удобно запускать на сервере и быстро проверять, кто заходил и когда. Можно адаптировать для логгера или отправки уведомлений. 📲 Мы в MAX 👉 @win_sysadmin
30 · 1.2K ·

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Чего мы не делаем · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем