Поиск по сайту:

Как использовать последнюю команду в Linux


Кто, когда и откуда? Хорошие методы обеспечения безопасности говорят, что вы должны знать, кто получает доступ к вашему компьютеру с Linux. Мы покажем вам, как это сделать.

Файл wtmp

Linux и другие Unix-подобные операционные системы, такие как MacOS, очень хорошо умеют вести журнал. Где-то в недрах системы есть журнал всего, о чем вы только можете подумать. Интересующий нас файл журнала называется wtmp. «W» может означать «когда» или «кто» — кажется, никто не согласен. Часть «tmp», вероятно, означает «временный», но она также может означать «отметка времени».

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

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

Этот инструмент — команда last.

Последняя команда

Команда last считывает данные из журнала wtmp и отображает их в окне терминала.

Если вы наберете last и нажмете Enter, отобразятся все записи из файла журнала.

last

Каждая запись из wtmp отображается в окне терминала.

Каждая строка слева направо содержит:

  • имя пользователя человека, выполнившего вход.
  • терминал, в который они вошли. Терминальная запись :0 означает, что они вошли в систему на самом компьютере с Linux.
  • IP-адрес компьютера, на который они вошли.
  • Время и дата входа.
  • продолжительность сеанса.

Последняя строка сообщает нам дату и время самой ранней записанной сессии в журнале.

Запись входа в систему для фиктивной перезагрузки пользователя вносится в журнал каждый раз при загрузке компьютера. Поле терминала заменяется версией ядра. Продолжительность сеанса входа в систему для этих записей представляет собой время безотказной работы компьютера.

Отображение определенного количества строк

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

Вы можете указать last, чтобы дать вам определенное количество строк вывода. Сделайте это, указав необходимое количество строк в командной строке. Обратите внимание на дефис. Чтобы увидеть пять строк, вам нужно ввести -5 а не 5:

last -5

Это дает первые пять строк из журнала, которые являются самыми последними данными.

Отображение сетевых имен для удаленных пользователей

Параметр -d (система доменных имен) сообщает last, что нужно попытаться преобразовать IP-адреса удаленных пользователей в имя компьютера или сети.

last -d

last не всегда может преобразовать IP-адрес в сетевое имя, но команда сделает это, когда сможет.

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

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

Поскольку это дает более аккуратный вывод без уродливых переносов, эта опция использовалась во всех следующих примерах. Если бы вы использовали last для выявления необычной или подозрительной активности, вы бы не скрывали это поле.

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

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

Если вы хотите увидеть только события входа в систему, которые произошли с 26 мая 2019 года, вы должны использовать следующую команду:

last -R -s 2019-05-26

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

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

Вы можете использовать -t (until), чтобы указать дату окончания. Это позволяет вам выбрать набор записей входа в систему, которые имели место между двумя интересующими датами.

Эта команда просит last получить и отобразить записи входа в систему с 00:00 (рассвет) 26-го числа до 00:00 (рассвет) 27-го числа. Это сужает список до сеансов входа в систему, которые имели место только 26-го числа.

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

Вы можете использовать время, а также даты с параметрами -s и -t.

Различные форматы времени, которые можно использовать с параметрами last, использующими дату и время, (предположительно):

  • ГГГГММДДччммсс
  • ГГГГ-ММ-ДД чч:мм:сс
  • ГГГГ-ММ-ДД чч:мм – секунды устанавливаются равными 00
  • ГГГГ-ММ-ДД — время установлено на 00:00:00
  • чч:мм:сс — дата установлена сегодня
  • чч:мм – дата будет установлена сегодня, секунды до 00
  • сейчас
  • вчера — время установлено на 00:00:00
  • сегодня – время установлено на 00:00:00
  • завтра – время установлено на 00:00:00
  • +5 мин.
  • -5дней

Почему «якобы»?

Второй и третий форматы в списке не работали во время исследования для этой статьи. Эти команды были протестированы в дистрибутивах Ubuntu, Fedora и Manjaro. Это производные от дистрибутивов Debian, RedHat и Arch соответственно. Это охватывает все основные семейства дистрибутивов Linux.

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

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

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

last -R -s yesterday -t today

Не то, чтобы это не включало никаких записей на сегодняшний день. Это ожидаемое поведение. Команда запрашивает записи с даты начала до даты окончания. Он не включает включает записи, начиная с даты окончания.

Параметр now является сокращением от «сегодня в текущее время». Чтобы увидеть события входа в систему, которые произошли с 00:00 (рассвет) до момента, когда вы вводите команду, используйте эту команду:

last -R -s today -t now

Это покажет все события входа в систему прямо в настоящее время, включая те, которые все еще вошли в систему.

Настоящий вариант

Опция -p (присутствует) позволяет узнать, кто входил в систему в определенный момент времени.

Неважно, когда они вошли в систему или вышли из нее, но если они вошли в систему в указанное вами время, они будут включены в список.

Если вы указываете время без даты, last предполагает, что вы имеете в виду «сегодня».

last -R -p 09:30

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

Если вы используете сокращение now с опцией -p (присутствует), вы можете узнать, кто вошел в систему в момент ввода команды.

last -R -p now

Это несколько затянутый способ добиться того, чего можно добиться с помощью команды who.

Последняяb команда

Команда lastb заслуживает упоминания. Он считывает данные из журнала под названием btmp. Существует немного больше консенсуса по этому имени журнала. «b» означает «плохой», но часть «tmp» все еще является предметом споров.

lastb перечисляет неудачные (неудачные) попытки входа в систему. Он принимает те же параметры, что и last. Поскольку это были неудачные попытки входа в систему, все записи будут иметь продолжительность 00:00.

Вы должны использовать sudo с lastb.

sudo lastb -R

Последнее слово по делу

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