Понять, кто заходил на сервер, какие команды запускал и сколько процессорного времени съел, можно без тяжёлых агентов. Для этого есть учёт процессов (process accounting) из GNU Accounting Utilities: пакет acct в Debian и Ubuntu, psacct в RHEL и Fedora. Рядом с ним классические last и lastb, которые показывают входы в систему. С ними в Debian 13 и Ubuntu 26.04 есть важное изменение, о нём ниже.
Зачем это нужно
- Видеть, какие команды реально запускаются на общем сервере или jump host.
- Оценить, кто сколько сидит на сервере и когда пики входов.
- Найти неудачные попытки входа по SSH.
- Собрать историю для разбора инцидента. Это не замена auditd и SIEM, но быстрый первый слой.
Ядро при включённом учёте пишет запись о каждом завершённом процессе в файл учёта. Поверх него работают lastcomm, sa и accton. Утилита ac из того же пакета считает уже не процессы, а время сессий по файлу входов wtmp.
Установка acct и psacct
В Debian и Ubuntu пакет называется acct, в Ubuntu 26.04 это версия 6.6.4. Сервис включает учёт сам:
sudo apt install acct sudo systemctl enable --now acct systemctl status acct
В RHEL, Rocky, Alma и Fedora пакет и сервис называются psacct:
sudo dnf install psacct sudo systemctl enable --now psacct
Файл учёта в Debian и Ubuntu лежит в /var/log/account/pacct, в RHEL в /var/account/pacct. В Ubuntu 26.04 пакет сразу ставит правило logrotate и таймер acct-monthly-report с ежемесячным отчётом, так что файл не растёт бесконечно.
lastcomm: какие команды запускались
lastcomm читает файл учёта и показывает завершённые команды: имя, флаги, пользователя, терминал, процессорное время и время запуска. Можно отфильтровать по команде, пользователю или терминалу:
sudo lastcomm sudo lastcomm alice sudo lastcomm python3 # только записи, где совпали все условия sudo lastcomm --strict-match --command rm --user root
Так удобно искать, кто запускал rm, scp или curl после инцидента. Помните про ограничения: в учёт попадают только процессы, встроенные команды оболочки вроде cd или echo туда не попадают, а вместо аргументов записано только имя команды.
sa: сводка по командам и пользователям
sa сводит файл учёта: сколько раз вызывали каждую команду, сколько ушло реального и процессорного времени, сколько было операций ввода-вывода. Сводку можно сохранить в файлы savacct и usracct.
sudo sa # сводка по командам sudo sa -m # по пользователям: число процессов и минуты CPU sudo sa -u # для каждой записи пользователь и команда sudo sa -c # с процентами от общего sudo sa -s # слить данные в savacct и usracct
accton: включить и выключить учёт вручную
Обычно учёт включает systemd-сервис, но если нужно сделать это руками, есть accton:
sudo accton on # файл по умолчанию sudo accton /var/log/account/pacct # конкретный файл sudo accton off
Надёжнее держать включённым штатный сервис acct или psacct, чем запускать accton из cron при загрузке.
ac: время сессий
ac считает время подключений пользователей в часах по файлу /var/log/wtmp:
ac # общее время ac -p # по пользователям ac -d # по дням
last и lastb в Debian 13 и Ubuntu 26.04
Классические last, lastb и lastlog читали файлы /var/log/wtmp, /var/log/btmp и /var/log/lastlog. В этих форматах не хватает места под время после 2038 года, и в Debian 13 старые команды из util-linux убрали. Замена такая: last из пакета wtmpdb (вместе с libpam-wtmpdb), lastlog2 вместо lastlog, а вместо lastb команда lslogins --failed. В Ubuntu 26.04 last тоже приходит из пакета wtmpdb, а lslogins там лежит в пакете util-linux-extra.
lslogins --failed. Источник: debian.org, Debian 13 release notes.last # входы и перезагрузки last reboot last alice sudo lslogins --failed # неудачные входы вместо lastb lastlog2 # последний вход по учёткам
На системах со старым форматом, например Ubuntu 24.04 или Debian 12, всё работает как раньше: last читает /var/log/wtmp, а sudo lastb показывает неудачные входы из /var/log/btmp. Если wtmp на системе больше не ведётся, ac из пакета acct считать будет нечего.
Неудачные входы по SSH в любом случае видны в журнале. В Ubuntu и Debian сервис называется ssh, в RHEL sshd:
sudo journalctl -u ssh --since today | grep -i fail
Что ещё держать рядом
- who и w показывают, кто на сервере прямо сейчас.
- auditd и ausearch нужны, если требуется полноценный аудит execve, файлов и sudo.
- История оболочки слабый источник: её легко почистить, учёт процессов надёжнее.
- Файл учёта на нагруженном сервере растёт быстро, проверьте logrotate.
В итоге acct или psacct вместе с last дают быстрый минимум для общих серверов и jump host: какие команды запускались, кем и сколько ресурсов ушло. Для строгого аудита добавляйте auditd и централизованные логи, а на Debian 13 и Ubuntu 26.04 учитывайте, что last теперь из wtmpdb, а lastb заменил lslogins --failed.
Источники и ссылки
lslogins --failed.
wtmpdb в Ubuntu 26.04
Пакет, из которого в Ubuntu 26.04 приходит команда last.
last(1), man7.org
Классический last: входы и перезагрузки из wtmp, lastb для btmp.