Гид по технологиям

Как проверять входы в систему с помощью last и lastb

• 8 min read • Системное администрирование • Обновлено 24 Nov 2025
Как проверять входы в систему с last и lastb
Как проверять входы в систему с last и lastb

Иллюстрация: команда last и пример вывода в терминале

Быстрые ссылки

  • Файл wtmp
  • Команда last
  • Показать конкретное количество строк
  • Показывать имена сетей для удалённых пользователей
  • Скрыть IP и имена сети
  • Выбор записей по дате
  • Поиск до конечной даты
  • Форматы времени и дат
  • Поиск по относительным единицам
  • Вчера, сегодня и сейчас
  • Опция present
  • Команда lastb
  • Итог

Файл wtmp

В Linux (и похожих Unix-системах) события входа/выхода сохраняются в бинарном файле wtmp. Этот файл фиксирует моменты входа, выхода, перезагрузок и uptime через записи с временной меткой. “wtmp” — стандартный архив успешных сессий; содержимое не является читаемым текстом, поэтому для анализа используют специализированные утилиты.

Краткое определение: wtmp — бинарный журнал успешных сеансов входа/выхода; btmp — бинарный журнал неудачных попыток входа.

Почему это важно: аудит по wtmp помогает обнаруживать посторонние подключения, анализировать временные паттерны активности и связывать успешные и неудачные попытки входа.

Команда last

last считывает wtmp и выводит построчный список сессий. По умолчанию вывод идёт в хронологическом порядке от самых новых записей вне консоли до самых старых.

Простой запуск:

last

Что содержится в каждой строке (слева направо):

  • имя пользователя;
  • терминал или псевдо-терминал (например, tty1, pts/3 или :0 для локальной сессии X);
  • IP-адрес или имя удалённого хоста (если доступно);
  • дата и время входа;
  • длительность сессии или пометка “still logged in” / “still running” для текущих сессий.

Пояснение: в журнал автоматически попадает запись пользователя reboot при каждом запуске системы; поле терминала содержит информацию о версии ядра, а длительность для таких записей отражает uptime.

Показать конкретное количество строк

Если wtmp большой, полезно ограничить количество выводимых строк. last принимает параметр с дефисом, обозначающий число строк от начала (то есть самых последних сессий):

last -5

Команда вернёт пять самых последних записей — обычно то, что администратор хочет увидеть в первую очередь.

Первые пять строк вывода last в терминале

Показывать имена сетей для удалённых пользователей

Опция -d пытается разрешить IP-адрес в сетевое имя (обратное DNS-резолвинг). Это удобно, если вам важны доменные имена, а не только IP.

last -d

Важно: резолвинг выполняется через системный DNS и может быть медленным или недоступным; иногда адрес остаётся в виде IP.

Вывод last -d с попыткой разрешения IP в сетевые имена

Скрыть IP-адреса и сетевые имена

Если вам не нужны IP-адреса (например, для печатного отчёта), используйте опцию -R, чтобы подавить поле хоста.

last -R

В следующих примерах по удобству для читаемости использована опция -R; но при расследовании подозрительных подключений поле с IP крайне полезно, и его лучше не скрывать.

Вывод last -R без поля хоста

Выбор записей по дате

Опция -s (since) ограничивает вывод записями, произошедшими начиная с указанной даты/времени. Формат даты предпочтителен ISO-подобный (YYYY-MM-DD или компактный YYYYMMDDHHMMSS), но поведение может отличаться между реализациями.

Пример: показать записи с 00:00 26 мая 2019 года:

last -R -s 2019-05-26

Вывод включает записи, начиная с 00:00 указанной даты и до конца лога.

Вывод last -R -s 2019-05-26

Поиск до конечной даты

Опция -t (until) задаёт верхнюю границу временного интервала. Вместе -s и -t позволяют получить записи между двумя моментами.

Например, чтобы получить события с 2019-05-26 00:00 до 2019-05-27 00:00:

last -R -s 2019-05-26 -t 2019-05-27

Обратите внимание, что некоторые форматы дат и времени в разных дистрибутивах могут работать по-разному — ниже есть раздел про форматы.

Форматы времени и дат

Поддерживаемые форматы, которые чаще всего работают:

  • YYYYMMDDhhmmss (пример: 20190526110000)
  • YYYY-MM-DD (время устанавливается на 00:00:00)
  • hh:mm (день — сегодня, секунды = 00)
  • now, yesterday, today, tomorrow
  • относительные выражения: +5min, -2days

Пример, который не сработал в ряде тестов с пробельным разделением между датой и временем (зависит от реализации):

last -R -s 2019-05-26 11:00 -t 2019-05-27 13:00

Вместо него надёжно работать будет компактная форма:

last -R -s 20190526110000 -t 20190527130000

Совет: если команда не возвращает ожидаемых записей, попробуйте сначала проверить более широкие интервалы и затем сужать временной диапазон.

Поиск по относительным единицам

Можно задавать интервалы относительно текущего времени. Пример: получить записи с двух дней назад до одного дня назад:

last -R -s -2days -t -1days

Это удобно в автоматизированных скриптах для сбора метрик за последние N дней.

Вчера, сегодня и сейчас

Ключевые «шорткаты»:

last -R -s yesterday -t today

Этот вызов покажет события начиная с 00:00 вчерашнего дня до 00:00 сегодняшнего (не включает текущие записи сегодня). Чтобы охватить период от начала дня до текущего момента, используйте:

last -R -s today -t now

Опция now эквивалентна сегодняшней дате и текущему времени.

Опция present

-p позволяет найти, кто был залогинен в конкретный момент времени, независимо от времени входа/выхода. Если указан только hh:mm, считается, что дата — сегодня.

Примеры:

last -R -p 09:30
last -R -p now

Записи, которые покрывают указанное время, будут включены. Для текущего момента это даёт тот же результат, что и команда who, но last -p может показать пользователей, которые в момент времени были активны, даже если они позже вышли.

Пример использования -p для определения пользователей в момент времени

Команда lastb

lastb читает btmp и показывает неудачные попытки входа. Формат вывода похож на last, но длительность сессий равна 00:00, потому что попытки не привели к успешной сессии.

Важно: btmp обычно доступен только для root, поэтому используйте sudo:

sudo lastb -R

lastb полезна для обнаружения брутфорс-атак, последовательных неудачных попыток и источников таких попыток.

Когда last может не показать ожидаемые данные

  • Файл wtmp/btmp может быть очищен администратором или ротацией логов; старые записи удалены.
  • Если система использует альтернативные механизмы аутентификации или централизованные логи (например, PAM с удалёнными аудит-агентами), часть информации может не попасть в локальный wtmp.
  • Виртуализованные окружения или контейнеры иногда не пишут в общесистемный wtmp или имеют собственные журналы.
  • Некорректные форматы даты/времени в командах -s/-t в зависимости от версии утилиты.

Альтернативы и дополнения

  • journalctl -b /var/log/auth.log — для систем, где события аутентификации пишутся в systemd-journald или текстовые логи.
  • ausearch/auditctl — для детального аудита через Linux Audit Framework.
  • Системы централизованного логирования (syslog/nginx/ELK, SIEM) — позволяют коррелировать входы с другими событиями.
  • lastlog — показывает последний вход для каждого пользователя (полезно для быстрого обзора).

Выбор инструмента зависит от задачи: быстрый локальный аудит — last/lastb; корелляция и долгосрочный анализ — централизованный SIEM.

Методика расследования подозрительного входа (мини-SOP)

  1. Сбор начальных данных
    • last -R -s <дата> -t <дата> — получить список подозрительных сессий.
    • sudo lastb -R -s <дата> -t <дата> — собрать неудачные попытки.
  2. Идентификация источника
    • Если есть IP, выполнить whois и обратный DNS, посмотреть геолокацию (только для ориентира).
  3. Сопоставление с другими логами
    • /var/log/auth.log, journalctl, sudo/secure — проверить привилегированные действия.
  4. Оценка риска
    • Были ли выполнены команды с повышенными привилегиями? Есть ли следы отключения журналирования?
  5. Контейнеризация и учет пользователей
    • Проверить, не использовал ли пользователь общий аккаунт (например, ubuntu, ec2-user).
  6. Ответные меры
    • Сброс пароля, блокировка IP или аккаунта, уведомление владельца системы и запись инцидента.
  7. Документирование
    • Сохранить выводы (включая содержимое wtmp/btmp при помощи last -f PATH, если нужно) и временные метки.

Контрольные списки по ролям

Администратор:

  • Проверил wtmp и btmp за интересующий период.
  • Сопоставил записи с /var/log/auth.log и journalctl.
  • Проверил sudo-историю и crontab на подозрительные задания.
  • При необходимости заблокировал аккаунт и запретил доступ по ключу/паролю.

Аналитик SOC:

  • Сверил IP-источники с угрозоразведкой и списками подозрительных адресов.
  • Оценил попытки брутфорса (частота, временные окна).
  • Подготовил временную шкалу событий для инцидент-репорта.

Helpdesk/поддержка:

  • Проверил, не связана ли активность с пользователем (путешествие, смена IP).
  • Помог пользователю безопасно сменить пароль и настроить MFA.

Чек-лист при расследовании инцидента (кратко)

  • Сохранить копии текущих логов и wtmp/btmp.
  • Зафиксировать точные временные метки и смещения временных зон.
  • Проверить совпадения между успешными и неудачными входами.
  • Проверить время и командную историю (если доступна).
  • Изолировать скомпрометированные учётные записи.

Тесты и критерии приёмки

Критерии приёмки инструментов и сценариев тестирования:

  • Команда last возвращает записи за указанный интервал при корректных параметрах.
  • Команда lastb возвращает неудачные попытки и требует root-доступ.
  • Опция -R действительно скрывает поле хоста.
  • Опция -d разрешает DNS-имена, если есть обратная запись.

Тестовые сценарии:

  • Создать тестовую учётную запись, выполнить вход и выход, убедиться, что запись появилась в last.
  • Смоделировать неудачную попытку входа и проверить lastb.
  • Проверить поведение при ротации файлов wtmp/btmp (архивация и восстановление).

Шпаргалка команд (cheat sheet)

last                     # показать все записи из wtmp
last -5                  # 5 последних записей
last -R                  # скрыть поле хоста (IP/имя)
last -d                  # попытаться разрешить IP в имя
last -s 2019-05-26       # записи с 2019-05-26 00:00
last -s 20190526110000   # записи с точного времени
last -s -2days -t -1days # за относительный интервал
last -p 09:30            # кто был в 09:30 сегодня
sudo lastb -R            # просмотреть btmp (неудачи)

Дерево принятия решения (Mermaid)

flowchart TD
  A[Есть подозрительная сессия?] -->|Нет| B[Завершить]
  A -->|Да| C{Есть IP в записи?}
  C -->|Да| D[Проверить whois, DNS, блокировать IP при необходимости]
  C -->|Нет| E[Проверить локальные учетные записи и sudo logs]
  D --> F[Сопоставить с auth.log/journalctl]
  E --> F
  F --> G{Найдены привилегированные действия?}
  G -->|Да| H[Эскалировать инцидент, изолировать систему]
  G -->|Нет| I[Отметить и мониторить]

Сценарии, когда процедура не сработает

  • wtmp/btmp были повреждены или удалены — в этом случае придётся опираться на другие логи и резервные копии.
  • Если злоумышленник сменил или подделал системное время, временные метки могут быть некорректными.
  • В контейнерных окружениях события могут не записываться в системный wtmp.

Безопасность и приватность

  • Храните резервные копии wtmp/btmp в защищённом месте; это чувствительные журналы.
  • При обмене выводами с третьими лицами удаляйте или маскируйте IP/hostname, если важно соблюдение приватности.
  • Используйте MFA и ограничение входа по IP для снижения риска удалённых атак.

Короткая методика проверки (для быстрой работы)

  1. last -R -5 — быстрый обзор последних сессий.
  2. sudo lastb -R -5 — проверить неудачные попытки.
  3. last -R -s today -t now — кто был сегодня.
  4. Сопоставить с journalctl и auth.log при подозрениях.

Глоссарий (одна строка)

wtmp — бинарный журнал успешных входов/выходов; btmp — бинарный журнал неудачных попыток; last — утилита для чтения wtmp; lastb — утилита для чтения btmp.

Итог

Команды last и lastb — простые и надёжные инструменты для локального аудита входов в систему. Они даёт быстрый обзор того, кто и когда подключался к вашей машине, и служат хорошей отправной точкой при расследовании подозрительной активности. Для глубокой аналитики стоит сочетать их вывод с системными журналами, аудит-логами и централизованными системами логирования.

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

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро