Посмотреть активные сессии linux

Обновлено: 05.07.2024

Команда who – настоящая палочка-выручалочка, благодаря которой так легко раздобыть всю необходимую информацию о пользователях, когда-либо работающих за конкретным компьютером. Так как операционная система Linux является многопользовательской, она отслеживает сеансы всех юзеров сети (кто работал за ПК, время старта и окончания его сеанса и прочее). Большинство пользователей операционной системы Linux отзываются об этом инструменте положительно. Он прекрасно показывает себя на практике.

Синтаксис

  • -a - читает файл /etc/utmp, включает все основные опции;
  • -b - показывает дату и время загрузки операционной системы;
  • -d - показывает зомби-процессы.
  • -u - выводит активных пользователей.
  • -s - выводит имя, терминальную сессию и время, данный параметр используется по умолчанию;
  • -T - информация о терминальной сессии;
  • -q - количество пользователей в системе в данный момент;
  • -r - показывает уровень процесса init.

Обычно для выполнения команды who берется информация файла: "/etc/utmp".

Альтернативные файлы: "/etc/wtmp" и "/etc/inittab".

Примеры

Если не использовать опции и аргументы, на экране появятся данные по умолчанию, включающие в себя информацию об учетных записях (тех, кто подключен к системе). Чтобы ознакомиться с данными о пользователе, который изъявил желание обратиться к терминалу прямо сейчас («спросить» у системы о самом себе), необходимо использовать команду «who am i».

who am

Для получения обширной информации о подключенных пользователей достаточно ввести команду в виде:

Полная информация

Каких-либо дополнительных указаний в этом случае не потребуется. Если использовать исключительно «who», данных будет сравнительно меньше. Детализировать этот запрос или нет – решать только вам. Смотрите по ситуации.

Время загрузки системы можно посмотреть по команде:

Впишите её в терминале и ознакомьтесь с результатами запроса.

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

Опция -s не имеет особого смысла, поскольку она провоцирует вывод таких стандартных значений, как «Имя пользователя», «терминальная линия», «время начала/окончания сеанса». Эта информация доступна и без добавления каких-либо опций. Едем дальше.

С помощью аргумента -T можно узнать состояние терминальной сессии. На практике это выглядит следующим образом:

При неисправности линии появится вопросительный знак.

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

Сколько в системе user

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

При добавлении опции -d отображаются зомби-процессы:

Важное примечание: при использовании опции -d нельзя увидеть поле EXIT в окне терминала. Оно появляется лишь при добавлении опции -а.

Заключение

Основная задача утилиты who заключается в получении информации о пользователях, подключенных к системе. Вторичная задача – сбор данных о терминальных сессиях, благодаря которым и происходит их подключение.

Благодаря выше предоставленным примерам команд вы тоже можете ощутить простоту отслеживания данных о user системы. Всего несколько нажатий клавиш – и ответы на вопросы найдены.

Кто и когда входил в Linux. Команда Last

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

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

Где хранятся логи входа в систему

Информация о том, кто входил (залогинивался) или пытался войти в систему, хранится в лог файлах. Для этого используется три лог-файла:
/var/log/btmp — неудачные попытки входа.
/var/run/utmp — кто в данный момент залогинен (текущие сессии).
/var/log/wtmp — список всех сессий входа в систему.

Эти файлы, в отличии от большинства других лог-файлов Linux, имеют бинарный формат. Если вы попробуете просмотреть их командой cat , то на экран будет выведена «каша». Для их просмотра используется команда last .

Просмотр истории входа в систему

Для просмотра логов входа в систему используется команда last . По умолчанию команда last выводит информацию из файла /var/log/wtmp , в котором хранятся записи обо всех сессиях входа.

Выполним команду last :

Как вы можете видеть, выводится таблица с информацией. В ней содержатся имена пользователей, IP-адрес, с которого осуществлялся вход, дата и время входа и продолжительность сессии. Запись вида pts/0 означает, что для входа использовалось SSH соединение (или другое удаленное соединение, например, telnet).

Также выводится информация о включении/выключении системы.

Последняя строка в файле /var/log/wtmp показывает, когда был создан файл.

Просмотр истории входа в систему. Команда Last

Просмотр истории входа для определенного пользователя

Чтобы показать информацию о сессиях определенного пользователя, то для команды last необходимо указать имя этого пользователя:

Команда last username

Ограничить количество строк

Иногда лог, который выводит команда last , может быть очень большой. Чтобы ограничить количество выводимых строк, используется опция -n ЧислоСтрок или просто -ЧислоСтрок .

Выведем только десять свежих записей:

Просмотр неудачных попыток входа в систему

Как было сказано выше, записи о неудачных попытках входа в систему хранятся в лог-файле /var/log/btmp .

Команда last по умолчанию выводит информацию из файла /var/log/wtmp . Чтобы вывести информацию из другого файла, используется опция -f ИмяФайла

Выведем записи о неудачных попытках входа (из файла /var/log/btmp ):

Или же можно воспользоваться командой lastb . Команда lastb работает точно также, как и команда last , но выводит информацию из файла /var/log/btmp

Заключение

Мы рассмотрели использование команды last для просмотра информации об истории входа в систему.

Дополнительную информацию по использованию команды last можно получить, выполнив в терминале:

Я просто SSH'd в корень, а затем SSH'd снова в корень на той же машине. Таким образом, у меня есть два открытых окна SSH'd в root на моей удаленной машине.

Из оболочки, как я могу увидеть список этих двух сессий?

who или w ; who -a для дополнительной информации.

Эти команды просто показывают все сеансы входа в систему на терминальном устройстве. Сеанс SSH будет на псевдо-терминале slave ( pts ), как показано в TTY столбце, но не все соединения pts являются сеансами SSH. Например, программы, которые создают псевдо-терминальное устройство, такое как xterm или, screen будут отображаться как pts . См. Разница между pts и tty для лучшего описания различных значений, найденных в TTY столбце. Кроме того, этот подход не покажет никому, кто вошел в сеанс SFTP, поскольку сеансы SFTP не являются сеансами входа в оболочку.

Я не знаю ни одного способа явно показать все сессии SSH. Вы можете вывести эту информацию, читая регистрационную информацию из utmp / wtmp через инструмент , как last , w или , who как я только что описал, или с помощью сетевых инструментов , таких как @sebelk , описанного в их ответе , чтобы найти открытые соединения TCP на порт 22 (или где ваш SSH демон (ы) слушает / слушает).

Третий подход, который вы можете использовать, - это анализ выходных данных журнала от демона SSH. В зависимости от дистрибутива вашей ОС, дистрибутива SSH, конфигурации и т. Д. Выходные данные журнала могут находиться в разных местах. На коробке RHEL 6 я нашел логи /var/log/sshd.log . На коробке RHEL 7, а также на коробке Arch Linux мне нужно было использовать journalctl -u sshd для просмотра журналов. Некоторые системы могут выводить журналы SSH в системный журнал. Ваши журналы могут быть в этих местах или в другом месте. Вот пример того, что вы можете увидеть:

Журналы показывают, когда сеансы открываются и закрываются, кому принадлежит сеанс, откуда пользователь подключается и многое другое. Тем не менее, вам придется много анализировать, если вы хотите получить это из простого, понятного человеку журнала событий в список активных в данный момент сеансов, и он все еще, вероятно, не будет точным, когда вы закончили синтаксический анализ, так как журналы на самом деле не содержат достаточно информации, чтобы определить, какие сеансы все еще активны - вы, по сути, просто догадываетесь. Единственное преимущество, которое вы получаете, используя эти журналы, состоит в том, что информация поступает непосредственно из SSHD, а не из вторичного источника, как другие методы.

Я рекомендую просто использовать w . В большинстве случаев это даст вам необходимую информацию.

В случае если сервер на Linux был взломан, возникает необходимость собрать информацию, например, получить время и IP адреса последних SSH сессий. Это может помочь не только установить источник опасности, но и, например, ответить на вопрос: был ли подобран пароль (или скомпрометирован сертификат) SSH либо злоумышленник воспользовался уязвимостью программного обеспечения.

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

IP адрес предыдущего подключения по SSH

При каждом подключении по SSH выводится строка с IP, с которого было сделано предыдущее подключение, также показывается дата и время этого подключения:


История IP адресов SSH подключений

Кроме последней сессии, в системе хранится информация обо всех успешных входах за последние месяцы. Эта информация содержится в файле utmp / wtmp. На самом деле, файл utmp могут использовать различные программы (не только SSH), которые хотят сохранить информацию о входе пользователя.

Во многих дистрибутивах имеется файл /var/log/wtmp, куда программы записывают входы в систему. Проверить последние записи можно командой:


Все записи, в которых встречаются IP адреса — были сделаны по SSH подключению.

Записи без IP адресов — это входы пользователей, находящихся непосредственно перед компьютером.


Дополнительно вы можете проверить другие файлы журналов: /var/log/secure (на дистрибутивах на основе RH) или /var/log/auth.log (на дистрибутивах на основе Debian). В этих файлах служба sshd обычно хранит следы сделанных подключений, даже если они не стали результатом успешных входов (как это делают utmp/wtmp, которые сохраняют только информацию об успешных входах).

Служба sshd на IIRC Solaris (которая необязательно является sshd службой OpenSSH) хранит эту информацию в /var/adm/messages.

При этом необходимо помнить, что если атакующий получил доступ с правами суперпользователя, то есть скомпрометирован аккаунт root или другого пользователя с повышенными привилегиями, то все записи в файлах /var/log/wtmp или /var/adm/messages могут быть изменены атакующим. Для защиты от этого необходимо регулярно выгружать журналы в безопасное хранилище.

Как узнать, кто в настоящий момент подключён по SSH

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

Следующие команды также покажут активные SSH сессии — у каждой из них различается набор выводимой информации, поэтому вы можете выбрать ту из них, которая вам больше всего подходит:

Читайте также: