Wtmp linux что это

LinuxData.RU

Каждая попытка входа в систему протоколируется в специальный файл /var/log/wtmp. Обычно туда протоколируются попытки входа с консоли или по ssh, однако, могут протоколироваться и попытки входа и для других служб, например proftpd. Если вы видите, что файл вдруг начал расти, то очень похоже, что в вашу систему пытаются войти с неправильными учётными данными, например, пытаются подобрать пароль, т.е. увеличение размера /var/log/wtmp или /var/log/btmp (файл btmp является резеврной копией wtmp) является серьёзным звонком администратору, чтобы проверить всё ли в порядке.

Сами файлы хранят информацию в бинарном виде, но её легко посмотреть командой:

Если вы всё просмотрели и вам всё понятно, но вам необходимо место, занятое этими файлами, вы можете преспокойно обнулить командой:

Через какое-то время они снова начнут запонятся данными.

Есть ещё также файл /var/run/utmp, который содержит информацию об активных сессиях в данный момент времени. Эту же информацию выдаёт в собственном формате команда who, но вы можете просмотреть её командой:

Хочется ещё отметить команду utmpdump, которая также может применяться к любому из файлов /var/log/wtmp, /var/log/btmp и /var/run/utmp и которая выдаёт информацию в несколько более расширенном формате.

Источник

Wtmp linux что это

Предупреждение: utmp не должен быть доступен на запись классу пользователей «остальные», так как многие системные программы (что очень глупо) зависят от его целостности. Вы рискуете получить фиктивные системные файлы статистики и изменения в системных файлах, если предоставите любому пользователю возможность писать в файл utmp кроме владельца и группы, которой принадлежит файл.

Файл состоит из списка записей с типом структуры utmp, объявленной в (заметим, что в данном случае указано только один из вариантов; детали зависят от версии libc):

Эта структура дает имя специальному файлу, связанному с терминалом пользователя, именем входа пользователя и временем входа в виде как у time(2). Поля строк заканчиваются байтом null (‘\’), если они короче, чем размер поля.

Самые первые записи создаются init(1) после обработки inittab(5). Хотя перед тем, как элемент обрабатывается, init(1) очищает utmp, устанавливая ut_type равным DEAD_PROCESS, заполняя ut_user, ut_host и ut_time нулевыми байтами в записях, в которых ut_type не равен DEAD_PROCESS или RUN_LVL и для которых не существует процессов с PID, равным ut_pid. Если не найдено ни одной пустой записи с нужным ut_id, то init(1) создает новую. Он устанавливает значение ut_id из inittab, ut_pid и ut_time из текущих значений и ut_type в INIT_PROCESS.

mingetty(8) (или agetty(8)) находит элементы по их идентификатору PID, меняет ut_type на LOGIN_PROCESS, изменяет ut_time, устанавливает ut_line и ожидает установки соединения.login(1), после того как пользователь был идентифицирован, меняет ut_type на USER_PROCESS, изменяет ut_time и устанавливает ut_host и ut_addr. В зависимости от mingetty(8) (или agetty(8)) и login(1), записи могут быть расположены в соответствии с ut_line, вместо более предпочитаемого ut_pid.

Когда init(1) обнаруживает, что процесс завершился, он находит его запись в utmp по ut_pid, устанавливает ut_type в DEAD_PROCESS, и затирает ut_user, ut_host и ut_time нулями.

xterm(1) и другие эмуляторы терминалов самостоятельно создают запись USER_PROCESS и генерируют ut_id, используя последние две буквы имени из имени терминала (символы после /dev/[pt]ty). Если они обнаруживают DEAD_PROCESS для этого ID, то они удаляют его или создают новый элемент. Если возможно, они пометят его как DEAD_PROCESS при выходе; предполагается, что они также обнуляют ut_line, ut_time, ut_user и ut_host.

telnetd(8) устанавливает элемент LOGIN_PROCESS и оставляет остальное, как обычно, аргументу для login(1). После завершения сеанса telnet, telnetd(8) очищает utmp вышеописанным путем.

В файл wtmp записываются все входы и выходы в систему. Его формат в точности похож на формат utmp, за исключением того, что пустое имя пользователя означает выход из системы через связанный терминал. Кроме того, название терминала

с именем пользователя shutdown или reboot означает выключение системы или её перезагрузку, а пара названий терминала |/> означает старое/новое системное время в случае, когда date(1) меняет их. В wtmp пишут login(1), init(1) и некоторые версии getty(8) (например, mingetty(8) или agetty(8)). Ни одна из этих программ не создает файл, поэтому если он удалён, то ведение записей заканчивается.

Читайте также:  Windows 10 разделитель разрядов

ФАЙЛЫ

СООТВЕТСТВИЕ СТАНДАРТАМ

В POSIX.1 структура utmp не определена, но есть похожая с именем utmpx и полями ut_type, ut_pid, ut_line, ut_id, ut_user и ut_tv. В POSIX.1 не указан размер полей ut_line и ut_user.

В Linux структура utmpx совпадает со структурой utmp.

Сравнение со старыми системами

v7/BSD имеет меньшее количество полей; важнее всего то, что в нём нет ut_type, который заставляет v7/BSD-совместимые программы выводить, к примеру, отработавшие записи или записи о входе систему. Также в этой версии отсутствует файл настройки, который определяет места для сеансов. Всё это делается в BSD из-за отсутствия поля ut_id.

В Linux (как в System V) поле ut_id записи никогда не меняется после того, как один раз установлено, что позволяет резервировать место без необходимости в файле настройки. Очищение ut_id может привести к соперничеству, приводящему к повреждению элементов utmp и нарушению безопасности системы. Очистка вышеупомянутых полей нулями не требуется согласно семантике System V, но позволяет запускать многие программы, которые используют семантику BSD и которые не изменяют utmp. Linux использует соглашение BSD при работе с содержимым строк, как описано ранее.

В System V нет полей ut_host и ut_addr_v6.

ЗАМЕЧАНИЯ

В отличии от других систем, где протоколирование сообщений utmp может быть выключено простым удалением файла, в Linux файл utmp всегда должен существовать. Если вы хотите отключить who(1), то просто сделайте чтение utmp недоступным всем остальным.

Формат файла зависит от архитектуры, поэтому рекомендуется, чтобы он обрабатывался только на машинах с одинаковой архитектурой.

Заметим, что на двуархитектурных платформах, то есть системах, которые позволяют запускать сразу 32- и 64-битные приложения (x86-64, ppc64, s390x и т.д.), поле ut_tv имеет одинаковый размер в 32- и 64-битном режиме. Это же относится к ut_session и ut_time, если они есть. Это позволяет использовать файлы данных и память одновременно и в 32- и в 64-битных приложениях. Данная возможность достигается сменой типа ut_session на int32_t и ut_tv на структуру с двумя полями int32_ttv_sec и tv_usec. Так как ut_tv не может быть одинакова с struct timeval, то вместо вызова:

для установки значения этого поля рекомендуется использовать:

Источник

Администрирование систем Linux. Журналирование событий

Глава 17. Журналирование событий

В данной главе обсуждаются три отдельных вопроса.

Во-первых, рассматривается механизм журналирования входов в систему: обсуждаются способы получения информации о том, кто, когда и с какого узла осуществил вход в систему. Также рассматриваются способы получения информации о том, кому не удалось осуществить вход в систему, кто не смог воспользоваться утилитой su или ssh .

Во-вторых, рассматривается процесс настройки демона syslog, а также его тестирования с помощью утилиты logger .

Последняя часть главы в основном посвящена механизму ротации фалов журналов , а также содержит пояснения относительно использования команд tail -f и watch для отслеживания изменений файлов журналов .

17.1. Журналирование входов в систему

С целью облегчения процесса отслеживания входов пользователей в систему Linux может записывать необходимые данные в файлы журналов /var/log/wtmp , /var/log/btmp , /var/run/utmp и /var/log/lastlog .

17.1.1. Файл журнала /var/run/utmp (who)

Используйте утилиту who для просмотра содержимого файла /var/run/utmp. Эта утилита выводит информацию о пользователях, осуществивших вход в систему и в данный момент работающих с ней. Обратите внимание на то, что файл utmp находится в директории /var/run, а не /var/log.

17.1.2. Файл журнала /var/log/wtmp (last)

Содержимое файла журнала /var/log/wtmp обновляется силами программы login . Используйте утилиту last для просмотра содержимого файла журнала /var/run/wtmp.

Утилита last также может использоваться и для получения информации о последних перезагрузках.

17.1.3. Файл журнала /var/log/lastlog (lastlog)

Используйте утилиту lastlog для просмотра содержимого файла /var/log/lastlog.

17.1.4. Файл журнала /var/log/btmp (lastb)

Также существует утилита lastb , предназначенная для вывода содержимого файла /var/log/btmp . Содержимое этого файла обновляется программой login при вводе некорректного пароля, следовательно, он содержит информацию о неудачных попытках входа в систему. В файловых системах множества компьютеров данный файл может отсутствовать, в результате чего неудачные попытки входа в систему не будут журналироваться.

Обычно данный файл удаляют по той причине, что пользователи иногда по ошибке вводят свой пароль вместо имени учетной записи, следовательно, читаемый всеми файл является потенциальной угрозой безопасности системы. Вы можете активировать механизм журналирования неудачных попыток входа в систему, просто создав файл с упомянутым именем. В этом случае исполнение команды chmod o-r /var/log/btmp позволит повысить защищенность системы.

Читайте также:  Как спрятать диск зарезервировано системой windows 10

Информация о попытках ввода некорректных паролей при использовании утилит ssh, rlogin или su не сохраняется в файле /var/log/btmp. В нем сохраняется исключительно информация о попытках ввода некорректного пароля при работе с терминалами.

17.1.5. Журналирование входов в систему с использованием утилит su и ssh

В зависимости от дистрибутива в файловой системе вашего компьютера вы также можете обнаружить файл /var/log/secure , который заполнен сообщениями от вспомогательных модулей auth и/или authpriv демона syslog. Этот файл журнала должен содержать информацию о неудачных попытках входа в систему с использованием утилиты su и/или ssh. В некоторых дистрибутивах данная информация сохраняется в файле /var/log/auth.log , поэтому следует проверить конфигурацию демона syslog.

Вы можете активировать данный механизм журналирования самостоятельно, указав путь к произвольному файлу путем добавления следующей строки в файл конфигурации syslog.conf.

17.2. Демон журналирования событий syslogd

17.2.1. О демоне syslogd

Стандартный метод журналирования событий в Linux связан с использованием демона syslogd . Демон syslogd был разработан Eric Allman для использования совместно с агентом передачи почты sendmail, но вскоре стал одним из множества стандартных приложений Unix, архитектура которого гораздо позднее была описана в рамках стандарта RFC 3164. Демон принимает сообщения от множества приложений (и системных утилит) по протоколу UDP на порту 514 и может дописывать сообщения в файлы журнала, выводить их, показывать сообщения в терминалах и передавать данные журнала другим демонам syslogd, работающим на других машинах. Конфигурация демона syslogd осуществляется с помощью файла /etc/syslog.conf .

17.2.2. О демоне rsyslogd

Новый демон журналирования событий носит имя rsyslogd (reliable and extended syslogd — надежный и расширяемый syslogd) и использует файл конфигурации /etc/rsyslogd.conf . Обратная совместимость синтаксиса данного файла конфигурации сохранена.

В каждой строке файла конфигурации используется идентификатор системы (facility) для определения источника сообщения. Также она содержит описание приоритета (priority) для определения важности сообщения и описание действия (action) для принятия решения о том, что нужно сделать с данным сообщением.

Новый демон rsyslog предоставляет много дополнительных возможностей, набор которых может быть расширен с помощью модулей. Модули позволяют, например, осуществлять экспорт сообщений из журнала syslog в базу данных.

Обратитесь к страницам руководств для получения дополнительной информации (после того, как вы закончите чтение данной главы).

17.2.4. Идентификаторы систем (facilities)

На странице руководства, доступной после исполнения команды man rsyslog.conf , можно найти информацию о различных стандартных идентификаторах систем для классификации сообщений от определенных демонов, таких, как mail, lpr, news и kern(el). Идентификаторы систем local0 и local7 могут использоваться для классификации сообщений от системных утилит (или любых подключенных к сети устройств, которые поддерживают механизм сообщений демона syslogd). Ниже приведен список всех идентификаторов систем из файла конфигурации rsyslog.conf версии 1.3. Ключевое слово security является устаревшим.

17.2.5. Описания приоритетов (priorities)

Наиболее важное сообщение может иметь описание приоритета emerg , вслед за которыми идут описания приоритетов alert и crit . Сообщения с наиболее низкими приоритетами имеют описания приоритетов info и debug . При указании минимального приоритета для журналирования сообщений будет осуществляться журналирование сообщений и с более высоким приоритетом. Вы можете использовать префикс = перед описанием приоритета для получения только тех сообщений, которые соответствуют этому описанию. Также вы можете использовать описание приоритета .none для предотвращения выполнения определенного действия при приеме любого сообщения с определенным идентификатором системы.

Ниже приведен список приоритетов в порядке возрастания. Ключевые слова warn, error и panic являются устаревшими.

17.2.6. Действия (actions)

Стандартным действием является отправка сообщения пользователю, имя которого записано в качестве действия. Если в качестве действия приводится строка с префиксом / , демон rsyslogd будет отправлять сообщение в файл (который может быть как обычным файлом, так и файлом устройства принтера или терминала). Префикс @ позволяет осуществлять отправку сообщения другому серверу с исполняющимся на нем демоном syslogd. Ниже приведен список всех возможных действий.

root,user1 передача сообщений пользователям с именами из списка, разделенными с помощью запятой

В дополнение вы можете использовать префикс — перед описаниями действий для исключения принудительной записи данных в файл на диске после журналирования каждого из событий.

Ниже приведен пример фрагмента файла конфигурации /etc/rsyslog.conf для обработки нестандартных сообщений с идентификатором системы local4.

17.2.8. Перезапуск демона rsyslogd

Не забудьте перезапустить демон после модификации его файла конфигурации.

17.3. Утилита logger

Утилита logger может использоваться для генерации тестовых сообщений для демона syslogd. Также вы можете использовать ее в сценариях командной оболочки. Ниже приведен пример команд, используемых для тестирования демона syslogd с помощью утилиты logger .

Читайте также:  Lenovo windows recovery partition

Результаты тестирования демона журналирования событий с помощью утилиты logger.

17.4. Просмотр журналов событий

Вы можете использовать команду tail -f для просмотра последних строк файла журнала. Параметр -f позволяет динамически выводить строки, которые добавляются в файл журнала в реальном времени.

Также вы можете автоматически повторять вызовы утилит, размещая перед ними вызов утилиты watch . Примером может служить следующая команда:

Данный подход аналогичен описанному выше, ведь в результате вывод утилиты who обновляется на экране через каждые две секунды.

17.5. Ротация журналов событий

Размер большинства файлов журналов событий неуклонно растет. Для ограничения размеров этих файлов может использоваться утилита logrotate , предназначенная для ротации, сжатия, удаления и отправки по электронной почте файлов журналов событий. Дополнительная информация об утилите logrotate может быть получена из основного файла конфигурации /etc/logrotate.conf . Отдельные файлы конфигурации могут находиться в директории /etc/logrotate.d/ .

Ниже приведено содержимое стандартного файла конфигурации logrotate.conf из состава дистрибутива Red Hat.

17.6. Практическое задание: журналирование событий

1. Выведите содержимое файла журнала /var/run/utmp с помощью специально предназначенной для этой цели утилиты (без использования утилиты cat или текстового редактора vi).

2. Выведите аналогичным образом содержимое файла журнала /var/log/wtmp.

3. Используйте утилиты lastlog и lastb и сделайте вывод о различии этих утилит.

4. Исследуйте файл конфигурации демона журналирования событий syslogd с целью выяснения пути к к файлу журнала событий, который содержит информацию о неудачных попытках удаленного входа в систему с помощью клиента ssh.

5. Настройте демон журналирования событий syslogd таким образом, чтобы сообщения с идентификатором системы и приоритетом local4.error и сообщения с более высокими приоритетами и этим же идентификатором системы размещались в файле журнала /var/log/l4e.log, а сообщения с идентификатором системы и исключительным приоритетом local4.info — в файле журнала /var/log/l4i.log. Проверьте корректность настройки с помощью утилиты logger!

6. Настройте демон журналирования событий syslogd таким образом, чтобы в файле журнала /var/log/Mysu.log размещались все сообщения, сгенерированные утилитой su в ходе получения привилегий пользователя root. Проверьте корректность настройки!

7. Настройте отправку сообщений с идентификатором системы local5 на сервер вашего соседа, на котором исполняется демон syslogd. Проверьте корректность настройки.

8. Разработайте сценарий, который будет вызывать утилиту logger для отправки сообщений с идентификатором системы local4 демону журналирования событий через каждые 15 секунд (текст сообщений должен отличаться). Используйте команду tail -f для отслеживания изменений ваших локальных файлов журналов событий.

17.7. Корректная процедура выполнения практического задания: журналирование событий

1. Выведите содержимое файла журнала /var/run/utmp с помощью специально предназначенной для этой цели утилиты (без использования утилиты cat или текстового редактора vi).

2. Выведите аналогичным образом содержимое файла журнала /var/log/wtmp.

3. Используйте утилиты lastlog и lastb и сделайте вывод о различии этих утилит.

lastlog : выводит информацию о последних входах пользователей в систему

lastb : выводит информацию о неудачных попытках входа в систему

4. Исследуйте файл конфигурации демона журналирования событий syslogd с целью выяснения пути к к файлу журнала событий, который содержит информацию о неудачных попытках удаленного входа в систему с помощью клиента ssh.

Дистрибутивы Ubuntu 9.10 и Debian Lenny переведены на использование демона журналирования событий rsyslog.

5. Настройте демон журналирования событий syslogd таким образом, чтобы сообщения с идентификатором системы и приоритетом local4.error и сообщения с более высокими приоритетами и этим же идентификатором системы размещались в файле журнала /var/log/l4e.log, а сообщения с идентификатором системы и исключительным приоритетом local4.info — в файле журнала /var/log/l4i.log. Проверьте корректность настройки с помощью утилиты logger!

6. Настройте демон журналирования событий syslogd таким образом, чтобы в файле журнала /var/log/Mysu.log размещались все сообщения, сгенерированные утилитой su в ходе получения привилегий пользователя root. Проверьте корректность настройки!

Данная директива позволит записывать в файл журнала событий не только данные, касающиеся использования утилиты su .

7. Настройте отправку сообщений с идентификатором системы local5 на сервер вашего соседа, на котором исполняется демон syslogd. Проверьте корректность настройки.

В дистрибутиве RHEL5 следует отредактировать файл /etc/sysconfig/syslog для активации режима приема сообщений от удаленных узлов.

В дистрибутиве RHEL7 следует раскомментировать две следующие строки файла /etc/rsyslog.conf для ‘приема сообщений syslog с использованием протокола UDP’.

В Debian/Ubuntu следует отредактировать файл /etc/default/syslog или /etc/default/rsyslog .

На клиентском компьютере:

8. Разработайте сценарий, который будет вызывать утилиту logger для отправки сообщений с идентификатором системы local4 демону журналирования событий через каждые 15 секунд (текст сообщений должен отличаться). Используйте команду tail -f для отслеживания изменений ваших локальных файлов журналов событий.

Источник

Оцените статью