О чем статья и кому пригодится

Эта шпаргалка — быстрый рабочий инструмент для аналитиков DFIR/Blue Team и администраторов, которым нужно провести первичный live response в Linux: зафиксировать состояние, собрать артефакты, выделить аномалии и подготовить базу для дальнейшей форензики (off‑host анализ образов, таймлайнов и журналов).

Принципы работы аналитика: 

  • минимизируем изменения на целевой системе;

  • всё, что собираем, хешируем;

  • фиксируем контекст (версию ОС, локаль/часовой пояс, сетевое окружение);

  • по возможности работаем из однопользовательской сессии с ограниченными правами, повышая привилегии только точечно.

Готов? Погнали!

1. Быстрый чек-лист live response

  1. Зафиксируйте дату/время и часовой пояс: 

    bash date -u; timedatectl

  2. Снимите базовые системные метрики и аптайм:

     bash uname -a; cat /etc/os-release uptime; who; w free -h; df -hT

  3. Список процессов/служб и аномалий автозапуска: 

    bash ps auxf --sort=-%mem | head -n 30 systemctl list-units --type=service --state=running systemctl list-timers --all

  4. Сетевые соединения и прослушивание портов: 

    bash ss -tupan; ip -br a; ip r firewall-cmd --list-all 2>/dev/null || iptables -S

  5. Пользователи, входы, sudo, история логинов: 

    bash who; last -F | head -n 25; lastlog | head getent passwd | awk -F: '$3>=1000{print $1,$6,$7}' grep -E '^\s*%?wheel|sudo' /etc/sudoers /etc/sudoers.d/* 2>/dev/null for u in $(awk -F: '$3>=1000{print $1}' /etc/passwd); do tail -n 50 /home/$u/.bash_history 2>/dev/null; done

  6. Журналы и аномалии загрузки/авторизации: 

    bash journalctl -p warning --since "2 days ago" journalctl -u sshd --since "7 days ago" grep -Ei 'fail|error|denied' /var/log/* /var/log/*/* 2>/dev/null | head -n 200

  7. Открытые файлы/сокеты и запущенные из /tmp: 

    bash lsof -nP | head lsof -nP +L1 # бинарники без ссылок ps aux | grep -E '(^|/)(tmp|\.cache|\.local)/'

  8. SUID/SGID и подозрительные права: 

    bash find / -xdev -type f -perm -4000 -o -perm -2000 2>/dev/null

  9. Пакеты/обновления и изменения: 

    bash rpm -qa --last | head -n 30 dnf history | head -n 20

  10. Создайте бандл с артефактами и хешами:

    bash ref=/root/ir_$(hostname)_$(date -u +%Y%m%dT%H%M%SZ) mkdir -p "$ref"/{sys,logs,net,users} (uname -a; cat /etc/os-release; date -u) > "$ref/sys/info.txt" cp -a /var/log "$ref/logs/" ss -tupan > "$ref/net/ss.txt"; ip a > "$ref/net/ip_a.txt"; ip r > "$ref/net/routes.txt" ps auxf > "$ref/sys/ps.txt"; systemctl list-units > "$ref/sys/systemd_units.txt" tar -C "$(dirname "$ref")" -czf "$ref.tgz" "$(basename "$ref")" sha256sum "$ref.tgz" > "$ref.tgz.sha256"

Фиксация даты/таймзоны и версии ОС 
Фиксация даты/таймзоны и версии ОС 

2. Системные ресурсы и аптайм

bash uptime; who; w top -b -n1 | head -n 20 free -h; df -hT 

Проверяем загрузку CPU/IO, количество пользователей, своп и заполнение томов — всплески / неожиданные пользователи — повод углубиться.

3. Журналы (journald и /var/log)

bash journalctl --no-pager -b # текущая загрузка journalctl -p err..alert --since "24 hours ago" journalctl -u sshd --since "7 days ago" ls -lh /var/log; ls -lh /var/log/secure* /var/log/auth.log* 2>/dev/null

Ищем массовые неудачные logon’ы, перезапуски сервисов, ошибки SELinux и т.п.

Примеры неудачных попыток входа и успешной ключевой аутентификации
Примеры неудачных попыток входа и успешной ключевой аутентификации

4. Пользователи и входы

bash last -F | head -n 30 lastlog | head getent passwd | awk -F: '$3<1000{print "sys:",$1} $3>=1000{print "user:",$1,$6,$7}' grep -E '^\s*%?wheel|sudo' /etc/sudoers /etc/sudoers.d/* 2>/dev/nullДля историй команд:bash for u in $(awk -F: '$3>=1000{print $1}' /etc/passwd); do echo "== $u ==" tail -n 100 /home/$u/.bash_history 2>/dev/null done

5. Процессы и службы

bash ps auxf --sort=-%cpu | head -n 30 systemctl --failed systemctl list-timers --all

Срез по процессам: полезно отсортировать по CPU/памяти и посмотреть деревья
Срез по процессам: полезно отсортировать по CPU/памяти и посмотреть деревья

6. Сеть и брандмауэр

bash ss -tupan | awk 'NR<50{print}' ip -br a; ip r firewall-cmd --state 2>/dev/null && firewall-cmd --list-all || iptables -S

В примере — локальные и активные соединения
В примере — локальные и активные соединения
Службы и открытые порты в активной зоне firewalld
Службы и открытые порты в активной зоне firewalld

7. Открытые файлы и дескрипторы

bash lsof -nP | head -n 50 lsof -nP +L1 # запущенные «мёртвые» бинарники (удалённые файлы) fuser -v 22/tcp 2>/dev/null

Открытые файлы и дескрипторы (lsof, fuser)
Открытые файлы и дескрипторы (lsof, fuser)

8. Автозагрузка/планировщики

bash systemctl list-unit-files --type=service | grep enabled systemctl list-timers --all crontab -l ls -la /etc/cron.* /var/spool/cron 2>/dev/null

Автозагрузка и планировщики (systemd timers, cron)
Автозагрузка и планировщики (systemd timers, cron)

9. Пакеты/изменения

bash rpm -qa --last | head -n 25 dnf history info last 2>/dev/null || true

Пакеты и изменения (rpm, dnf history)
Пакеты и изменения (rpm, dnf history)

10. Права и артефакты файловой системы

bash find / -xdev -type f -perm -4000 -o -perm -2000 2>/dev/null stat -c '%n %A %U:%G %s %y' /etc/passwd /etc/shadow /etc/ssh/sshd_config 2>/dev/null

Права и артефакты файловой системы (SUID/SGID, stat)
Права и артефакты файловой системы (SUID/SGID, stat)

11. Съём артефактов и таймлайн

Минимальный бандл:bash ref=/root/ir_$(hostname)_$(date -u +%Y%m%dT%H%M%SZ) mkdir -p "$ref"/{sys,logs,net} cp -a /var/log "$ref/logs/" ps auxf > "$ref/sys/ps.txt" ss -tupan > "$ref/net/ss.txt" tar -C "$(dirname "$ref")" -czf "$ref.tgz" "$(basename "$ref")" sha256sum "$ref.tgz" > "$ref.tgz.sha256"

Более продвинутый таймлайн делайте через Plaso (log2timeline) и анализируйте в Timesketch.

Съём артефактов и таймлайн (бандл + SHA256)
Съём артефактов и таймлайн (бандл + SHA256)

12. Память (RAM) и swap

Захват оперативной памяти на проде требует утверждённых процедур (LiME/avml), совместимости ядра и оценки рисков. В большинстве случаев достаточно живых артефактов и журналов.

Для swap: 

bash swapon --show; cat /proc/swaps

Память (RAM) и swap (free, swapon, vmstat)
Память (RAM) и swap (free, swapon, vmstat)

Важно: минимизируйте изменения на пострадавшем хосте; всё собранное хешируйте; фиксируйте часовой пояс и контекст. По возможности работайте с наименьшими привилегиями.

! Официальные ресурсы и документация !

Рекомендуемые книги

  • Brian Carrier — File System Forensic Analysis

  • Ligh, Case, Levy, Walters — The Art of Memory Forensics

  • Golden G. Richard III — Practical Forensic Imaging

  • Tony Campbell — Practical Linux Forensics / Philip Polstra — Linux Forensics (Рекомендую в первую очередь!)

  • Don Murdoch — Blue Team Handbook: Incident Response & Threat Hunting


Заключение

Ну, что, друг, мы проделали большую работу. Спасибо тебе за то что дочитал до конца!

Шпаргалка не заменяет методологию и инструменты расследования, но позволяет быстро структурировать первичный осмотр Linux‑хоста, зафиксировать ключевые артефакты и понять, куда копать дальше. Под каждую среду (bare‑metal, VM, контейнеры, EDR на хосте) полезно иметь собственный набор команд и «заготовок» экспорта.