JavaRush /Курсы /Docker SELF /Мониторинг активных пользователей и входов: команды `who`...

Мониторинг активных пользователей и входов: команды `who`, `w`, `last`

Docker SELF
5 уровень , 4 лекция
Открыта

1. Почему важно мониторить пользователей?

Linux, как и любой другой сервер (или даже злая коробка с веб-сайтами), предоставляет возможность работать множеству пользователей одновременно. Но что если ваш сервер подвергся проникновению? Или какой-то коллега-злоумышленник ночью решит "случайно" удалить важные файлы? Мониторинг активности пользователей помогает нам понять, кто, когда и откуда заходил в систему, а также какие процессы они выполняли. Это как видеокамера, только для вашего сервера.

Основные инструменты мониторинга

Чтобы оценить активность пользователей на сервере, в Linux доступны три ключевых команды:

  • who — показывает текущих пользователей, работающих в системе.
  • w — дает чуть больше информации: действия пользователей и нагрузку на систему.
  • last — предоставляет историю входов в систему.

Каждая из этих команд имеет свои нюансы и применима в разных сценариях. Разберём их на примерах.


2. Команда who

Команда who показывает список пользователей, которые в данный момент вошли в систему. Это как "книга регистрации", где вы можете заглянуть и увидеть, кто сейчас на сервере.

who

Пример вывода команды:

user1    pts/0        2023-10-20 09:10 (192.168.1.100)
root     pts/1        2023-10-20 09:15 (192.168.1.101)

Что здесь мы видим:

  • Имя пользователя user1, root.
  • Терминал, через который они подключены pts/0, pts/1.
  • Время входа 2023-10-20 09:10.
  • Откуда подключение 192.168.1.100.

Ключи для who:

  • who -a: Показывает также данные системы, такие как время загрузки, работающие процессы и пользователей.
  • who am i: Показывает только информацию о пользователе, который запустил команду.

3. Команда w

Если who просто регистрирует, кто вошёл, то w даёт больше информации - она рассказывает, чем сейчас занимается пользователь. Это полезно, чтобы понять, занимается ли он полезным делом или тем, что нужно немедленно прекратить.

w

Пример вывода:

10:20:42 up 1 day,  5:12,  2 users,  load average: 0.00, 0.01, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
user1    pts/0    192.168.1.100    09:10    1:00   0.01s  0.01s nano app.py
root     pts/1    192.168.1.101    09:15    2:00   0.02s  0.02s htop

Что тут происходит:

  • Верхняя строка даёт системную информацию: текущее время, время работы сервера, количество пользователей и нагрузку системы load average.
  • Таблица показывает:
    • Имя пользователя user1, root.
    • Среду, через которую подключён пользователь pts/0, pts/1.
    • IP-адрес пользователя 192.168.1.100.
    • Время входа в систему 09:10.
    • Время простоя IDLE.
    • Занятие пользователя сейчас WHAT, например, редактирование файла app.py с помощью nano.

Ключи для w:

  • w -h: Убирает заголовки таблицы.
  • w username: Показывает информацию только о конкретном пользователе.

4. Команда last

Если who и w говорят о настоящем, то last позволяет заглянуть в прошлое. Она выводит историю всех входов в систему. Эта команда читает файл /var/log/wtmp, куда записываются все входы пользователей.

last

Пример вывода:

user1    pts/0        192.168.1.100    Fri Oct 20 09:10 - 09:30  (00:20)
root     pts/1        192.168.1.101    Fri Oct 20 09:15 - down   (00:15)

Что здесь мы видим:

  • Имя пользователя user1, root.
  • Терминал pts/0, pts/1.
  • IP-адрес или имя хоста 192.168.1.100, 192.168.1.101.
  • Время входа Fri Oct 20 09:10.
  • Время выхода 09:30 и общее время сессии 00:20.

Ключи для last:

  • last -n 10: Показывает только последние 10 записей.
  • last username: История входов для конкретного пользователя.
  • last reboot: Показывает, когда был запущен сервер.

5. Практический пример: анализ активности пользователей

Давайте представим, что вы хотите узнать, кто работал на сервере ночью, чтобы понять, не происходило ли чего подозрительного. Начнём с просмотра текущих пользователей:

who

Теперь проверим, чем они занимаются:

w

Если вы обнаружили что-то странное (например, неизвестный процесс), нужно проверить, кто логинился ночью. Для этого используем:

last

Просмотрим записи для конкретного пользователя, который привлёк внимание:

last user1

Если видим аномалию, например, вход с незнакомого IP, нужно принять меры: ограничить доступ, установить двухфакторную аутентификацию или заблокировать пользователя.


6. Особенности и типичные ошибки

При работе с командами мониторинга важно помнить, что:

  1. Файл логов может быть очищен. Если кто-то злонамеренно удалил записи из /var/log/wtmp, команда last ничего не покажет. Это одна из причин, почему важно регулярно делать резервные копии логов или отправлять их на удалённый сервер.

  2. Облегчение понимания вывода. Иногда вывод команд может быть перегружен (например, если много пользователей). Используйте фильтры, такие как grep, для поиска нужной информации:

    last | grep user1
    
  3. Зависимость от настроек системы. Некоторые системы могут не вести логи входов, если это отключено из-за настроек. Убедитесь, что /var/log/wtmp обновляется регулярно.

Как эти знания применяются на практике?

  • Администрирование серверов. Например, вы администратор компании, и вам нужно следить за безопасностью системы, чтобы никто случайно или намеренно не "сломал всё".
  • Обнаружение угроз. Инструменты мониторинга помогут вам обнаружить попытки несанкционированного доступа.
  • Аудит системы. При проверке серверов на соответствие стандартам безопасности эти команды часто используются для анализа активности пользователей.
  • Диагностика. Вы замечаете, что сервер стал медленным? Посмотрите, кто и чем там занимается!

Теперь вы готовы мониторить свою систему, как шеф! Не забывайте, что защита системы начинается с понимания того, что происходит под её капотом.

1
Задача
Docker SELF, 5 уровень, 4 лекция
Недоступна
Использование команды `who`
Использование команды `who`
1
Задача
Docker SELF, 5 уровень, 4 лекция
Недоступна
Использование команды `w` для текущей активности
Использование команды `w` для текущей активности
1
Задача
Docker SELF, 5 уровень, 4 лекция
Недоступна
История входов пользователей
История входов пользователей
1
Задача
Docker SELF, 5 уровень, 4 лекция
Недоступна
Анализ активности пользователей
Анализ активности пользователей
Комментарии (3)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Stitch Уровень 14
23 марта 2025
# Вывод списка всех пользователей, вошедших в систему who --ips А где в уроке написано про этот ключ??? В уроке только who -a
9 марта 2025
Что здесь не так? Почему не проходит валидацию? #!/bin/bash # Указываем пользователя как первый аргумент скрипта USER=$1 # Команда для вывода истории входов конкретного пользователя # Используется команда `last`, фильтрация по имени пользователя и вывод требуемой информации # Поля: время входа, время выхода, длительность сессии, IP-адрес last -i "$USER" | awk '{print $1, $4, $5, $6, $7, $8, $9, $10, $11, $12}'
Иван Румянцев Уровень 23
12 марта 2025
C 10 попытки, взяв часть ответа от последней задачи и скорректировав - в задаче истории входов засчитывает такую строку для ответа - last "$USER" | awk '{print "Время входа: " $4, $5, $6, $7, "| Время выхода: " $10, $11, $12 "| Длительность: " $9, "| IP-адрес: " $3}'