Як використовувати останню команду в Linux

Хто, коли і звідки? Хороші методи безпеки кажуть, що ви повинні знати, хто отримував доступ до вашого комп’ютера Linux. Ми покажемо вам, як.

Файл wtmp

Linux та інші Unix-подібні операційні системи, такі як MacOS, дуже добре ведуть журнал. Десь у надрах системи є журнал майже всього, що ви можете придумати. Файл журналу, який нас цікавить, називається wtmp. “w” може означати “коли” або “хто” – здається, ніхто не згоден. Частина «tmp», ймовірно, означає «тимчасовий», але вона також може означати «помітку часу».

Що ми знаємо, так це те, що wtmp — це журнал, який фіксує та записує кожну подію входу та виходу. Перегляд даних у журналі wtmp є основним кроком у підході до системного адміністратора, який дбає про безпеку. Для типового сімейного комп’ютера це може бути не таким критичним з точки зору безпеки, але цікаво мати можливість переглянути ваше спільне використання комп’ютера.

На відміну від багатьох текстових файлів журналу в Linux, wtmp є двійковим файлом. Щоб отримати доступ до даних у ньому, нам потрібно використовувати інструмент, призначений для цього завдання.

Цей інструмент є останньою командою.

Остання команда

Остання команда зчитує дані з журналу wtmp і відображає їх у вікні терміналу.

Якщо ви введете останнім і натиснете Enter, це буде відобразити всі записи з файлу журналу.

last

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

Зліва направо кожен рядок містить:

Ім’я користувача особи, яка увійшла.
Термінал, до якого вони ввійшли. Запис терміналу :0 означає, що вони ввійшли в систему на самому комп’ютері Linux.
IP-адреса машини, на яку вони ввійшли.
Штамп часу і дати входу.
Тривалість сесії.

  Як застосувати виправлення до файлу (і створити патчі) у Linux

Останній рядок повідомляє нам дату та час найранішого записаного сеансу в журналі.

Запис для входу для фіктивного користувача «reboot» вводиться в журнал кожного разу, коли комп’ютер завантажується. Поле терміналу замінено версією ядра. Тривалість сеансу входу для цих записів відображає час роботи комп’ютера.

Відображення певної кількості рядків

Використання останньої команди самостійно створює дамп всього журналу, причому більша його частина проходить повз вікно терміналу. Частина, яка залишається видимою, є найпершими даними в журналі. Це, мабуть, не те, що ви хотіли побачити.

Ви можете вказати останній, щоб дати вам конкретну кількість рядків виводу. Зробіть це, вказавши потрібну кількість рядків у командному рядку. Зверніть увагу на дефіс. Щоб побачити п’ять рядків, вам потрібно ввести -5, а не 5:

last -5

Це дає перші п’ять рядків журналу, які є найновішими даними.

Показ мережевих імен для віддалених користувачів

Параметр -d (Система доменних імен) вказує останньому спробувати розділити IP-адреси віддалених користувачів у ім’я машини або мережі.

last -d

Останнім не завжди можливо перетворити IP-адресу в ім’я мережі, але команда зробить це, коли зможе.

Приховування IP-адрес і мережевих імен

Якщо вас не цікавить IP-адреса або назва мережі, скористайтеся параметром -R (без імені хоста), щоб придушити це поле.

Оскільки це дає більш акуратний вихід без потворних обгортань, цей параметр використовувався в усіх наступних прикладах. Якби ви використовували останній, щоб спробувати ідентифікувати незвичайну або підозрілу активність, ви б не придушили це поле.

Вибір записів за датою

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

Якщо ви хочете побачити лише події входу, які відбулися з 26 травня 2019 року, ви повинні використати таку команду:

last -R -s 2019-05-26

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

  Як грати в ігри PlayStation 2 на Linux

Пошук до кінцевої дати

Ви можете використовувати -t (до), щоб вказати дату завершення. Це дозволяє вибрати набір записів для входу, які мали місце між двома цікавими датами.

Ця команда просить останнього отримати та відобразити записи входу з 00:00 (світанок) 26 числа до часу 00:00 (світанок) 27 числа. Це звужує список до сеансів входу, які відбулися лише 26 числа.

Формати часу та дати

Ви можете використовувати час, а також дати з параметрами -s і -t.

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

РРРРММДдччммсс
РРРР-ММ-ДД год:мм:сс
РРРР-ММ-ДД год: мм – секунди встановлено на 00
РРРР-ММ-ДД – час встановлено на 00:00:00
hh:mm:ss – дата встановлена ​​на сьогодні
hh:mm – дата буде встановлена ​​на сьогодні, секунди на 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

Не те, щоб це не включало жодних записів на сьогодні. Це очікувана поведінка. Команда запитує записи від дати початку до дати завершення. Він не включає записи в межах дати завершення.

  Як створити резервну копію налаштувань робочого столу Cinnamon на Linux

Опція зараз — це скорочення від «сьогодні в поточний час». Щоб побачити події входу, які відбулися з 00:00 (світанок) до моменту, коли ви введете команду, скористайтеся цією командою:

last -R -s today -t now

Тут відображатимуться всі події входу на даний момент, включаючи ті, які все ще ввійшли в систему.

Нинішній варіант

Параметр -p (present) дозволяє дізнатися, хто був увійшов у систему в певний момент часу.

Не має значення, коли вони ввійшли чи вийшли, але якщо вони були ввійшли на комп’ютер у вказаний вами час, вони будуть включені в список.

Якщо ви вказали час без дати, останнє означає, що ви маєте на увазі «сьогодні».

last -R -p 09:30

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

Якщо ви використовуєте скорочення now з опцією -p (present), ви можете дізнатися, хто ввійшов у систему під час виконання команди.

last -R -p now

Це досить довгий спосіб досягти того, що можна досягти за допомогою команди who.

Остання команда

Заслуговує на згадку команда lastb. Він зчитує дані з журналу під назвою btmp. Існує трохи більше консенсусу щодо цього імені журналу. «b» означає погано, але частина «tmp» все ще є предметом обговорень.

lastb перелічує погані (невдалі) спроби входу. Він приймає ті ж варіанти, що й попередній. Оскільки вони були невдалими спробами входу, усі записи матимуть тривалість 00:00.

Ви повинні використовувати sudo з lastb.

sudo lastb -R

Останнє слово про справу

Знання того, хто ввійшов у ваш комп’ютер Linux, коли і звідки, є корисною інформацією. Поєднання цього з деталями невдалих спроб входу озброює вас першими кроками для розслідування підозрілої поведінки.