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

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


Админ - @maksimshap
Download Telegram
🕵️‍♂️ 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