Ansible для Всех: Автоматизация Харденинга Linux-серверов без Написания Ролей с Нуля
😫 Проблема: Ручной Харденинг
Представим: у вас 50+ Linux-серверов, и служба безопасности требует привести их в соответствие со стандартом CIS Benchmarks. Делать это вручную по SSH — прямой путь к ошибкам, несоответствиям и бессонным ночам. А главное, через месяц конфигурации серверов неизбежно "разъедутся" (configuration drift).
💡 Решение: Сила Ansible Galaxy и Готовых Ролей
Ansible — это не только написание плейбуков с нуля. Его экосистема включает Ansible Galaxy — огромный репозиторий готовых ролей. Для нашей задачи идеально подходит коллекция devsec.hardening, реализующая лучшие практики безопасности.
1️⃣ Шаг 1: Подготовка Окружения
Установите Ansible на вашу управляющую машину.
Установите коллекцию devsec.hardening одной командой:
Bash
Создайте inventory.ini файл с вашими серверами:
Ini, TOML
2️⃣ Шаг 2: Создание Плейбука с Готовой Ролью
Вам не нужно знать, как именно работает каждый параметр безопасности. Вам нужно лишь декларативно описать исключения для вашей среды. Например, роль os_hardening по умолчанию отключает IP-форвардинг, который нужен для Docker. Мы можем это легко переопределить.
Код плейбука (playbook.yml):
YAML
3️⃣ Шаг 3: Запуск и Проверка
Сначала выполняем "пробный запуск", который покажет изменения, но ничего не применит:
Bash
Убедившись, что всё корректно, запускаем в рабочем режиме:
Bash
Ключевое свойство Ansible — идемпотентность. Повторный запуск плейбука не вызовет ошибок. Ansible просто проверит, что все настройки в порядке, и исправит только то, что отклонилось от стандарта. Это позволяет использовать плейбук для регулярной борьбы с "дрейфом конфигурации".
🚀 Заключение: От Администратора к Инженеру по Автоматизации
С помощью нескольких десятков строк YAML-кода мы применили сотни настроек безопасности к целой группе серверов. Это и есть переход к Infrastructure as Code (IaC). Вы не просто администрируете серверы — вы управляете их состоянием через код.
#IaC #Ansible #Linux #Hardening #DevSecOps #Automation
😫 Проблема: Ручной Харденинг
Представим: у вас 50+ Linux-серверов, и служба безопасности требует привести их в соответствие со стандартом CIS Benchmarks. Делать это вручную по SSH — прямой путь к ошибкам, несоответствиям и бессонным ночам. А главное, через месяц конфигурации серверов неизбежно "разъедутся" (configuration drift).
💡 Решение: Сила Ansible Galaxy и Готовых Ролей
Ansible — это не только написание плейбуков с нуля. Его экосистема включает Ansible Galaxy — огромный репозиторий готовых ролей. Для нашей задачи идеально подходит коллекция devsec.hardening, реализующая лучшие практики безопасности.
1️⃣ Шаг 1: Подготовка Окружения
Установите Ansible на вашу управляющую машину.
Установите коллекцию devsec.hardening одной командой:
Bash
ansible-galaxy collection install devsec.hardening
Создайте inventory.ini файл с вашими серверами:
Ini, TOML
[webservers]
web01.example.com
web02.example.com
[dbservers]
db01.example.com
2️⃣ Шаг 2: Создание Плейбука с Готовой Ролью
Вам не нужно знать, как именно работает каждый параметр безопасности. Вам нужно лишь декларативно описать исключения для вашей среды. Например, роль os_hardening по умолчанию отключает IP-форвардинг, который нужен для Docker. Мы можем это легко переопределить.
Код плейбука (playbook.yml):
YAML
- name: Harden all Linux servers
hosts: all
become: yes
roles:
- role: devsec.hardening.os_hardening
vars:
# Пример: разрешаем Docker'у работать
sysctl_overwrite:
net.ipv4.ip_forward: 1
# Пример: оставляем файловую систему vfat для UEFI
os_filesystem_whitelist:
- vfat
- name: Harden SSH configuration
hosts: all
become: yes
roles:
- role: devsec.hardening.ssh_hardening
vars:
# Пример: разрешаем вход по паролю (не для прода!)
sshd_password_authentication: "yes"
3️⃣ Шаг 3: Запуск и Проверка
Сначала выполняем "пробный запуск", который покажет изменения, но ничего не применит:
Bash
ansible-playbook -i inventory.ini playbook.yml --check
Убедившись, что всё корректно, запускаем в рабочем режиме:
Bash
ansible-playbook -i inventory.ini playbook.yml
Ключевое свойство Ansible — идемпотентность. Повторный запуск плейбука не вызовет ошибок. Ansible просто проверит, что все настройки в порядке, и исправит только то, что отклонилось от стандарта. Это позволяет использовать плейбук для регулярной борьбы с "дрейфом конфигурации".
🚀 Заключение: От Администратора к Инженеру по Автоматизации
С помощью нескольких десятков строк YAML-кода мы применили сотни настроек безопасности к целой группе серверов. Это и есть переход к Infrastructure as Code (IaC). Вы не просто администрируете серверы — вы управляете их состоянием через код.
#IaC #Ansible #Linux #Hardening #DevSecOps #Automation
Windows Security: Как правильно заблокировать Microsoft Store через AppLocker
Доброе утро! Начинаем день с важного шага по усилению безопасности рабочих станций.
Одна из неочевидных «лазеек» в Windows — стандартные правила AppLocker для упакованных приложений (Packaged apps). По умолчанию они слишком разрешающие и позволяют любому пользователю устанавливать ПО из Microsoft Store, что открывает вектор для нежелательного ПО и потенциальных атак.
Давайте закроем эту дверь, оставив работать только необходимые системные приложения.
План действий:
❌ 1. Удаляем слишком общее правило
В политике AppLocker для Packaged App Rules найдите и удалите правило по умолчанию, которое называется (Default Rule) Allow all signed packaged apps.
✅ 2. Создаём точечное разрешающее правило
Вместо удаленного правила создайте новое, основанное на издателе (Publisher). Разрешите приложения только от Microsoft:
Издатель: CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
Результат: После применения этой политики системные UWP-приложения (Калькулятор, Фотографии и т.д.) продолжат работать, но возможность установки сторонних приложений из Microsoft Store будет заблокирована.
🔄 От Политики к Процессу
Помните главный принцип работы с AppLocker: это не разовая настройка, а непрерывный процесс.
Аудит → Анализ логов → Уточнение правил → Принуждение
Регулярно просматривайте журналы событий AppLocker в режиме аудита, чтобы адаптировать политики к новым легитимным приложениям в вашей среде, прежде чем включать блокировку.
#Security #Windows #AppLocker #BlueTeam #Hardening #GPO
Доброе утро! Начинаем день с важного шага по усилению безопасности рабочих станций.
Одна из неочевидных «лазеек» в Windows — стандартные правила AppLocker для упакованных приложений (Packaged apps). По умолчанию они слишком разрешающие и позволяют любому пользователю устанавливать ПО из Microsoft Store, что открывает вектор для нежелательного ПО и потенциальных атак.
Давайте закроем эту дверь, оставив работать только необходимые системные приложения.
План действий:
❌ 1. Удаляем слишком общее правило
В политике AppLocker для Packaged App Rules найдите и удалите правило по умолчанию, которое называется (Default Rule) Allow all signed packaged apps.
✅ 2. Создаём точечное разрешающее правило
Вместо удаленного правила создайте новое, основанное на издателе (Publisher). Разрешите приложения только от Microsoft:
Издатель: CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
Результат: После применения этой политики системные UWP-приложения (Калькулятор, Фотографии и т.д.) продолжат работать, но возможность установки сторонних приложений из Microsoft Store будет заблокирована.
🔄 От Политики к Процессу
Помните главный принцип работы с AppLocker: это не разовая настройка, а непрерывный процесс.
Аудит → Анализ логов → Уточнение правил → Принуждение
Регулярно просматривайте журналы событий AppLocker в режиме аудита, чтобы адаптировать политики к новым легитимным приложениям в вашей среде, прежде чем включать блокировку.
#Security #Windows #AppLocker #BlueTeam #Hardening #GPO
☠️ Windows Hardening: Убиваем LLMNR и NBT-NS
Если вы проведете аудит безопасности (или пригласите пентестеров), первое, за что они скажут «спасибо» — это включенные протоколы LLMNR и NBT-NS.
В чем суть: Когда Windows не может найти компьютер через DNS, она кричит на всю локальную сеть: «Эй, кто-нибудь знает этот адрес?». Злоумышленник (или утилита Responder) отвечает: «Да, это я, давай свои хеши паролей». И Windows их отдает. Это классическая атака LLMNR Poisoning.
Как закрыть дыру (GPO): Вам не нужны эти протоколы в современной сети с настроенным DNS.
1. LLMNR: Computer Configuration -> Administrative Templates -> Network -> DNS Client 👉 Turn off multicast name resolution = Enabled
2. NBT-NS (NetBIOS): Раздавайте через DHCP опцию: 👉 001 Microsoft Disable Netbios Option = 0x2
Или в свойствах TCP/IP v4 вручную: Disable NetBIOS over TCP/IP.
Результат: Сеть становится тише, а вектор атаки Man-in-the-Middle внутри периметра закрывается.
#windows #security #gpo #hardening #activedirectory
Если вы проведете аудит безопасности (или пригласите пентестеров), первое, за что они скажут «спасибо» — это включенные протоколы LLMNR и NBT-NS.
В чем суть: Когда Windows не может найти компьютер через DNS, она кричит на всю локальную сеть: «Эй, кто-нибудь знает этот адрес?». Злоумышленник (или утилита Responder) отвечает: «Да, это я, давай свои хеши паролей». И Windows их отдает. Это классическая атака LLMNR Poisoning.
Как закрыть дыру (GPO): Вам не нужны эти протоколы в современной сети с настроенным DNS.
1. LLMNR: Computer Configuration -> Administrative Templates -> Network -> DNS Client 👉 Turn off multicast name resolution = Enabled
2. NBT-NS (NetBIOS): Раздавайте через DHCP опцию: 👉 001 Microsoft Disable Netbios Option = 0x2
Или в свойствах TCP/IP v4 вручную: Disable NetBIOS over TCP/IP.
Результат: Сеть становится тише, а вектор атаки Man-in-the-Middle внутри периметра закрывается.
#windows #security #gpo #hardening #activedirectory
👍1
🚪 SSH: Не пускай никого, кроме избранных (AllowUsers)
Все знают: надо отключать вход по паролю (
Допустим, у вас на сервере 50 пользователей (разработчики, сервис-аккаунты). Если у одного из них утечет ключ или пароль — хакер зайдет.
Сделайте так, чтобы по SSH могли заходить только админы.
Настройка
Фрагмент кода
Фишки:
1. Можно указать конкретные логины.
2. Можно привязать логин к IP (manager@IP).
3. Все остальные пользователи (даже если у них есть правильный пароль/ключ) получат "Permission denied".
Это железобетонная защита от случайных дыр в забытых аккаунтах.
#linux #ssh #security #hardening #bestpractice #config
Все знают: надо отключать вход по паролю (
PasswordAuthentication no ) и вход рута ( PermitRootLogin no ). Но есть еще один слой защиты, который часто игнорируют — Белый список пользователей.Допустим, у вас на сервере 50 пользователей (разработчики, сервис-аккаунты). Если у одного из них утечет ключ или пароль — хакер зайдет.
Сделайте так, чтобы по SSH могли заходить только админы.
Настройка
/etc/ssh/sshd_config : В конец файла добавьте:Фрагмент кода
# Разрешить вход ТОЛЬКО этим пользователям
AllowUsers admin deploy_bot manager@192.168.1.*
Фишки:
1. Можно указать конкретные логины.
2. Можно привязать логин к IP (manager@IP).
3. Все остальные пользователи (даже если у них есть правильный пароль/ключ) получат "Permission denied".
Это железобетонная защита от случайных дыр в забытых аккаунтах.
#linux #ssh #security #hardening #bestpractice #config
🔥2👍1
🕵️♂️ Linux: Кто ломился в дверь, пока мы спали?
Пока вы доедали оливье, боты продолжали брутфорсить ваши SSH-порты.
Работа у них такая.
Полезно узнать, с каких IP идет основная атака, чтобы забанить подсети целиком, а не по одному.
Обычный
Команда (Магия AWK):
(Для CentOS/RHEL замените файл на /var/log/secure и поле $(NF-3) на $11, так как формат лога чуть другой).
Результат: Вы увидите четкий список: 5421 192.168.x.x 1200 10.0.x.x
Если видите тысячи попыток с одного IP — это не забывчивый коллега. Это ботнет. В бан его! 🚫
#linux #security #logs #awk #bash #hardening #defense
Пока вы доедали оливье, боты продолжали брутфорсить ваши SSH-порты.
Работа у них такая.
Полезно узнать, с каких IP идет основная атака, чтобы забанить подсети целиком, а не по одному.
Обычный
lastb показывает слишком много мусора. Вытащим только "Топ-10" негодяев одной строкой.Команда (Магия AWK):
# Для Debian/Ubuntu
grep "Failed password" /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr | head -10
(Для CentOS/RHEL замените файл на /var/log/secure и поле $(NF-3) на $11, так как формат лога чуть другой).
Результат: Вы увидите четкий список: 5421 192.168.x.x 1200 10.0.x.x
Если видите тысячи попыток с одного IP — это не забывчивый коллега. Это ботнет. В бан его! 🚫
#linux #security #logs #awk #bash #hardening #defense
🛡️ Active Directory: Группа "Protected Users"
Вы знаете, что если вы зашли Доменным Админом на компьютер пользователя (починить принтер), ваши хеши паролей остались в памяти этого ПК? Хакер запускает Mimikatz и крадет ваши права за секунду.
Есть штатное решение, про которое забывают: группа Protected Users.
Что она делает (для тех, кто в ней состоит):
1. Запрещает кэширование паролей.
2. Запрещает NTLM-аутентификацию (только Kerberos).
3. Запрещает делегирование (Constrained Delegation).
Задача на пятницу: Добавьте свою учетную запись администратора в группу
P.S. Только не добавляйте туда сервис-аккаунты, пока не протестируете — старый софт может отвалиться.
#windows #security #activedirectory #hardening #mimikatz #bestpractice
Вы знаете, что если вы зашли Доменным Админом на компьютер пользователя (починить принтер), ваши хеши паролей остались в памяти этого ПК? Хакер запускает Mimikatz и крадет ваши права за секунду.
Есть штатное решение, про которое забывают: группа Protected Users.
Что она делает (для тех, кто в ней состоит):
1. Запрещает кэширование паролей.
2. Запрещает NTLM-аутентификацию (только Kerberos).
3. Запрещает делегирование (Constrained Delegation).
Задача на пятницу: Добавьте свою учетную запись администратора в группу
Protected Users в AD. Это резко снизит риск компрометации домена, даже если вы случайно залогинитесь на зараженной машине.P.S. Только не добавляйте туда сервис-аккаунты, пока не протестируете — старый софт может отвалиться.
#windows #security #activedirectory #hardening #mimikatz #bestpractice
❤2
🛡️ SSH: Защита от Bruteforce без Fail2Ban? Используем SSH ProxyJump и внутренние лимиты
Многие по привычке ставят Fail2Ban, который парсит логи и забивает таблицу iptables тысячами правил. Но в современных дистрибутивах можно ограничить количество попыток соединений на уровне самого демона или использовать «прыжковый» сервер.
Если вам нужно быстро ограничить аппетиты ботов, обратите внимание на параметр MaxStartups в sshd_config.
Как настроить:
Что это значит:
1. 10: До 10 одновременных неавторизованных подключений разрешены.
2. 30: Если их больше 10, SSH начнет сбрасывать новые попытки с вероятностью 30%.
3. 60: Если попыток больше 60, все новые подключения будут блокироваться до завершения старых.
Это защищает от перегрузки процесса SSH и делает атаку методом перебора бессмысленной.
#security #ssh #linux #devops #hardening #admin
Многие по привычке ставят Fail2Ban, который парсит логи и забивает таблицу iptables тысячами правил. Но в современных дистрибутивах можно ограничить количество попыток соединений на уровне самого демона или использовать «прыжковый» сервер.
Если вам нужно быстро ограничить аппетиты ботов, обратите внимание на параметр MaxStartups в sshd_config.
Как настроить:
В файле /etc/ssh/sshd_config: MaxStartups 10:30:60
Что это значит:
1. 10: До 10 одновременных неавторизованных подключений разрешены.
2. 30: Если их больше 10, SSH начнет сбрасывать новые попытки с вероятностью 30%.
3. 60: Если попыток больше 60, все новые подключения будут блокироваться до завершения старых.
Это защищает от перегрузки процесса SSH и делает атаку методом перебора бессмысленной.
#security #ssh #linux #devops #hardening #admin
✍3
🛡️ Security: SSH Fingerprinting — как не стать жертвой Man-in-the-Middle
Когда вы первый раз подключаетесь к серверу, SSH спрашивает: "Are you sure you want to continue connecting?". 99% админов просто пишут yes. Но если кто-то подменил IP или перехватил трафик, вы отдадите свои ключи или пароль злоумышленнику.
Как проверить отпечаток сервера (Fingerprint) по-умному: Перед подключением запросите отпечаток ключа на самом сервере (через консоль ДЦ или KVM):
Как проверить его локально: Если вы уже подключались и хотите убедиться, что ключ не изменился втихую:
Если отпечатки не совпадают — кабель вон из розетки, вас пытаются взломать.
#security #ssh #mitm #linux #infosec #hardening
Когда вы первый раз подключаетесь к серверу, SSH спрашивает: "Are you sure you want to continue connecting?". 99% админов просто пишут yes. Но если кто-то подменил IP или перехватил трафик, вы отдадите свои ключи или пароль злоумышленнику.
Как проверить отпечаток сервера (Fingerprint) по-умному: Перед подключением запросите отпечаток ключа на самом сервере (через консоль ДЦ или KVM):
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
Как проверить его локально: Если вы уже подключались и хотите убедиться, что ключ не изменился втихую:
ssh-keygen -l -f ~/.ssh/known_hosts -F [IP_ADDRESS]
Если отпечатки не совпадают — кабель вон из розетки, вас пытаются взломать.
#security #ssh #mitm #linux #infosec #hardening
🐧 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
🛡️ Security: SSH по нестандартному порту — защита от «шума» и сканеров 🚪
В условиях массовых блокировок VPN-протоколов, твой SSH-доступ становится основной мишенью для брутфорс-ботов. Оставлять порт 22 открытым в 2026 году — значит забивать логи гигабайтами мусора и рисковать тем, что ТСПУ сочтет твой трафик подозрительным.
Меняем правила игры:
Не забудь открыть порт в фаерволе:
Почему это важно: 99% автоматизированных сканеров и ботов «стучатся» только в 22 порт. Переезд на другой порт снижает нагрузку на CPU (от обработки неудачных попыток входа) и делает твой сервер менее заметным для систем автоматического анализа трафика.
#security #ssh #hardening #linux #sysadmin #infosec #server #admin_future
В условиях массовых блокировок VPN-протоколов, твой SSH-доступ становится основной мишенью для брутфорс-ботов. Оставлять порт 22 открытым в 2026 году — значит забивать логи гигабайтами мусора и рисковать тем, что ТСПУ сочтет твой трафик подозрительным.
Меняем правила игры:
Отредактируй /etc/ssh/sshd_config:
Port 2222 (выбери любой от 1024 до 65535)
Не забудь открыть порт в фаерволе:
ufw allow 2222/tcp
Перезапусти: systemctl restart ssh
Почему это важно: 99% автоматизированных сканеров и ботов «стучатся» только в 22 порт. Переезд на другой порт снижает нагрузку на CPU (от обработки неудачных попыток входа) и делает твой сервер менее заметным для систем автоматического анализа трафика.
#security #ssh #hardening #linux #sysadmin #infosec #server #admin_future
🛡 Security: SSH Knocking — «невидимый» порт для тех, кто знает пароль ✊
Даже если ты сменил порт SSH на 2222, боты-сканеры всё равно его найдут.
Ультимативное решение — Port Knocking.
Твой SSH-порт будет закрыт полностью для всех (даже для тебя), пока ты не «постучишься» в другие закрытые порты в определенной последовательности.
Техническая реализация (через knockd):
Как проверить конфигурацию в Linux:
Результат: Твой сервер выглядит абсолютно «мертвым» для любого внешнего сканера.Нет открытых портов — нет атак.
#security #ssh #portknocking #networking #infosec #sysadmin #hardening #admin_future
Даже если ты сменил порт SSH на 2222, боты-сканеры всё равно его найдут.
Ультимативное решение — Port Knocking.
Твой SSH-порт будет закрыт полностью для всех (даже для тебя), пока ты не «постучишься» в другие закрытые порты в определенной последовательности.
Техническая реализация (через knockd):
Ты отправляешь серию TCP-пакетов на порты, например, 7000, 8000, 9000. Только после этого файрвол открывает 22 порт специально для твоего IP на 10 секунд.
Как проверить конфигурацию в Linux:
# Посмотреть статус службы knockd
sudo systemctl status knockd
# Пример стука с клиента (на Windows/Linux):
knock <IP_сервера> 7000 8000 9000 && ssh user@IP_сервера
Результат: Твой сервер выглядит абсолютно «мертвым» для любого внешнего сканера.
#security #ssh #portknocking #networking #infosec #sysadmin #hardening #admin_future
❤3
🛡️ Security: SSH-ключи с защитой от кражи (Ed25519-SK) и FIDO2 🔑
В 2026 году обычный SSH-ключ на диске — это риск. Если твой ноутбук взломают, ключ улетит к хакеру. Решение — использование аппаратных токенов (типа Yubikey) с типом ключа Ed25519-SK. Такой ключ физически привязан к «железке» и требует физического касания токена для входа.
Как это работает:
Команда для генерации защищенного ключа:
Параметр -O resident позволяет сохранить «ссылку» на ключ прямо на токене, чтобы ты мог зайти на сервер с любого ПК, просто воткнув свой USB-ключ.
#security #ssh #fido2 #yubikey #infosec #hardening #sysadmin #admin_future
В 2026 году обычный SSH-ключ на диске — это риск. Если твой ноутбук взломают, ключ улетит к хакеру. Решение — использование аппаратных токенов (типа Yubikey) с типом ключа Ed25519-SK. Такой ключ физически привязан к «железке» и требует физического касания токена для входа.
Как это работает:
Приватная часть ключа хранится внутри защищенного чипа токена. Даже если файл-заглушка на ПК будет украден, без физического устройства он бесполезен.
Команда для генерации защищенного ключа:
# Генерируем ключ, привязанный к аппаратному токену
ssh-keygen -t ed25519-sk -O resident -O application=ssh:admin-future
Параметр -O resident позволяет сохранить «ссылку» на ключ прямо на токене, чтобы ты мог зайти на сервер с любого ПК, просто воткнув свой USB-ключ.
#security #ssh #fido2 #yubikey #infosec #hardening #sysadmin #admin_future
🐧 Linux: Броня для конфигов — делаем файлы бессмертными через `chattr` 🛡
Знакомая боль: ты кропотливо прописал свои DNS в `/etc/resolv.conf`, а после ребута `NetworkManager` или `systemd-resolved` радостно всё затер и вернул дефолт. Или у тебя есть критически важный баш-скрипт, который стажер может случайно удалить командой `rm -rf`.
Как повесить «броню»:
Используем утилиту
Как снять, когда нужно обновить конфиг:
#linux #chattr #security #hardening #sysadmin #troubleshooting #admin_future
Знакомая боль: ты кропотливо прописал свои DNS в `/etc/resolv.conf`, а после ребута `NetworkManager` или `systemd-resolved` радостно всё затер и вернул дефолт. Или у тебя есть критически важный баш-скрипт, который стажер может случайно удалить командой `rm -rf`.
В Linux есть магия, которая делает файл неизменяемым. Вообще. Даже для пользователя `root`.
Как повесить «броню»:
Используем утилиту
chattr (change attribute) с флагом +i (immutable).
# Делаем файл полностью неизменяемым (нельзя удалить, переименовать, записать)
sudo chattr +i /etc/resolv.conf
# Проверяем, повесился ли атрибут (будет буква 'i' в выводе)
lsattr /etc/resolv.conf
Как снять, когда нужно обновить конфиг:
sudo chattr -i /etc/resolv.conf
Это ультимативная защита от «умных» демонов, которые любят переписывать системные файлы без спроса, и отличный слой защиты от вирусов-шифровальщиков на бэкап-серверах.
#linux #chattr #security #hardening #sysadmin #troubleshooting #admin_future
👍1
🛡️ Безопасность Linux-сервера за 10 минут: Базовый чек-лист 🛡️
1. Обновление и чистка
Первым делом — актуальные патчи. Уязвимости нулевого дня (0-day) в 2026-м вылетают часто, поэтому система должна быть свежей.
2. Защита SSH (Самый важный этап)
Забудь про пароли. Только ключи. И никакого входа под root.
Что сделать: Отредактируй /etc/ssh/sshd_config.
Применить: sudo systemctl restart ssh
3. Настройка фаервола (UFW или nftables)
Закрываем всё, что не используем. Если это веб-сервер, нам нужны только 80, 443 и наш порт SSH.
4. Fail2Ban: Защита от брутфорса
Даже если пароли отключены, боты будут нагружать твой процессор попытками входа. Fail2Ban просто забанит их на уровне IP после пары неудачных попыток.
5. Аудит открытых портов
Проверь, не слушает ли какая-нибудь база данных или служебный демон весь интернет.
Если видишь 0.0.0.0:5432 (PostgreSQL) или 0.0.0.0:6379 (Redis) — это беда. Они должны слушать только 127.0.0.1 или внутреннюю сеть.
#security #linux #sysadmin #hardening #cybersecurity #fail2ban #ufw #admin_future
1. Обновление и чистка
Первым делом — актуальные патчи. Уязвимости нулевого дня (0-day) в 2026-м вылетают часто, поэтому система должна быть свежей.
sudo apt update && sudo apt upgrade -y
# Удаляем лишние пакеты, которые могут быть вектором атаки
sudo apt autoremove && sudo apt autoclean
2. Защита SSH (Самый важный этап)
Забудь про пароли. Только ключи. И никакого входа под root.
Что сделать: Отредактируй /etc/ssh/sshd_config.
# Установи следующие параметры:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
# Опционально: смени порт с 22 на нестандартный (например, 2222)
Port 2222
Применить: sudo systemctl restart ssh
3. Настройка фаервола (UFW или nftables)
Закрываем всё, что не используем. Если это веб-сервер, нам нужны только 80, 443 и наш порт SSH.
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 2222/tcp # Твой новый порт SSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
4. Fail2Ban: Защита от брутфорса
Даже если пароли отключены, боты будут нагружать твой процессор попытками входа. Fail2Ban просто забанит их на уровне IP после пары неудачных попыток.
sudo apt install fail2ban -y
# Конфиг по умолчанию для SSH обычно уже включен.
# Проверить статус:
sudo fail2ban-client status sshd
5. Аудит открытых портов
Проверь, не слушает ли какая-нибудь база данных или служебный демон весь интернет.
# Ищем все слушающие порты
sudo ss -tulpn
Если видишь 0.0.0.0:5432 (PostgreSQL) или 0.0.0.0:6379 (Redis) — это беда. Они должны слушать только 127.0.0.1 или внутреннюю сеть.
Итог: Эти простые действия отсекают 99% автоматизированных атак.
Остальное — это уже тонкий тюнинг и специфические настройки под конкретный проект.
#security #linux #sysadmin #hardening #cybersecurity #fail2ban #ufw #admin_future
✍3🔥2⚡1
🐧 Linux: systemd hardening — твои сервисы запущены в привилегиях которые им не нужны
Коллеги, большинство unit-файлов в продакшне выглядят так: Type=simple, ExecStart=..., Restart=on-failure — и всё. Сервис запускается с правами процесса, может писать куда угодно, видит всю файловую систему и весь сетевой стек. Это нормально для 2010 года.
В systemd 260 (Ubuntu 26.04, Fedora 44) появились дополнительные директивы изоляции и Memory THP-контроль на уровне юнита. Но главное — большинство директив безопасности были доступны давно, просто их не используют.
Зачем это нужно:
Скомпрометированный nginx с PrivateTmp и ProtectSystem=strict не доберётся до ваших SSH-ключей, конфигов баз данных или других сервисов. Изоляция на уровне юнита — это дешёвый слой defence-in-depth, который не требует контейнеров.
Итог: запусти
#linux #systemd #hardening #security #sysadmin #admin_future
Коллеги, большинство unit-файлов в продакшне выглядят так: Type=simple, ExecStart=..., Restart=on-failure — и всё. Сервис запускается с правами процесса, может писать куда угодно, видит всю файловую систему и весь сетевой стек. Это нормально для 2010 года.
В systemd 260 (Ubuntu 26.04, Fedora 44) появились дополнительные директивы изоляции и Memory THP-контроль на уровне юнита. Но главное — большинство директив безопасности были доступны давно, просто их не используют.
# Оцениваем текущий security score сервиса
systemd-analyze security nginx
# Покажет оценку от 0 (UNSAFE) до 10 (SAFE) и что именно проседает
# Добавляем hardening в override без правки оригинального юнита:
systemctl edit nginx
# /etc/systemd/system/nginx.service.d/override.conf
[Service]
# Приватная /tmp — сервис не видит /tmp хоста
PrivateTmp=true
# Запрет на запись в домашние директории
ProtectHome=true
# /usr, /boot, /etc монтируются read-only
ProtectSystem=strict
# Разрешаем писать только в нужные директории
ReadWritePaths=/var/log/nginx /var/cache/nginx /run/nginx
# Убираем все capabilities кроме нужных
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_BIND_SERVICE
# Запрет на новые привилегии через setuid/setgid
NoNewPrivileges=true
# Только нужные syscall-группы
SystemCallFilter=@system-service
SystemCallErrorNumber=EPERM
# Изолируем сетевые namespace-ы (если сервис только слушает)
# PrivateNetwork=true # раскомментировать для полной изоляции
# Контроль памяти (новое в systemd 260)
# Отключаем THP для сервисов где он мешает (Java, Redis)
MemoryTHP=never
# После правки:
systemctl daemon-reload && systemctl restart nginx
# Проверяем новый score
systemd-analyze security nginx
# Цель: зелёный (8+)
Зачем это нужно:
Скомпрометированный nginx с PrivateTmp и ProtectSystem=strict не доберётся до ваших SSH-ключей, конфигов баз данных или других сервисов. Изоляция на уровне юнита — это дешёвый слой defence-in-depth, который не требует контейнеров.
Итог: запусти
systemd-analyze security на своих сервисах сегодня. Гарантирую — будет неприятно, но полезно.#linux #systemd #hardening #security #sysadmin #admin_future
🐧 Linux: живёшь под root в контейнере — живёшь опасно. Исправляем за 10 минут
Коллеги, воскресный пост про вещь, которую игнорируют даже опытные администраторы. Зайди в любой Docker-окружение на среднестатистическом сервере и запусти:
Готов поспорить — большинство контейнеров покажут пустой User. Это означает root внутри. 79% Linux-атак в 2026 году используют легитимные системные инструменты — bash, cron, curl. Контейнер с root-процессом при любом побеге из namespace превращается в полноценный вектор атаки на хост.
Исправляется в три шага:
Зачем это нужно:
Контейнер не является изолированной средой по умолчанию. Безопасность зависит от корректной настройки. Запуск под root — это не дефолт ради удобства, это дефолт ради лени. После вчерашней CVE-2026-31431 «Copy Fail» — любой непривилегированный пользователь на хосте мог стать root. Если контейнер уже запускается как root — второй шаг атаки не нужен.
Итог: один Dockerfile и десять минут — и твои контейнеры перестают быть тривиальным вектором атаки. Запусти аудит сегодня.
#linux #docker #containers #security #hardening #sysadmin #admin_future
Коллеги, воскресный пост про вещь, которую игнорируют даже опытные администраторы. Зайди в любой Docker-окружение на среднестатистическом сервере и запусти:
docker inspect $(docker ps -q) --format '{{.Name}}: User={{.Config.User}}'
Готов поспорить — большинство контейнеров покажут пустой User. Это означает root внутри. 79% Linux-атак в 2026 году используют легитимные системные инструменты — bash, cron, curl. Контейнер с root-процессом при любом побеге из namespace превращается в полноценный вектор атаки на хост.
Исправляется в три шага:
# В Dockerfile: создаём непривилегированного пользователя
FROM ubuntu:24.04
RUN groupadd -r appgroup && \
useradd -r -g appgroup -s /sbin/nologin appuser
# Устанавливаем зависимости под root — пока ещё нужно
RUN apt-get update && apt-get install -y nginx && \
chown -R appuser:appgroup /var/log/nginx /var/cache/nginx
# Переключаемся на непривилегированного
USER appuser
CMD ["nginx", "-g", "daemon off;"]
# Для уже запущенных контейнеров — аудит прямо сейчас:
# Кто реально запускает процессы внутри:
docker exec <container> ps aux | head -5
# В docker-compose.yml — добавляем user для каждого сервиса:
# services:
# app:
# image: myapp:latest
# user: "1001:1001" # uid:gid непривилегированного пользователя
# Запрещаем privilege escalation на уровне демона Docker:
# В /etc/docker/daemon.json:
# {
# "userns-remap": "default",
# "no-new-privileges": true
# }
# Проверяем что флаг no-new-privileges работает:
docker run --security-opt no-new-privileges:true \
--user 1001 alpine whoami
Зачем это нужно:
Контейнер не является изолированной средой по умолчанию. Безопасность зависит от корректной настройки. Запуск под root — это не дефолт ради удобства, это дефолт ради лени. После вчерашней CVE-2026-31431 «Copy Fail» — любой непривилегированный пользователь на хосте мог стать root. Если контейнер уже запускается как root — второй шаг атаки не нужен.
Итог: один Dockerfile и десять минут — и твои контейнеры перестают быть тривиальным вектором атаки. Запусти аудит сегодня.
#linux #docker #containers #security #hardening #sysadmin #admin_future
🐧 Linux: AppArmor vs SELinux в 2026 — выбор который влияет на безопасность при следующем Copy Fail
Коллеги, Copy Fail дал нам хороший повод поговорить о вещи которую большинство откладывает. SELinux и AppArmor работали в режиме enforcing на ваших серверах в момент атаки? Или были отключены "потому что мешают"?
Одна из самых распространённых ошибок — отключить SELinux или AppArmor при первых проблемах. Вместо этого нужно использовать permissive (SELinux) или complain (AppArmor) режимы для отладки. Отключение этих слоёв оставляет систему открытой для атак повышения привилегий.
Быстрый выбор: SELinux — для RHEL/Rocky/AlmaLinux, AppArmor — для Ubuntu/Debian. Это не холивар, это дефолт дистрибутива.
Начинайте с complain/permissive режима для одного конкретного сервиса, собирайте события под реальной нагрузкой, затем переводите в строгий режим. Резкое включение enforcing для всего почти гарантированно сломает что-то неочевидное — unix-сокеты, временные директории, кастомные пути логов.
Зачем именно сейчас:
Copy Fail требует локального доступа — но что если атакующий уже внутри через другую уязвимость? SELinux/AppArmor в enforcing ограничивает что может сделать скомпрометированный процесс даже с root-привилегиями.
Итог: запусти
#linux #apparmor #selinux #security #hardening #sysadmin #admin_future
Коллеги, Copy Fail дал нам хороший повод поговорить о вещи которую большинство откладывает. SELinux и AppArmor работали в режиме enforcing на ваших серверах в момент атаки? Или были отключены "потому что мешают"?
Одна из самых распространённых ошибок — отключить SELinux или AppArmor при первых проблемах. Вместо этого нужно использовать permissive (SELinux) или complain (AppArmor) режимы для отладки. Отключение этих слоёв оставляет систему открытой для атак повышения привилегий.
Быстрый выбор: SELinux — для RHEL/Rocky/AlmaLinux, AppArmor — для Ubuntu/Debian. Это не холивар, это дефолт дистрибутива.
# ---- APPARMOR (Ubuntu/Debian) ----
# Проверяем статус:
aa-status
apparmor_status | grep -E "profiles|processes"
# Включаем enforce для конкретного сервиса:
aa-enforce /etc/apparmor.d/usr.sbin.nginx
systemctl reload apparmor
# Смотрим нарушения в логах (complain mode — для диагностики):
aa-complain /etc/apparmor.d/usr.sbin.nginx
journalctl -k | grep apparmor | tail -20
# Создаём профиль для нового сервиса:
aa-genprof /usr/local/bin/myapp
# Запускаем сервис, делаем типичные операции, останавливаем
# aa-genprof предложит профиль на основе реального поведения
# ---- SELINUX (RHEL/Rocky/AlmaLinux) ----
# Проверяем статус:
getenforce # Enforcing / Permissive / Disabled
sestatus
# Если Disabled — включаем через /etc/selinux/config:
sed -i 's/SELINUX=disabled/SELINUX=enforcing/' /etc/selinux/config
# Перезагрузка обязательна. Сначала переводим в Permissive:
sed -i 's/SELINUX=disabled/SELINUX=permissive/' /etc/selinux/config
# Смотрим что SELinux блокирует:
ausearch -m AVC -ts recent | tail -30
# Генерируем политику под конкретный deny:
ausearch -m AVC -ts recent | audit2allow -M mypolicy
semodule -i mypolicy.pp
# Проверяем нет ли процессов без confinement:
ps -eZ | grep unconfined_t
Начинайте с complain/permissive режима для одного конкретного сервиса, собирайте события под реальной нагрузкой, затем переводите в строгий режим. Резкое включение enforcing для всего почти гарантированно сломает что-то неочевидное — unix-сокеты, временные директории, кастомные пути логов.
Зачем именно сейчас:
Copy Fail требует локального доступа — но что если атакующий уже внутри через другую уязвимость? SELinux/AppArmor в enforcing ограничивает что может сделать скомпрометированный процесс даже с root-привилегиями.
Итог: запусти
getenforce или aa-status прямо сейчас. Если не Enforcing — у тебя есть задача на эту пятницу.#linux #apparmor #selinux #security #hardening #sysadmin #admin_future
🐧 Linux: ModuleJail — сисадмин из Бельгии решил проблему которую не осилил Red Hat
Коллеги, май 2026-го показал: ручной blacklist модулей на флоте из сотен серверов — это не масштабируемо. Пока мы прописывали algif_aead, esp4, esp6 и rxrpc по одному, бельгийский сисадмин и Tesla-хакер Jasper Nuyens написал инструмент который делает это за секунды — для всего флота.
ModuleJail — GPLv3 shell-скрипт который сканирует запущенную Linux-систему и автоматически создаёт blacklist для всех неиспользуемых модулей ядра — без перезагрузки. Работает на Debian, Ubuntu, RHEL, Fedora, AlmaLinux и Arch Linux.
ModuleJail делает снимок загруженных модулей (/proc/modules) и вычисляет разность с полным деревом модулей (/lib/modules/$(uname -r)). Каждый модуль из разности, за исключением встроенного baseline и whitelist администратора, попадает в директиву install в модprobe.d-совместимый blacklist-файл.
Важная оговорка: ModuleJail должен запускаться только после достижения системой стабильного состояния — все сервисы запущены, ФС примонтированы, нужные драйверы загружены. Запуск слишком рано может заблокировать модули нужные позже.
Зачем это важно именно сейчас: AI-assisted security scanning делает с ядром Linux то, что массовый fuzzing сделал с userspace-кодом десять лет назад — только быстрее и в значительно большем масштабе. Много лет скрытых LPE-багов в модулях ядра вот-вот всплывут в быстрой последовательности.
Итог: не заменяет патчинг. Но пока патч не вышел — это лучший способ превратить следующий CVE в «не моя проблема» за счёт сокращения поверхности атаки.
#linux #security #kernel #modulejail #hardening #sysadmin #admin_future
Коллеги, май 2026-го показал: ручной blacklist модулей на флоте из сотен серверов — это не масштабируемо. Пока мы прописывали algif_aead, esp4, esp6 и rxrpc по одному, бельгийский сисадмин и Tesla-хакер Jasper Nuyens написал инструмент который делает это за секунды — для всего флота.
ModuleJail — GPLv3 shell-скрипт который сканирует запущенную Linux-систему и автоматически создаёт blacklist для всех неиспользуемых модулей ядра — без перезагрузки. Работает на Debian, Ubuntu, RHEL, Fedora, AlmaLinux и Arch Linux.
ModuleJail делает снимок загруженных модулей (/proc/modules) и вычисляет разность с полным деревом модулей (/lib/modules/$(uname -r)). Каждый модуль из разности, за исключением встроенного baseline и whitelist администратора, попадает в директиву install в модprobe.d-совместимый blacklist-файл.
# Установка и запуск за одну команду:
curl -fsSL https://raw.githubusercontent.com/jnuyens/modulejail/main/modulejail \
-o modulejail && chmod +x modulejail
# Запускаем с профилем для сервера (default: conservative)
# ВАЖНО: запускать только после полной загрузки всех сервисов
sudo sh modulejail -p conservative
# Три профиля:
# minimal — только core ФС и критичные модули
# conservative — minimal + драйверы для VM/bare-metal серверов (DEFAULT)
# desktop — conservative + WiFi, BT, audio, video
# Результат: /etc/modprobe.d/modulejail-blacklist.conf
# Смотрим сколько модулей заблокировано:
wc -l /etc/modprobe.d/modulejail-blacklist.conf
# Логирование заблокированных попыток загрузки (v1.2+):
# Каждая попытка modprobe <blocked_module> пишет в syslog:
journalctl -t modulejail -f
# Откат без перезагрузки — просто удаляем файл:
rm /etc/modprobe.d/modulejail-blacklist.conf
# Для немедленного эффекта — modprobe нужный_модуль вручную
# Ansible для флота (всё в git):
# - name: Deploy ModuleJail
# script: modulejail -p conservative
# args:
# creates: /etc/modprobe.d/modulejail-blacklist.conf
Важная оговорка: ModuleJail должен запускаться только после достижения системой стабильного состояния — все сервисы запущены, ФС примонтированы, нужные драйверы загружены. Запуск слишком рано может заблокировать модули нужные позже.
Зачем это важно именно сейчас: AI-assisted security scanning делает с ядром Linux то, что массовый fuzzing сделал с userspace-кодом десять лет назад — только быстрее и в значительно большем масштабе. Много лет скрытых LPE-багов в модулях ядра вот-вот всплывут в быстрой последовательности.
Итог: не заменяет патчинг. Но пока патч не вышел — это лучший способ превратить следующий CVE в «не моя проблема» за счёт сокращения поверхности атаки.
#linux #security #kernel #modulejail #hardening #sysadmin #admin_future
🐧 Linux: LKRG 1.0 — runtime-защита ядра вышла из experimental, и вот почему это важно сейчас
Коллеги, добрый понедельник и добро пожаловать в июнь. Май 2026 дал нам шесть уязвимостей ядра за три недели. Лучший момент поговорить об инструменте который менял бы картину для всех из них.
Linux Kernel Runtime Guard (LKRG) официально достиг версии 1.0 — переход от экспериментального проекта к production-ready инструменту. После нескольких лет разработки, тестирования и реального использования релиз 1.0 сигнализирует уверенность в стабильности и долгосрочном направлении.
Что делает LKRG: это loadable kernel module который мониторит целостность ядра в runtime. LKRG выполняет runtime integrity checking ядра Linux и детектирование эксплуатации уязвимостей безопасности против ядра. Это не патч ядра — модуль, который можно собрать для широкого спектра mainline и дистрибутивных ядер без их патчинга.
Если бы LKRG стоял на серверах в мае: он бы детектировал попытки page-cache write от Copy Fail/Dirty Frag/Fragnesia и реагировал — вплоть до kernel panic или kill процесса. Это не замена патчу, но дополнительный слой.
Важные предупреждения: performance overhead есть — около 1.7% на Intel i7, 0.1% на Ryzen. Для production-серверов это приемлемо. Опция lkrg.block_modules блокирует загрузку новых модулей — не включать если система загружает модули динамически. Начинать с profile_enforce=0 или 1 и проверять false positives несколько дней.
Итог: после мая 2026 — LKRG в production это уже не паранойя. Это разумная defence-in-depth против целого класса атак. Ставь в лабу сегодня, в прод — после тестирования.
#linux #lkrg #kernel #security #hardening #sysadmin #admin_future
Коллеги, добрый понедельник и добро пожаловать в июнь. Май 2026 дал нам шесть уязвимостей ядра за три недели. Лучший момент поговорить об инструменте который менял бы картину для всех из них.
Linux Kernel Runtime Guard (LKRG) официально достиг версии 1.0 — переход от экспериментального проекта к production-ready инструменту. После нескольких лет разработки, тестирования и реального использования релиз 1.0 сигнализирует уверенность в стабильности и долгосрочном направлении.
Что делает LKRG: это loadable kernel module который мониторит целостность ядра в runtime. LKRG выполняет runtime integrity checking ядра Linux и детектирование эксплуатации уязвимостей безопасности против ядра. Это не патч ядра — модуль, который можно собрать для широкого спектра mainline и дистрибутивных ядер без их патчинга.
Если бы LKRG стоял на серверах в мае: он бы детектировал попытки page-cache write от Copy Fail/Dirty Frag/Fragnesia и реагировал — вплоть до kernel panic или kill процесса. Это не замена патчу, но дополнительный слой.
# УСТАНОВКА:
# Rocky/AlmaLinux/RHEL (через SIG Security):
dnf install epel-release
dnf install lkrg-dkms
# Debian/Ubuntu (через Kicksecure repo):
curl -fsSL https://www.kicksecure.com/keys/derivative.asc | \
gpg --dearmor | tee /usr/share/keyrings/derivative.asc
echo "deb [signed-by=/usr/share/keyrings/derivative.asc] \
https://deb.kicksecure.com bookworm main" | \
tee /etc/apt/sources.list.d/lkrg.list
apt update && apt install lkrg
# Загружаем модуль:
modprobe lkrg
dmesg | grep -i lkrg | tail -5
# Проверяем статус:
sysctl lkrg.profile_enforce
# 0=monitoring, 1=detect+log, 2=balanced, 3=heavy, 4=paranoid
# ВАЖНО: начинаем с мониторинга, не с enforce:
sysctl -w lkrg.profile_enforce=1
# Смотрим логи несколько дней — ищем false positives:
journalctl -k | grep -i lkrg | tail -20
# После проверки — включаем защиту:
echo "lkrg.profile_enforce=2" >> /etc/sysctl.d/01-lkrg.conf
# Автозагрузка:
echo "lkrg" >> /etc/modules-load.d/lkrg.conf
Важные предупреждения: performance overhead есть — около 1.7% на Intel i7, 0.1% на Ryzen. Для production-серверов это приемлемо. Опция lkrg.block_modules блокирует загрузку новых модулей — не включать если система загружает модули динамически. Начинать с profile_enforce=0 или 1 и проверять false positives несколько дней.
Итог: после мая 2026 — LKRG в production это уже не паранойя. Это разумная defence-in-depth против целого класса атак. Ставь в лабу сегодня, в прод — после тестирования.
#linux #lkrg #kernel #security #hardening #sysadmin #admin_future
Алертинг в SIEM / EDR: повесить триггеры на запуск
#skills #windows #hardening #lolbins #asr #applocker #threathunting #sysadmin #admin_future
mshta.exe, активность интерпретаторов wscript.exe/cscript.exe, а также вызов системных утилит за пределами C:\Windows\System32.#skills #windows #hardening #lolbins #asr #applocker #threathunting #sysadmin #admin_future