Last
А что можно сказать относительно пользователей, которые ранее зарегистрировались в системе, и более не проявляли своей активности? Вы когда-нибудь регистрировались в Unix-системе и получали сообщение о времени своего последнего входа в систему? Если вы запросите информацию с помощью finger о пользователях, которые в настоящее время не зарегистрированы в системе, демон всего лишь сообщит вам дату и время последнего входа в систему этих пользователей. Каким образом система хранит эту информацию?
В системе используется база данных для хранения записей о регистрации в системе в двоичном виде. Эти записи сохраняются в двух структурах: utmp и wtmp. Подробная структура записей utmp и wtmp достаточно сложна, но команда last позволяет увидеть, кто входил в систему, откуда осуществлялся вход и как долго они оставались активны. Информация, поставляемая командой last, может иметь настолько глубокую ретроспективу, насколько это позволяет системная база данных wtmp.
Пример из жизни. Слежка за пользователями
Системным администраторам нужны средства, чтобы как следует следить за своими пользователями. Периодический запуск команды w может сообщить нам, с какими программами пользователи в настоящий момент работают.
jjohnson@host:~% w 1:45am up 3 days, 12:03, 4 users, load average: 1.55, 2.23, 2.35 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT Gstuart pts/0 192.168.1.10 1:44am 55.00s 0.04s 0.04s ./nc -l -p 1812 -s 1 Wave pts/1 10.10.4.3 Sun 9am 9:57m 0.14s 0.11s -bash Schuster pts/1 10.10.4.15 Mon 3pm 9:57m 0.14s 0.11s pine Jjohnson pts/2 192.168.1.100 12:37am 1.00s 0.35s 0.08s w
Мы можем видеть, что Иванов тщетно бьется над командным запросом, Петров читает свою почту, Сидоров запускает команду w , а что же Гаврилов? Целая командная строка вырезана, но она появляется, когда он пытается запустить Netcat, чтобы перехватить трафик RADIUS. (Опция -p указывает, что RADIUS принимается на порте 1812, а опция -s указывает специфический исходящий адрес; см. лекцию "NETCAT и CRYPTCAT", где подробно рассказано об утилите Netcat.) Мы также можем видеть, что Гаврилов запустил Netcat около 55 секунд назад.
Это выглядит несколько подозрительно. Давайте запустим last на своей системе, чтобы выяснить, кто входил в систему (и как часто). Поскольку мы собираемся получить кучу выходной информации в занятой системе, мы переправим ее через утилиту head (стандартная для большинства систем Unix), чтобы прочитать только первые строки.
jjohnson@host:~% last | head ilof ftpd12204 ilofhost Tue Feb 26 02:00 still logged in ilof ftpd11820 ilofhost Tue Feb 26 01:59 - 02:00 (00:00) derk ftpd11786 10.10.4.88 Tue Feb 26 01:59 - 01:59 (00:00) gstuart pts/0 192.168.1.10 Tue Feb 26 01:59 still logged in rlessen ftpd11413 192.168.118.122 Tue Feb 26 01:59 - 01:59 (00:00) deskel ftpd11665 192.168.174.42 Tue Feb 26 01:59 - 01:59 (00:00) ilof ftpd11533 ilofhost Tue Feb 26 01:59 - 01:59 (00:00) derk ftpd11189 10.10.4.88 Tue Feb 26 01:58 - 01:58 (00:00) gstuart pts/0 192.168.1.10 Tue Feb 26 01:58 - 01:59 (00:01) deskel ftpd11053 192.168.174.42 Tue Feb 26 01:58 - 01:58 (00:00)
Здесь мы можем видеть последних 10 входивших в систему пользователей, и как долго они оставались в системе. Большинство пользователей появились в FTP и не оставались в системе долго. А что же Гаврилов? Кажется, он вошел недавно и оставался там лишь минуту. Однако сейчас он вошел снова. Давайте посмотрим на его последние несколько логинов.
jjohnson@host:~% last | grep gstuart | head gstuart pts/0 192.168.1.10 Tue Feb 26 02:05 still logged in gstuart pts/0 192.168.1.10 Tue Feb 26 02:04 - 02:05 (00:01) gstuart pts/0 192.168.1.10 Tue Feb 26 02:03 - 02:04 (00:01) gstuart pts/0 192.168.1.10 Tue Feb 26 02:02 - 02:03 (00:01) gstuart pts/0 192.168.1.10 Tue Feb 26 02:01 - 02:02 (00:01) gstuart pts/0 192.168.1.10 Tue Feb 26 02:00 - 02:01 (00:01) gstuart pts/0 192.168.1.10 Tue Feb 26 01:59 - 02:00 (00:01) gstuart pts/0 192.168.1.10 Tue Feb 26 01:58 - 01:59 (00:01) gstuart pts/0 192.168.1.10 Tue Feb 26 01:57 - 01:58 (00:01) gstuart pts/0 192.168.1.10 Tue Feb 26 01:56 - 01:57 (00:01)
Гм: Этот парень определенно собирается делать какие-то непонятные вещи. Он входит в систему каждую минуту, выходит, а затем снова входит.
Теперь, когда мы знаем, что Гаврилов ведет себя странно, мы можем предпринять некоторые другие меры, чтобы проследить за ним и узнать, что он делает. Мы можем немедленно сделать копию его начальной директории, чтобы посмотреть ее в автономном режиме, что позволит нам увидеть историю его команд, электронную почту и любые другие средства, которые он недавно загружал и конфигурировал. Мы также видим, что он входит в систему с TTY pts/0. Запуск команды ps дает нам список всех запущенных процессов, что лучше указывает на то, что он собирается сделать. Как только мы собрали информацию, мы можем разместить более <продвинутые> средства, которые помогут нам собрать все куски вместе и проследить его шаги - но все это началось с двух простых системных утилит.
<