- Определить дату последнего входа в систему Linux
- Просмотр истории входа в Linux. Кто и когда входил в систему
- Где хранятся логи входа в систему
- Просмотр истории входа в систему
- Просмотр истории входа для определенного пользователя
- Ограничить количество строк
- Просмотр неудачных попыток входа в систему
- Заключение
Определить дату последнего входа в систему Linux
Команда lastlog хранит информацию о последнем входе пользователя в систему, но он предоставит информацию только по тем логам, которые имеются в файле wtmp. Записи в данном файле делаются в двоичном формате, так что просматривать их можно только с помощью специальных команд. Думаю многие из Вас обращали внимание на то, что когда Вы авторизируетесь в консоли, на экране появляется примерно следующее сообщение:
Last login: Wed Nov 11 13:19:44 on ttys002
Эта строка формируется утилитой login, которая после авторизации пользователя обращается к файлу /var/log/lastlog, извлекает оттуда информацию о предыдущем успешном входе, выдает ее на экран, а затем обновляет запись в файле lastlog. В отличие от файла /var/log/lastlog, который содержит записи о времени последнего входа в систему каждого пользователя, в файле /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 tuto ftpd3292 ::ffff:176.104.0 Wed Nov 11 11:11 - 11:15 (00:04) tuto 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 наподобие этой:
Даже имея несколько файлов wtmp, данные некоторых Ваших пользователей могут просто не отобразиться. Если в результате индивидуальной проверки пользователя Вы никаких данных по нем не получили, то это означает, что записей по конкретному пользователю в файле wtmp нет. Чтобы узнать дату создания файла wtmp, следует ввести в консоли last mia:
last mia wtmp begins Thu Sep 17 16:10:00 2015
Лучшим способом найти информацию о последнем входе в систему для каждого пользователя является использование команды lastlog. Если какой-либо из пользователей никогда не авторизировался в системе, то вместо имени терминала и времени последнего входа будет указана строка **Never logged in**. Если результат вывода будет состоять из большого количества строк, то можете использовать еще и команду more, которая в отличие от команды less, выведет содержимое файла на экран отдельными страницами. Результат будет выглядеть примерно так:
lastlog | 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, что делает авторизацию невозможной. Остальные данные по входам показывают дату и время системы, с которой была осуществлена авторизация.
Чтобы создать список всех учетных записей, которые никогда не входили в систему, стоит использовать следующий набор команд. С командой lastlog мы уже знакомы и я на ней подробно останавливаться не буду, дальше стоит добавить утилиту grep для поиска по ключевому слову, в нашем случаи это слово Never, а для того, чтобы выводился только первый столбец с данными, можно воспользоваться утилитой awk со следующим синтаксисом — ‘’:
lastlog | grep Never | awk '' bin daemon adm . . . ntp user1819 user1939
Записи в lastlog перечислены согласно идентификаторов пользователей (User identifier — UID) — от суперпользователя (root) до пользователя с самым большим значением UID в Вашем файле /etc/passwd. Это связано с форматом самого файла lastlog. В отличие от большинства лог-файл Unix, в файле lastlog для записи логов каждого пользователя резервируется отдельное место, и в свою очередь место каждой записи проиндексировано по UID. После этого файлы будут фиксированного размера, особенно если Ваша система имеет аккаунты с наивысшим лимитом своего возможного диапазона UID — такого как 16-битный UID 65536. Также при этом образуется большой объем неиспользуемого пространства, правда только в том случаи если Ваши идентификаторы не являются строго последовательными. Если же Ваша система поддерживает 32-битные UIDы, файл может быть очень большим и иметь 4 294 967 296 (232) различных значений идентификаторов.
Каждая запись в файле lastlog содержит имя пользователя, имя терминала, с которого вошел пользователь и время последнего входа в систему. Запись для суперпользователя (UID 0) в верхней части файла может иметь следующий вид:
od -xc /var/log/lastlog | 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
При выполнении команды lastlog на некоторых компьютерах в определенных случаях может возникнуть впечатление, что команда «зависла». Это происходит в силу того, что даже если в системе зарегистрировано всего два пользователя (root и user), в файле /var/log/lastlog все равно отведено место для максимально возможного числа пользователей, которые могут работать в системе. Поэтому в файле /var/log/lastlog могут иметься большие промежутки между номерами идентификаторов работавших в системе пользователей. Поскольку при просмотре таких интервалов программа не выводит информацию на экран, и возникает впечатление «зависания». Потому не спешите нажимать кнопки и закрывать консоль, а дождитесь ответа команды.
Как мы с Вами установили, команда lastlog может быть очень полезна для проверки логов тех пользователей, поддержку которых Вы еще осуществляете, чтобы убедиться, что аккаунты в системе используются должным образом и они все еще актуальны. Также не забывайте проверять размер логов, а то может оказаться, что их объем уже значительно превышает общий размер Вашей системы.
Просмотр истории входа в Linux. Кто и когда входил в систему
Данная информация обычно нужна системным администраторам для просмотра истории входа в систему на многопользовательском сервере.
Помимо этого, бывает полезно узнать о неудачных попытках входа. Это могут быть боты, но могут быть и попытки взлома вашего сервера.
Где хранятся логи входа в систему
Информация о том, кто входил (залогинивался) или пытался войти в систему, хранится в лог файлах. Для этого используется три лог-файла:
/var/log/btmp — неудачные попытки входа.
/var/run/utmp — кто в данный момент залогинен (текущие сессии).
/var/log/wtmp — список всех сессий входа в систему.
Эти файлы, в отличии от большинства других лог-файлов Linux, имеют бинарный формат. Если вы попробуете просмотреть их командой cat , то на экран будет выведена «каша». Для их просмотра используется команда last .
Просмотр истории входа в систему
Для просмотра логов входа в систему используется команда last . По умолчанию команда last выводит информацию из файла /var/log/wtmp , в котором хранятся записи обо всех сессиях входа.
yuriy pts/0 181.23.456.189 Sat Mar 23 12:27 still logged in nifnif pts/11 181.45.678.912 Wed Mar 20 05:30 - 05:49 (00:19) nafnaf pts/22 181.45.678.312 Fri Mar 15 00:01 - 02:27 (02:26) nufnuf pts/33 181.45.678.411 Wed Mar 13 11:02 - 11:28 (00:26) .
Как вы можете видеть, выводится таблица с информацией. В ней содержатся имена пользователей, IP-адрес, с которого осуществлялся вход, дата и время входа и продолжительность сессии. Запись вида pts/0 означает, что для входа использовалось SSH соединение (или другое удаленное соединение, например, telnet).
Также выводится информация о включении/выключении системы.
Последняя строка в файле /var/log/wtmp показывает, когда был создан файл.
Просмотр истории входа для определенного пользователя
Чтобы показать информацию о сессиях определенного пользователя, то для команды last необходимо указать имя этого пользователя:
Ограничить количество строк
Иногда лог, который выводит команда last , может быть очень большой. Чтобы ограничить количество выводимых строк, используется опция -n ЧислоСтрок или просто -ЧислоСтрок .
Выведем только десять свежих записей:
Просмотр неудачных попыток входа в систему
Как было сказано выше, записи о неудачных попытках входа в систему хранятся в лог-файле /var/log/btmp .
Команда last по умолчанию выводит информацию из файла /var/log/wtmp . Чтобы вывести информацию из другого файла, используется опция -f ИмяФайла
Выведем записи о неудачных попытках входа (из файла /var/log/btmp ):
Или же можно воспользоваться командой lastb . Команда lastb работает точно также, как и команда last , но выводит информацию из файла /var/log/btmp
Заключение
Мы рассмотрели использование команды last для просмотра информации об истории входа в систему.
Дополнительную информацию по использованию команды last можно получить, выполнив в терминале: