Admin Future
241 subscribers
51 photos
1 video
4 files
120 links
Превращаем эникейщиков в System Architects.
🚀 Твой навигатор в мире IT-инфраструктуры:

▪️ Hard Skills: Linux, Windows, Network, Security
▪️ Tools: Лучший софт и скрытые фишки
▪️ Mindset: Как думать, чтобы платили много


Админ - @maksimshap
Download Telegram
🛡️ Windows: Скрипт-аудит "Кто удалил файл?" (NTFS Forensics)

Боль: Критический файл в \\Shares\Data исчез. Бизнес в панике. "Кто это сделал и когда?!"

Реакция админа: "Я восстановлю из бэкапа" (но не знает, почему это случилось).
Реакция архитектора: "Я настрою аудит и найду виновного за 30 секунд".

Это двухэтапный процесс: сначала "взводим ловушку", потом "ловим".

Шаг 1: "Взвести ловушку" (Включить аудит на папке): (Это нужно сделать до инцидента)

# 1. Получаем ACL папки
$Acl = Get-Acl "C:\Shares\Data"

# 2. Создаем правило аудита: "Следить за 'Delete' и 'DeleteSubtree' для 'Everyone'"
$AuditRule = New-Object System.Security.AccessControl.FileSystemAuditRule(
"Everyone",
"Delete, DeleteSubtreeAndFiles",
"None",
"None",
"Success, Failure"
)

# 3. Добавляем правило в ACL и применяем
$Acl.AddAuditRule($AuditRule)
Set-Acl -Path "C:\Shares\Data" -AclObject $Acl

(Также включите "Audit Object Access" в GPO)

Шаг 2: Скрипт-охотник (Когда инцидент произошел): Этот скрипт найдет в логах Security событие 4663 (Попытка доступа к объекту) с Accesses: ...Delete...


Write-Host "--- Ищу событие удаления файла в C:\Shares\Data ---"

Get-WinEvent -FilterHashtable @{
LogName = "Security";
ID = 4663
} | ForEach-Object {
# 'Object Name' - это 6-е свойство, 'Accesses' - 9-е
$ObjectName = $_.Properties[6].Value
$Accesses = $_.Properties[9].Value

# Проверяем, что это наша папка И это было удаление
if ($ObjectName -like "*C:\Shares\Data*" -and $Accesses -match "Delete") {
[PSCustomObject]@{
Time = $_.TimeCreated
User = $_.Properties[1].Value
Process = $_.Properties[13].Value
Object = $ObjectName
}
}
}

Взгляд архитектора: Вы переходите от "надежды" к "доказательствам". Это основа Форензики (Digital Forensics) и Incident Response (IR).

#windows #powershell #security #audit #ntfs #скрипты #гайд
🔬 Linux: Скрипт "Аудит открытых портов" (Сравнение с "Эталоном")

Боль: Вы думаете, что на вашем веб-сервере открыты только порты 22, 80, 443. Но разработчик "для теста" запустил python -m http.server 8000 на 0.0.0.0 и забыл.

Реакция админа: "Я проверю ss -tuln вручную, когда будет инцидент".
Реакция архитектора: "У меня есть cron-скрипт, который автоматически сверяет 'что есть' с 'что должно быть'".

Этот Bash-скрипт — ваш аудитор безопасности.

Код скрипта:


#!/bin/bash
# --- Скрипт аудита "лишних" TCP-портов ---

# 1. ЭТАЛОН: Порты, которые ДОЛЖНЫ быть открыты (на 0.0.0.0)
# (Используйте 'ssh' или номер '22')
ALLOWED_PORTS=(
"ssh"
"http"
"httpsA"
)

# 2. ФАКТ: Получаем все, что слушает на 0.0.0.0 (IPv4)
# `ss -tuln`: TCP, UDP, Listening, Numeric
# `awk ...`: Вытаскиваем только номер порта
CURRENT_PORTS=$(ss -tuln | grep 'LISTEN.*0.0.0.0:' | awk '{print $5}' | sed 's/.*://' | sort -u)

# 3. СРАВНЕНИЕ:
# `comm -13`: Показывает строки, которые есть только во втором файле (CURRENT_PORTS)
# (т.е. "лишние" порты)
UNAUTHORIZED_PORTS=$(comm -13 <(printf "%s\n" "${ALLOWED_PORTS[@]}" | sort -u) <(echo "$CURRENT_PORTS"))

if [ -n "$UNAUTHORIZED_PORTS" ]; then
echo "[!!!] ОБНАРУЖЕНЫ НЕСАНКЦИОНИРОВАННЫЕ ОТКРЫТЫЕ ПОРТЫ:"
echo "$UNAUTHORIZED_PORTS"
exit 1
else
echo "[OK] Все порты соответствуют эталону."
exit 0
fi

Взгляд архитектора: Это "Compliance as Code". Вы не "проверяете", вы валидируете вашу политику безопасности. Этот скрипт — основа для автоматического алерта в Zabbix или Prometheus (Alertmanager).

#linux #bash #security #networking #audit #скрипты #sre
🔒 Windows (Security): "Куда бежать?" Аудит открытых сетевых шар (Open Shares)

Боль: Вы "думаете", что все ваши файловые шары защищены и доступны только "изнутри". Но где-то тихо "живет" шара \\SERVER\Docs, которая открыта "Everyone: Full Control" и светит в интернет через проброс портов.

Реакция админа: "Пролистаю Computer Management на каждом сервере". (Это тысячи шар).
Реакция архитектора: Запустить автоматический скрипт-аудит.

Этот PowerShell-скрипт найдет все открытые шары на всех ваших серверах, которые разрешают доступ группе Everyone (или Authenticated Users).

Код скрипта:


Write-Host "--- Начинаю аудит открытых сетевых шар (Everyone/Auth. Users) ---" -ForegroundColor Cyan

# 1. Получаем список всех серверов в домене
$Servers = Get-ADComputer -Filter 'OperatingSystem -like "Windows Server*"' | Select-Object -ExpandProperty Name
$Report = @()

foreach ($Server in $Servers) {
Write-Host "Проверяю сервер: $Server..."
try {
# Получаем все шары на сервере
$Shares = Get-CimInstance -ClassName Win32_Share -ComputerName $Server -ErrorAction Stop

foreach ($Share in $Shares) {
# Пропускаем стандартные (ADMIN$, C$, IPC$)
if ($Share.Name -notmatch '\$') {
# Получаем ACL каждой шары
$Acl = Get-Acl "Microsoft.PowerShell.Core\FileSystem::\\$Server\$($Share.Name)" -ErrorAction SilentlyContinue

if ($Acl) {
# Ищем правила для Everyone или Authenticated Users
$OpenAcl = $Acl.Access | Where-Object {
($_.IdentityReference -eq "Everyone") -or ($_.IdentityReference -eq "Authenticated Users")
}
if ($OpenAcl) {
$Report += [PSCustomObject]@{
Server = $Server
ShareName = $Share.Name
Path = $Share.Path
Identity = $OpenAcl.IdentityReference
AccessRights = $OpenAcl.FileSystemRights
AccessType = $OpenAcl.AccessControlType
}
}
}
}
}
}
catch {
Write-Warning "Не удалось подключиться к $Server: $($_.Exception.Message)"
}
}

if ($Report) {
Write-Host "`n[!!!] ОБНАРУЖЕНЫ ОТКРЫТЫЕ СЕТЕВЫЕ ШАРЫ (EVERYONE / AUTHENTICATED USERS):" -ForegroundColor Red
$Report | Format-Table -Wrap -AutoSize
} else {
Write-Host "`n[OK] Открытых сетевых шар не найдено." -ForegroundColor Green
}

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

#windows #powershell #security #audit #networking #скрипты #sysadmin
👍2
🛡️ Windows (Security): Аудит UAC. "Почему админ нажимает 'Да'?"

Боль: Вы настроили LAPS, убрали права. Но UAC (User Account Control) — это "внутренний файрвол" Windows, который останавливает 90% атак с повышением привилегий. И многие админы его отключают или ослабляют до "тихого" режима, потому что он "мешает".

Реакция админа: "Я просто нажму 'Да', я же админ".
Реакция архитектора: "Я принудительно включу безопасный UAC через GPO и буду аудировать тех, кто его отключает".

Этот PowerShell-скрипт — ваш аудитор. Он проверит критически важные ключи реестра UAC на списке машин.

Код скрипта:


[CmdletBinding()]
param (
[string[]]$ComputerNames = @("SERVER01", "WKS-01")
)

$UAC_Path = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System"
$Report = @()

foreach ($Server in $ComputerNames) {
Write-Host "Проверяю UAC на $Server..."
if (-not (Test-Connection -ComputerName $Server -Count 1 -Quiet)) {
$Report += [PSCustomObject]@{ ComputerName = $Server; Status = "НЕДОСТУПЕН" }
continue
}

try {
$RegKey = Get-ItemProperty -Path $UAC_Path -ComputerName $Server -ErrorAction Stop

$Report += [PSCustomObject]@{
ComputerName = $Server
Status = "OK"
# 1 = Включен (Хорошо)
EnableLUA = $RegKey.EnableLUA
# 2 = "Prompt for consent on the secure desktop" (Лучший)
# 5 = "Prompt for consent" (Нормально)
# 0 = "Elevate without prompting" (КРИТИЧЕСКАЯ УЯЗВИМОСТЬ)
ConsentPromptBehaviorAdmin = $RegKey.ConsentPromptBehaviorAdmin
}
}
catch {
$Report += [PSCustomObject]@{ ComputerName = $Server; Status = "ОШИБКА ДОСТУПА" }
}
}

Write-Host "`n--- РЕЗУЛЬТАТ АУДИТА UAC ---"
$Report | Format-Table
Write-Host "[!] 'EnableLUA = 0' или 'ConsentPromptBehaviorAdmin = 0' — это дыра в безопасности!" -ForegroundColor Red

Взгляд архитектора: Отключение UAC (EnableLUA = 0) — это не "удобство", это приглашение для mimikatz и шифровальщиков. Этот скрипт — ваш первый шаг к Security Baseline (базовому уровню безопасности).

#windows #powershell #security #uac #audit #скрипты #sysadmin
☣️ Windows: Скрипт-аудит "Кто может сбросить пароль Domain Admin?"

Боль: Вы думаете, что только Domain Admins могут менять пароли. Но в AD есть "темные" права, как GenericAll, WriteDacl или User-Force-Change-Password.

Проблема: Учетка HelpDesk (которую взломали) может иметь право сбросить пароль SQL-Admin, а тот, в свою очередь, — пароль Domain Admin. Это "теневые" админы (Shadow Admins).

Этот PowerShell-скрипт (на модуле DSInternals) — ваш аудитор. Он покажет всех, кто имеет "опасные" права на ваших Domain Admins.

Код скрипта:


# 1. Установка модуля (один раз)
# Install-Module DSInternals -Scope CurrentUser

Import-Module DSInternals

Write-Host "--- Начинаю аудит 'опасных' ACL на Admin-группах ---" -ForegroundColor Cyan

# 2. Список "целей" (кого проверяем)
$CriticalGroups = @(
"Domain Admins",
"Enterprise Admins",
"Administrators",
"Schema Admins"
)

# 3. Список "опасных" прав
$DangerousRights = @(
'GenericAll',
'WriteDacl',
'WriteOwner',
'Self',
'WriteProperty',
'GenericWrite',
'User-Force-Change-Password'
)

$Report = foreach ($Group in $CriticalGroups) {
Get-ADACL -Identity $Group | Where-Object {
($_.ActiveDirectoryRights -in $DangerousRights) -and
($_.IdentityReference -notin @("NT AUTHORITY\SYSTEM", "BUILTIN\Administrators", "CORP\Domain Admins", "CORP\Enterprise Admins")) # Исключаем "ожидаемых"
}
}

if ($Report) {
Write-Host "`n[!!!] ОБНАРУЖЕНЫ 'ТЕНЕВЫЕ' АДМИНЫ:" -ForegroundColor Red
$Report | Format-Table ObjectDN, IdentityReference, ActiveDirectoryRights
} else {
Write-Host "`n[OK] 'Лишних' прав на критических группах не найдено." -ForegroundColor Green
}

Взгляд архитектора: Это — аудит путей атаки (Attack Paths). Вы должны знать каждую учетку, которая может сбросить пароль DA.

#windows #powershell #security #activedirectory #audit #скрипты #cybersecurity
👍1
🔒 Linux: Скрипт-аудит "неизменяемых" (immutable) файлов

Боль: Команда chattr +i (immutable) — это и "оружие", и "щит".

Хакеры используют ее, чтобы "зацементировать" свой rootkit (его не может удалить даже root).

Админы используют ее, чтобы защитить /etc/hosts или sshd_config от случайных изменений.

Проблема: Как найти все "неизменяемые" файлы в системе?

Реакция админа: "Надеюсь, их нет".
Реакция архитектора: "Я запущу аудит".

Этот Bash-скрипт использует lsattr для рекурсивного сканирования системы.

Код скрипта:


#!/bin/bash
# --- Поиск 'immutable' файлов (атрибут 'i') ---

echo "--- Начинаю поиск 'неизменяемых' файлов (chattr +i)... ---"
echo "Это может занять много времени."

# -R: Рекурсивно
# /: Начиная с корня
# 2>/dev/null: Игнорируем ошибки (типа 'Permission denied' для /proc)
# grep '----i-': Ищем ТОЛЬКО файлы, где установлен 'i' (immutable)
lsattr -R / 2>/dev/null | grep '----i-'

echo "--- Поиск завершен ---"

Взгляд архитектора: Это — аудит целостности (Integrity Audit). Вы должны знать о каждом файле, который "заморожен". Если вы видите ----i- на /tmp/x.sh — у вас огромные проблемы. Если на sshd_config — это ваша (или чужая) работа.

#linux #bash #security #audit #forensics #скрипты #гайд
👮‍♂️ PowerShell: Кто в админах?

Банальная, но критичная задача. Часто техподдержка дает права локального админа пользователю "на 5 минут, чтобы поставить программу", и забывает убрать. Через полгода у вас половина офиса — админы.

Скрипт для инвентаризации группы Administrators на удаленных ПК.

Код:


$Computers = Get-Content "C:\servers.txt" # Или список из AD

foreach ($PC in $Computers) {
Try {
$Admins = Invoke-Command -ComputerName $PC -ScriptBlock {
Get-LocalGroupMember -Group "Administrators" |
Select-Object -ExpandProperty Name
} -ErrorAction Stop

[PSCustomObject]@{
Server = $PC
LocalAdmins = ($Admins -join ", ")
}
} Catch {
Write-Warning "Не удалось подключиться к $PC"
}
}

Что искать в отчете:

Доменных пользователей (кроме админов домена и техподдержки).

Левые локальные учетки.

Чистота прав доступа — залог спокойного сна.

#powershell #security #audit #windows #scripting
🔥2
share PowerShell: Найди "забытые" сетевые папки

Сетевые шары (Shares) — любимый путь вирусов-шифровальщиков. Часто бывает так: админ расшарил папку "temp" для передачи дистрибутива и забыл. Спустя год там лежит архив с базой 1С, доступный всем (Everyone: Full Control).

Давайте найдем все не-системные шары одной командой.

Скрипт:

# Получаем все шары
Get-SmbShare |
# Исключаем дефолтные (C$, IPC$, ADMIN$ и т.д.)
Where-Object { $_.Special -eq $false } |
# Смотрим путь и описание
Select-Object Name, Path, Description |
Format-Table -AutoSize

Задача: Запустите на файловом сервере. Если увидите шару с именем Distrib, Scan или Obmen — проверьте права доступа немедленно (Get-SmbShareAccess -Name "Obmen").

#windows #powershell #security #audit #network
🕵️‍♂️ Linux: Кто трогал этот файл? (auditd)

Иногда ls -l и last недостаточно. Вам нужно знать: кто, когда и какой процесс изменил критический конфиг /etc/passwd или удалил файл базы данных.

Включаем подсистему аудита ядра — auditd.

1. Ставим слежку за файлом:

# -w : watch (следить за файлом)
# -p wa : permission write/attribute (запись или смена прав)
# -k passwd_change : ключ поиска (тег для логов)
auditctl -w /etc/passwd -p wa -k passwd_change

2. Смотрим отчет: Кто трогал файл?

ausearch -k passwd_change

Вы увидите всё: PID процесса, UID пользователя и даже команду, которой это было сделано. Незаменимо при разборе инцидентов.

#linux #security #audit #forensics #securityhardening
🕵️‍♂️ Linux: stat — Вся правда о файле

Мы привыкли смотреть на файлы через ls -l . Но она показывает только время последней модификации ( mtime ). Когда нужно понять, действительно ли файл меняли, или просто поменяли права доступа ( chmod ), или когда к нему последний раз обращались — нужна команда stat .

Команда:


stat /etc/passwd

Что смотреть в выводе:

1. Access (atime): Когда файл читали последний раз (полезно для поиска неиспользуемых конфигов).

2. Modify (mtime): Когда менялось содержимое файла.

3. Change (ctime): Когда менялись метананые (права, владелец).

* Нюанс: Если хакер подменил файл и скрутил mtime назад (чтобы скрыть следы), ctime все равно выдаст время изменения!

Форматированный вывод (для скриптов):


# Вывести только права в цифрах (например, 644)
stat -c "%a" filename

Используйте stat при разборе инцидентов. ls часто врет (или недоговаривает).

#linux #forensics #stat #security #cli #audit
🧟‍♂️ PowerShell: Охота на упавшие сервисы

Перед уходом на каникулы критически важно проверить: всё ли, что должно работать — работает? Частая ситуация: Агент мониторинга или Бэкап-сервис стоит в автозапуске ( Automatic ), но упал неделю назад ( Stopped ). Вы об этом даже не знаете.

Скрипт-минутка для поиска "мертвецов":


Get-Service |
Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -eq 'Stopped' } |
Select-Object Name, DisplayName |
Format-Table -AutoSize

Что делать: Если список пуст — вы красавчик. Если что-то нашлось — пробуем Start-Service . Если падает снова — у вас есть задача на сегодня, пока все не ушли домой.

#windows #powershell #services #audit #maintenance #healthcheck
🪟 PowerShell: Краткая сводка происшествий за праздники

Листать Event Viewer за 10 дней выходных — это боль. Вам нужно знать только одно: были ли критические ошибки?

Скрипт, который покажет только "Красные" события (Errors & Critical) за время праздников, сгруппированные по источникам.

Команда:


# Проверяем последние 7 дней
$Date = (Get-Date).AddDays(-7)

Get-WinEvent -FilterHashtable @{LogName='System'; Level=1,2; StartTime=$Date} -ErrorAction SilentlyContinue |
Group-Object ProviderName |
Select-Object Count, Name |
Sort-Object Count -Descending |
Format-Table -AutoSize

Результат: Вы увидите таблицу вроде:

* Disk — 5 ошибок (Стоит проверить RAID!)

* TermService — 1 ошибка (Ерунда)

Экономит часы кликанья мышкой.

#windows #powershell #eventlog #audit #monitoring #scripting
👮‍♂️ PowerShell: Ревизия локальных админов

За время праздников (или в суете перед ними) кто-то мог выдать временные права "Локального админа" пользователю, чтобы поставить софт, и... благополучно забыть забрать. Это классическая дыра в безопасности.

Проверяем состав элитного клуба на сервере одной командой.

Скрипт:


Get-LocalGroupMember -Group "Administrators" | Select-Object Name, PrincipalSource, ObjectClass

На что смотреть: В списке должны быть только:

👑 Administrator (Встроенный)

🏢 Domain Admins (Группа домена)

🤖 Легитимные сервисные учетки.

Если видите DESKTOP\Ivan (обычный юзер) — удаляйте немедленно:

Remove-LocalGroupMember -Group "Administrators" -Member "Ivan"

#windows #powershell #security #audit #localadmin #cleanup
🛡 PowerShell: Доверяй, но проверяй хеши (Get-FileHash)

Вы скачали ISO-образ Windows, драйвер для RAID-контроллера или инсталлятор. Как убедиться, что файл не побился при скачивании? И, что важнее, что хакеры не подменили его на сервере (Supply Chain Attack)?

Всегда сверяйте Hash Sum. В PowerShell это делается нативно.

Команда:
Get-FileHash -Path .\Server_Image.iso -Algorithm SHA256

Как сверить автоматически (Лайфхак): Если у вас есть эталонный хеш с сайта разработчика, не сравнивайте глазами! Пусть компьютер работает:
$TrueHash = "A1B2C3... (копипаст с сайта)"
$FileHash = (Get-FileHash .\setup.exe).Hash

if ($FileHash -eq $TrueHash) { "✅ OK" } else { "❌ DANGER! Файл изменен!" }

Возьмите за правило: скачал критический софт — проверил хеш.

#windows #powershell #security #hashing #sha256 #audit
🔐 BitLocker: Твой ноутбук украли. Данные утекли?

В 2026 году потеря корпоративного ноутбука — это не потеря железа ($1000), это потеря данных (миллионы). Если диск не зашифрован, пароль Windows сбрасывается за 2 минуты флешкой с Linux.

Убедитесь, что BitLocker включен и ключи надежно защищены TPM-чипом.

PowerShell-аудит (одной строкой):

Get-BitLockerVolume | Select-Object MountPoint, VolumeStatus, EncryptionMethod, ProtectionStatus, KeyProtector

Что искать в выводе:
1. VolumeStatus: FullyEncrypted (Обязательно!)
2. ProtectionStatus: On
3. KeyProtector: Должен быть Tpm (безопасно) или TpmPin. Если там Password или пусто — это дыра.

Если статус Off — включайте немедленно. Это база безопасности эндпоинтов.

#windows #security #bitlocker #powershell #encryption #audit #tpm
👻 AD: Как найти действительно неактивных пользователей?

Вы хотите почистить домен от уволенных сотрудников. Вы смотрите свойство LastLogon. Но оно показывает старую дату. Вы удаляете юзера, а через час звонит директор: "Почему меня не пускает?".

Проблема: Атрибут LastLogon не реплицируется. Он обновляется только на том контроллере домена, через который прошел вход. Решение: Используйте LastLogonDate (это конвертированный LastLogonTimeStamp, который реплицируется, но с задержкой 9-14 дней).

PowerShell скрипт для поиска "мертвых душ" (> 90 дней):


$Date = (Get-Date).AddDays(-90)

Get-ADUser -Filter {LastLogonDate -lt $Date -and Enabled -eq $true} -Properties LastLogonDate |
Select-Object Name, LastLogonDate, SamAccountName |
Sort-Object LastLogonDate |
Format-Table -AutoSize

Используйте этот список для проверки. Если дата входа была 3 месяца назад — смело отключайте (Disable), а удаляйте еще через месяц.

#windows #powershell #activedirectory #cleanup #audit #sysadmin
✍2
⚡ PowerShell: Как узнать, кто удалил файл на сетевом диске?

«Я ничего не трогал, оно само исчезло!» — классика. 🤡 Если в Active Directory включен аудит доступа к объектам, PowerShell поможет быстро найти виновника без долгого копания в Event Viewer.

Скрипт для поиска события удаления (Event ID 4660):

# Укажите время, за которое ищем логи (последние 24 часа)
$TimeFilter = (Get-Date).AddDays(-1)

$Events = Get-WinEvent -FilterHashtable @{
LogName = 'Security'
ID = 4660
StartTime = $TimeFilter
} -ErrorAction SilentlyContinue

foreach ($Event in $Events) {
[xml]$EventXml = $Event.ToXml()
$User = $EventXml.Event.EventData.Data | Where-Object { $_.Name -eq 'SubjectUserName' } | Select-Object -ExpandProperty '#text'
$Time = $Event.TimeCreated

Write-Host "🗑️ Файл был удален пользователем: $User в $Time" -ForegroundColor Red
}

Нюанс: Чтобы это работало, на нужной папке в свойствах безопасности (вкладка «Аудит») должен быть включен аудит на удаление.

#windows #powershell #security #audit #active_directory #sysadmin 📂
🐧 Linux: systemd-analyze security — узнай, насколько дырявые твои сервисы 🛡️

Ты поднял Nginx, базу данных и пару самописных демонов.
Они работают.
Но насколько они защищены от взлома, если в коде найдется уязвимость?
В 2026 году systemd имеет встроенный сканер безопасности, о котором многие забывают.

Он анализирует unit-файлы и выставляет оценку "опасности" от 0 (безопасно) до 10 (проходной двор).

Команда-аудитор:

systemd-analyze security

Как исправить "красные" зоны:
Выбери сервис с плохой оценкой (например, nginx.service) и посмотри детали:

systemd-analyze security nginx.service

Добавь в секцию [Service] файла юнита простые директивы изоляции:

[Service]
PrivateTmp=yes # Свой /tmp, невидимый другим
ProtectSystem=strict # Запрет записи в системные папки
ProtectHome=yes # Запрет чтения /home
NoNewPrivileges=yes # Запрет повышения прав (sudo)

Результат: Даже если сервис взломают, хакер окажется в "тюрьме" и не сможет навредить системе. Оценка упадет с 9.0 до 2.0. ✅

#linux #security #systemd #hardening #sysadmin #devops #audit
🪟 Windows: Быстрый аудит входов через PowerShell

Коллеги, в марте 2026-го безопасность — это не просто слово, а ежедневная рутина. Если тебе нужно быстро узнать, кто заходил на сервер за последние сутки, не нужно ждать вечность, пока прогрузится тяжелый графический Event Viewer. Мы сделаем это прямо в консоли.

Используем Get-WinEvent с фильтром по ID 4624 (успешный вход).


Скрипт для проверки (копируй и запускай):


# Список успешных входов за последние 24 часа
$Time = (Get-Date).AddDays(-1)
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4624; StartTime=$Time} |
Select-Object TimeCreated, @{Name='User'; Expression={$_.Properties[5].Value}} |
Format-Table -AutoSize


Зачем это нужно:
Для контроля. Ты сразу увидишь, если в систему заходил кто-то лишний или под учеткой, которая должна быть неактивна. В пятницу перед уходом домой — это отличная привычка для проверки безопасности своей цифровой крепости.


#windows #powershell #security #audit #admin_future
🛡️ Windows: Аудит элитного клуба — мониторим Domain Admins через PowerShell

Доверие — это отлично, но контроль — лучше. Особенно если дело касается группы Domain Admins. Представьте: в вашей инфраструктуре есть только два легитимных администратора — условные Bogdan и Roman. А в один прекрасный день скрипт показывает третьего. Это либо взлом, либо кто-то временно выдал права техподдержке и забыл забрать. В 2026 году такие инциденты стоят бизнесу миллионы.

Вместо того чтобы кликать мышкой по оснастке Active Directory, повесьте в планировщик задач простой скрипт, который будет следить за изменениями.


Скрипт мониторинга критичной группы:


$Domain = "domain.local"
$GroupName = "Domain Admins"
$AllowedAdmins = @("adm1", "adm1", "adm3")

# Получаем текущий состав группы
$CurrentMembers = Get-ADGroupMember -Identity $GroupName -Server $Domain | Select-Object -ExpandProperty SamAccountName

# Ищем чужаков
$Unauthorized = $CurrentMembers | Where-Object { $_ -notin $AllowedAdmins }

if ($Unauthorized) {
Write-Warning "⚠️ АЛАРМ! Найдены неавторизованные пользователи в Domain Admins: $($Unauthorized -join ', ')"
# Здесь можно добавить код отправки алерта в Telegram или на почту
} else {
Write-Host "✅ Состав группы Domain Admins в норме." -ForegroundColor Green
}


Группа политик безопасности (GPO) не всегда спасет, если учетка скомпрометирована. Автоматический аудит критически важных групп — это ваш первый рубеж обнаружения внутренних угроз.
Безопасность домена начинается с понимания того, у кого от него ключи.


#windows #powershell #activedirectory #security #audit #admin_future