Кто же был на сервере?

от автора

Наступает момент, когда системному администратору необходимо определить дату последнего входа в систему каждого из пользователей, а также подготовить список тех аккаунтов, которые этого так и не сделали. Если б Вы не знали команду lastlog, то были бы в восторге насколько легко и быстро она может предоставить Вам эти данные.

Если же Вы все-таки задумались об этом, то не забывайте, что данная команда — это также один из хороших методов проверки безопастности, которую можно проводить на серверах под управлением 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 на подобии этой:

/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 

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

# lastlog | more Username         Port     From             Latest root             pts/0    193.178.187.30   Wed Nov 11 14:21:59 +0200 2015 bin                                        **Never logged in** daemon                                     **Never logged in** adm                                        **Never logged in** ispmaster        pts/0    193.178.187.30   Thu Nov  5 17:00:44 +0200 2015 secom            pts/0    ssh1.secom.com.u Wed Nov  4 18:11:26 +0200 2015 

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

Чтобы создать список всех учетных записей, которые никогда не входили в систему, стоит использовать следующий набор команд. С командой lastlog мы уже знакомы и я на ней подробно останавливаться не буду, дальше стоит добавить утилиту grep для поиска по ключевому слову, в нашем случаи это слово Never, а для того, что бы выводился только первый столбец с данными можно воспользоваться утилитой awk со следующим синтаксисом — ‘{print $1}’:

# lastlog | grep Never | awk '{print $1}' 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) различных значений идентификаторов. Так как некоторые системы устанавливают nfsnobody аккаунт с UID 4 294 967 296 скорее чем с UID 65534, следите за тем, что бы это не осталось без Вашего внимания.

Каждая запись в файле 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 может быть очень полезна для проверки логов тех пользователей, поддержку которых Вы еще осуществляете, что бы убедиться что аккаунты в системе используются должным образом и они все еще актуальны. Также не забывайте проверять размер логов, а то может оказаться что их объем уже значительно превышает общий размер Вашей системы. Не пренебрегайте в своей работе применять довольно простые команды, и естественно используйте место с умом. Удачи!

ссылка на оригинал статьи http://habrahabr.ru/post/270687/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *