Кто сейчас на сервере Linux: команды w, who и last для просмотра сессий
Зачем администратору контролировать активных пользователей
Безопасность Linux-сервера требует постоянного аудита: необходимо четко понимать, кто из коллег прямо сейчас работает в системе, с каких IP-адресов выполнен вход и какие консольные команды они запускают. В случае взлома или подозрительной активности утилиты мониторинга терминальных сессий позволяют мгновенно выявить несанкционированное вторжение.
Сравнение утилит аудита сессий
| Команда | Что показывает | Главное преимущество |
|---|---|---|
who | Список пользователей, терминал и время входа | Краткая сводка без лишних деталей. |
w | Пользователи + какую команду выполняет прямо сейчас | Максимальная информативность (load average, uptime, command). |
last | История всех входов за последние дни/недели | Показывает сессии, которые уже завершились, и перезагрузки сервера. |
Пошаговый аудит пользователей и управление активными сессиями
Шаг 1: Просмотр работающих пользователей и их действий (команда w)
Введите самую информативную команду:
wРазбор основных колонок вывода:
- USER — логин учетной записи (например,
ubuntu,root). - TTY — номер псевдотерминала (например,
pts/0). - FROM — внешний IP-адрес, с которого подключился человек.
- WHAT — программа или скрипт, запущенный пользователем прямо в эту секунду (например,
nano /etc/hostsилиtop).
Шаг 2: Краткий список пользователей (команда who)
who -uФлаг -u дополнительно выведет системный PID процесса SSH-сессии каждого пользователя.
Шаг 3: Проверка истории предыдущих входов (команда last)
Посмотрим последние 10 успешных входов на сервер:
last -n 10Чтобы отследить подозрительные попытки подбора паролей и неудачные входы, выполните:
sudo lastb -n 10Шаг 4: Как принудительно отключить (выкинуть) чужую SSH-сессию
Если вы увидели подозрительного пользователя на терминале pts/2, найдите его PID и завершите сессию:
Найдем PID процесса, привязанного к терминалу pts/2:
ps -ft pts/2
Завершим этот процесс:
sudo kill -9 PID_процессаТиповые ошибки администраторов
- Игнорирование файла lastlog: Хакеры иногда зачищают файл истории
/var/log/wtmp, но забывают проlastlog. Проверяйте дату последнего входа для каждого пользователя командойlastlog. - Отключение собственной сессии: Перед завершением процесса через kill убедитесь по выводу команды
w, на каком именноpts/Xнаходитесь вы сами (ваша сессия обычно помечена временем простоя0.00sв графе IDLE).
Эксперты ITSTM проведут комплексный криминалистический аудит безопасности (Forensics), заблокируют точки проникновения и настроят оповещения о входе админов в Telegram.
Частые вопросы (FAQ)
Что означает запись 'pts/0' в выводе команды who?
pts (Pseudo Terminal Slave) — это виртуальный терминал, создаваемый при сетевом подключении по протоколу SSH. Запись 'tty1' означает прямой вход через физическую клавиатуру и монитор сервера.
Где физически хранятся журналы входов last и lastb?
Успешные сессии пишутся в бинарный файл /var/log/wtmp, а неудачные попытки взлома — в /var/log/btmp. Их нельзя прочитать обычным текстовым редактором, только утилитами last/lastb.
Как отправить текстовое предупреждение конкретному пользователю в его терминал?
Используйте системную команду write: write username pts/1, напишите текст и нажмите Ctrl+D для отправки.
Как отправить сообщение сразу всем подключенным к серверу пользователям?
Используйте команду широковещательного оповещения wall: echo "Внимание! Сервер перезагрузится через 5 минут!" | wall