Какой командой посмотреть список последних входов в систему в Linux?
Комментарии (2)
Ответ сгенерирован нейросетью и может содержать ошибки
Команды для просмотра последних входов в систему в Linux
В Linux существует несколько ключевых команд и методов для анализа последних входов пользователей в систему, каждый из которых предоставляет информацию в различном формате и с разной степенью детализации. Моя рекомендация — использовать их в сочетании для получения полной картины активности.
Основные команды и их назначение
1. last — классический инструмент для истории входов
Это наиболее часто используемая и прямая команда. Она читает данные из файла /var/log/wtmp, который специально предназначен для записи истории входов и выходов пользователей.
last
Пример вывода (краткий формат):
user1 pts/0 192.168.1.5 Mon Mar 25 10:15 - 11:30 (01:15)
root tty1 Mon Mar 25 09:00 still logged in
user2 sshd: 10.0.0.12 Sun Mar 24 22:05 - 23:20 (01:15)
Ключевые параметры last:
last -n 10— покажет только последние 10 записей.last username— отфильтрует историю только для конкретного пользователя (например,last root).last -t YYYYMMDDHHMMSS— покажет записи только до указанной даты и времени.last -R— скроет отображение IP-адреса или хоста (удобно для краткого просмотра).
2. lastb — просмотр неудачных попыток входа
Эта команда анализирует файл /var/log/btmp, который хранит записи о неудачных попытках входа (bad login). Это критически важно для мониторинга безопасности.
lastb
Пример вывода:
unknown ssh:notty 203.0.113.42 Tue Mar 26 03:15 - 03:15 (00:00)
admin ssh:notty 192.168.1.100 Tue Mar 26 02:30 - 02:30 (00:00)
Важно: Часто для выполнения lastb требуются права root, а файл /var/log/btmp может быть защищен.
3. lastlog — отчет о последнем входе каждого пользователя
Команда lastlog читает из файла /var/log/lastlog и показывает последнее время входа для каждого пользователя, зарегистрированного в системе, даже если они не активны сейчас.
lastlog
Пример вывода:
Username Port From Latest
root tty1 Mon Mar 25 09:00:00 +0300
user1 pts/0 192.168.1.5 Mon Mar 25 10:15:12 +0300
user2 sshd 10.0.0.12 Sun Mar 24 22:05:45 +0300
bin **Never logged in**
lastlog -u username— покажет информацию только для указанного пользователя.lastlog -t 7— покажет пользователей, которые логинились в последние 7 дней.
Альтернативные методы и источники данных
Для более глубокого анализа или в случаях, когда стандартные файлы логов повреждены или очищены, можно обратиться к другим источникам.
4. Анализ системных журналов (syslog, auth.log)
В современных системах (особенно использующих systemd) детальная информация о процессах аутентификации часто пишется в /var/log/auth.log (в Debian/Ubuntu) или /var/log/secure (в RHEL/CentOS).
# Поиск успешных входов через SSH в auth.log
grep "Accepted password" /var/log/auth.log
# Поиск всех сообщений, связанных с входом пользователя 'user1'
grep "user1" /var/log/auth.log | tail -20
5. Использование утилиты who и проверка текущих сессий
Команда who показывает пользователей, которые сейчас находятся в системе. Это моментальный снимок активности.
who
Пример вывода:
user1 pts/0 2024-03-25 10:15 (192.168.1.5)
root tty1 2024-03-25 09:00
Для просмотра более подробной информации можно использовать:
who -u— добавит информацию о времени idle и процессе.w— расширенная версияwho, которая также показывает выполняемые команды.
Практические рекомендации для DevOps Engineer
-
Контекст безопасности: Для задач аудита и безопасности всегда начинайте с комбинации
last(успешные входы) иlastb(неудачные попытки). Регулярный мониторингlastbпомогает обнаружить брутфорс-атаки. -
Очистка логов: Файлы
wtmpиbtmpмогут быть очищены (например, командой> /var/log/wtmp). Если командаlastвозвращает пустой вывод, проверьте размер этих файлов. Их очистка — стандартная практика ротации логов, но может затруднить исторический анализ. -
Интеграция с мониторингом: В производственных окружениях данные о входах должны собираться в централизованную систему мониторинга (например, ELK Stack, Splunk, Graylog). Для этого можно настроить сбор логов
auth.logили использовать скрипты, периодически вызывающиеlastи отправляющие данные. -
Аудит пользователей: Команда
lastlogнезаменима при инвентаризации пользователей системы, особенно для обнаружения старых или служебных аккаунтов, которые никогда не использовались (например,bin,daemon). Это помогает соблюдать принципы минимального необходимого доступа. -
Работа в распределенных системах: В инфраструктуре с множеством серверов используйте агрегаторы логов или выполните команды через Ansible или SaltStack одновременно на всех хостах для получения общей картины.
Пример сбора информации для отчетности:
# Создать краткий отчет о последней активности
{
echo "=== Последние 10 успешных входов ==="
last -n 10
echo ""
echo "=== Неудачные попытки входа (последние 5) ==="
lastb -n 5
echo ""
echo "=== Пользователи в системе сейчас ==="
who -u
} > /tmp/login_report.txt
Таким образом, ответ на вопрос не ограничивается одной командой. Эффективный DevOps Engineer должен понимать весь спектр инструментов (last, lastb, lastlog, who, анализ auth.log) и знать, когда и как их применять для мониторинга, безопасности и аудита инфраструктуры.