🕵️♂️ Linux: Кто трогал этот файл? (auditd)
Иногда ls -l и last недостаточно. Вам нужно знать: кто, когда и какой процесс изменил критический конфиг /etc/passwd или удалил файл базы данных.
Включаем подсистему аудита ядра — auditd.
1. Ставим слежку за файлом:
2. Смотрим отчет: Кто трогал файл?
Вы увидите всё: PID процесса, UID пользователя и даже команду, которой это было сделано. Незаменимо при разборе инцидентов.
#linux #security #audit #forensics #securityhardening
Иногда 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 — Вся правда о файле
Мы привыкли смотреть на файлы через
Команда:
Что смотреть в выводе:
1. Access (atime): Когда файл читали последний раз (полезно для поиска неиспользуемых конфигов).
2. Modify (mtime): Когда менялось содержимое файла.
3. Change (ctime): Когда менялись метананые (права, владелец).
* Нюанс: Если хакер подменил файл и скрутил
Форматированный вывод (для скриптов):
Используйте
#linux #forensics #stat #security #cli #audit
Мы привыкли смотреть на файлы через
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: Охота на упавшие сервисы
Перед уходом на каникулы критически важно проверить: всё ли, что должно работать — работает? Частая ситуация: Агент мониторинга или Бэкап-сервис стоит в автозапуске (
Скрипт-минутка для поиска "мертвецов":
Что делать: Если список пуст — вы красавчик. Если что-то нашлось — пробуем
#windows #powershell #services #audit #maintenance #healthcheck
Перед уходом на каникулы критически важно проверить: всё ли, что должно работать — работает? Частая ситуация: Агент мониторинга или Бэкап-сервис стоит в автозапуске (
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) за время праздников, сгруппированные по источникам.
Команда:
Результат: Вы увидите таблицу вроде:
* Disk — 5 ошибок (Стоит проверить RAID!)
* TermService — 1 ошибка (Ерунда)
Экономит часы кликанья мышкой.
#windows #powershell #eventlog #audit #monitoring #scripting
Листать 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: Ревизия локальных админов
За время праздников (или в суете перед ними) кто-то мог выдать временные права "Локального админа" пользователю, чтобы поставить софт, и... благополучно забыть забрать. Это классическая дыра в безопасности.
Проверяем состав элитного клуба на сервере одной командой.
Скрипт:
На что смотреть: В списке должны быть только:
👑 Administrator (Встроенный)
🏢 Domain Admins (Группа домена)
🤖 Легитимные сервисные учетки.
Если видите DESKTOP\Ivan (обычный юзер) — удаляйте немедленно:
#windows #powershell #security #audit #localadmin #cleanup
За время праздников (или в суете перед ними) кто-то мог выдать временные права "Локального админа" пользователю, чтобы поставить софт, и... благополучно забыть забрать. Это классическая дыра в безопасности.
Проверяем состав элитного клуба на сервере одной командой.
Скрипт:
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 это делается нативно.
Команда:
Как сверить автоматически (Лайфхак): Если у вас есть эталонный хеш с сайта разработчика, не сравнивайте глазами! Пусть компьютер работает:
Возьмите за правило: скачал критический софт — проверил хеш.
#windows #powershell #security #hashing #sha256 #audit
Вы скачали 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-аудит (одной строкой):
Что искать в выводе:
1. VolumeStatus: FullyEncrypted (Обязательно!)
2. ProtectionStatus: On
3. KeyProtector: Должен быть Tpm (безопасно) или TpmPin. Если там Password или пусто — это дыра.
Если статус
#windows #security #bitlocker #powershell #encryption #audit #tpm
В 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 дней):
Используйте этот список для проверки. Если дата входа была 3 месяца назад — смело отключайте (Disable), а удаляйте еще через месяц.
#windows #powershell #activedirectory #cleanup #audit #sysadmin
Вы хотите почистить домен от уволенных сотрудников. Вы смотрите свойство 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):
Нюанс: Чтобы это работало, на нужной папке в свойствах безопасности (вкладка «Аудит») должен быть включен аудит на удаление.
#windows #powershell #security #audit #active_directory #sysadmin 📂
«Я ничего не трогал, оно само исчезло!» — классика. 🤡 Если в 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 (проходной двор).
Команда-аудитор:
Как исправить "красные" зоны:
Выбери сервис с плохой оценкой (например, nginx.service) и посмотри детали:
Добавь в секцию [Service] файла юнита простые директивы изоляции:
Результат: Даже если сервис взломают, хакер окажется в "тюрьме" и не сможет навредить системе. Оценка упадет с 9.0 до 2.0. ✅
#linux #security #systemd #hardening #sysadmin #devops #audit
Ты поднял 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. Мы сделаем это прямо в консоли.
Скрипт для проверки (копируй и запускай):
Зачем это нужно:
#windows #powershell #security #audit #admin_future
Коллеги, в марте 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 году такие инциденты стоят бизнесу миллионы.
Скрипт мониторинга критичной группы:
#windows #powershell #activedirectory #security #audit #admin_future
Доверие — это отлично, но контроль — лучше. Особенно если дело касается группы 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