Хто ж був на сервері?

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



Якщо ж Ви все-таки задумалися про це, то не забувайте, що дана команда — це також один з хороших методів перевірки безпеки, яку можна проводити на серверах під управлінням Linux систем. Вона допоможе Вам встановити потенційні проблеми. Ті акаунти, які були неактивні протягом довгого часу, наприклад, може означати, що вони більше не потрібні і можуть бути відключені. А ось акаунти, які були активні в той час, коли їх користувачі повинні були бути у відпустці десь на Багамах — можуть натякати про проблеми з безпекою на сервері.

Команда свіжіші зберігає інформацію про останньому вході користувача в систему, але він надасть інформацію тільки щодо тих податків, які є у файлі wtmp. Записи в даному файлі робляться в двійковому форматі, так що переглядати їх можна тільки за допомогою спеціальних команд. Думаю багато з Вас звертали увагу на те, що коли Ви авторизуєтесь в консолі на екрані з'являється приблизно таке повідомлення:

Last login: Wed Nov 11 13:19:44 on ttys002

Цей рядок формується утилітою login, яка після авторизації користувача звертається до файлу /var/log/свіжіші, витягує звідти інформацію про попередній успішний вхід, видає її на екран, а потім оновлює запис у файлі свіжіші. На відміну від файлу /var/log/свіжіші, який містить записи про час останнього входу в систему кожного користувача у файлі /var/log/wtmp запам'ятовуються всі входи і виходи користувачів в систему з моменту створення цього файлу.

Що б подивитися дані по конкретному користувачеві необхідно використовувати наступну команду last xxx, ххх — логін користувача. А використання команди сортування head з параметром 5 в свою чергу допоможе Вам відобразити на екрані тільки 5 останніх результатів:

# last | head -5
root pts/0 193.178.187.30 Wed Nov 11 14:21 still logged in 
туто ftpd3292 ::ffff:176.104.0 Wed Nov 11 11:11 - 11:15 (00:04) 
туто ftpd29523 ::ffff:176.104.0 Tue Nov 10 18:58 - 19:03 (00:04) 
naturcok ftpd23502 ::ffff:176.104.0 Tue Nov 10 13:55 - 13:55 (00:00) 
naturcok ftpd20128 ::ffff:176.104.0 Tue Nov 10 13:50 - 13:55 (00:05) 

Як «глибоко» Ви можете переглянути історію останніх команд залежить від того, як довго існує файл wtmp. Наприклад, Ви можете використовувати утиліту logrotate, яка стежить за файлами протоколів і забезпечує так звану ротацію цих файлів у разі, якщо вони перевищили зазначений розмір (або по закінченню зазначеного тимчасового інтервалу). Також вона дозволяє підтримувати більш одного wtmp файл і має запис у logrotate.conf зразок цієї:

/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}

Навіть маючи кілька файлів wtmp, дані деяких Ваших користувачів можуть просто не з'явитися. Якщо в результаті індивідуальної перевірки користувача ніяких даних по ньому не отримали, то це означає, що записів по конкретному користувачеві у файлі wtmp немає. Щоб дізнатися дату створення файлу wtmp, слід ввести в консолі last mia:

# last mia

wtmp begins Thu Sep 17 16:10:00 2015

Кращим способом знайти інформацію про останньому вході в систему для кожного користувача є використання команди свіжіші. Якщо який-небудь з користувачів ніколи не авторизировался в системі, то замість імені терміналу і часу останнього входу буде вказана рядок **Never logged in**. Якщо результат виводу буде складатися з великої кількості рядків, то можете використовувати ще й команду more, яка на відміну від команди less, виведе вміст файлу на екран окремими сторінками. Результат буде виглядати приблизно так:

# свіжіші | more
Username Port From Latest
root pts/0 xxx.xxx.xxx.xxx Wed Nov 11 14:21:59 +0200 2015
bin **Never logged in**
daemon **Never logged in**
adm **Never logged in**
ispmaster pts/0 xxx.xxx.xxx.xxx Thu Nov 5 17:00:44 +0200 2015

Багато хто з нас можливо будуть здивовані, побачивши, що bin, daemon, adm та інші службові облікові записи ніколи не авторизуватися в системі. Це й справді так, і означає лише те, що для оболонок, призначених момент реєстрації користувачів (login shells), заданий параметр /sbin/nologin, що робить авторизацію неможливою. Інші дані по входах показують дату і час, з якого була здійснена авторизація.

Щоб створити список всіх облікових записів, які ніколи не входили в систему, варто використовувати наступний набір команд. З командою свіжіші ми вже знайомі і я на ній докладно зупинятися не буду, далі варто додати утиліту grep для пошуку за ключовим словом, у нашому випадку це слово Never, а для того, щоб виводився тільки перший стовпець даних, можна скористатися утилітою awk з наступним синтаксисом — '{print $1}':

# свіжіші | grep Never | awk '{print $1}'
bin
daemon
adm
. . .
ntp
user1819
user1939

Записи у свіжіші перераховані згідно ідентифікаторів користувачів (User identifier — UID) — від суперкористувача (root) до користувача з найбільшим значенням UID у Вашому файлі /etc/passwd. Це пов'язано з форматом самого файлу свіжіші. На відміну від більшості лог-файл Unix, у файлі свіжіші для запису логів кожного користувача резервується окреме місце, і в свою чергу місце кожного запису проіндексовано за UID. Після цього файли будуть фіксованого розміру, особливо якщо Ваша система має акаунти з найвищим лімітом свого можливого діапазону UID — такого як 16-бітний UID 65536. Також при цьому утворюється великий об'єм невикористаного простору, правда тільки в тому випадки якщо Ваші ідентифікатори не є строго послідовними. Якщо ж Ваша система підтримує 32-бітові UIDы, файл може бути дуже великим і мати 4 294 967 296 (232) різних значень ідентифікаторів.

Кожна запис у файлі свіжіші містить ім'я користувача, ім'я терміналу, з якого увійшов користувач і час останнього входу в систему. Запис для користувача (UID 0) у верхній частині файлу може мати наступний вигляд:

# od -xc /var/log/свіжіші | more
0000000 fba3 563d 7470 2f73 0030 0000 0000 0000
243 373 = V p t s / 0 \0 \0 \0 \0 \0 \0 \0
0000020 0000 0000 0000 0000 0000 0000 0000 0000
\0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0000040 0000 0000 3138 392e 2e35 3831 2e34 3532
\0 \0 \0 \0 8 1 . 9 5 . 1 8 4 . 2 5
0000060 0034 0000 0000 0000 0000 0000 0000 0000
4 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0000100 0000 0000 0000 0000 0000 0000 0000 0000
\0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0

При виконанні команди свіжіші на деяких комп'ютерах в певних випадках може виникнути враження, що команда «зависла». Це відбувається в силу того, що навіть якщо в системі зареєстровано всього два користувача (root і user), у файлі /var/log/свіжіші все одно відведено місце для максимально можливого числа користувачів, які можуть працювати в системі. Тому у файлі /var/log/свіжіші можуть бути великі проміжки між номерами ідентифікаторів працювали в системі користувачів. Оскільки при перегляді таких інтервалів програма не виводить інформацію на екран, і виникає враження «зависання». Тому не поспішайте натискати кнопки і закривати консоль, а дочекайтеся відповіді команди.

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

Не нехтуйте у своїй роботі застосовувати досить прості команди, і, природно, використовуйте місце з розумом. Удачі!

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.