- Отслеживание журналов входа в систему в Ubuntu
- Вступление
- Отслеживание входа в систему
- Использование команды «last»
- Использование команды «lastlog»
- Итоги
- Просмотр истории входа в Linux. Кто и когда входил в систему
- Где хранятся логи входа в систему
- Просмотр истории входа в систему
- Просмотр истории входа для определенного пользователя
- Ограничить количество строк
- Просмотр неудачных попыток входа в систему
- Заключение
- Логи в Linux. Как найти и прочитать?
- Как посмотреть логи в Linux?
- Основные логи
- Ротация лог-файлов
- systemd и journald
- Приоритет сообщений в лог-файлах
- Заключение
Отслеживание журналов входа в систему в Ubuntu
Вступление
Конфигурирование и управление пользователями и группами – основная часть системного администрирования. Эта задача включает в себя мониторинг возможностей входа всех элементов системы.
В данном руководстве представлены основные понятия об управлении пользователями и ведении журнала аутентификации. Данные принципы работы изучаются на примере выделенного сервера Ubuntu 12.04, но любой современный дистрибутив Linux работает таким же образом.
В третьей части говорится о том, как отслеживать журнал регистрации доступа, чтобы убедиться в том, что система доступна только для авторизованных пользователей.
Отслеживание входа в систему
Основным компонентом управления аутентификацией является мониторинг системы после настройки пользователей.
К счастью, современные системы Linux регистрируют все попытки аутентификации в дискретном файле. Он расположен в «/var/log/auth.log».
sudo less /var/log/auth.log
May 3 18:20:45 localhost sshd[585]: Server listening on 0.0.0.0 port 22.
May 3 18:20:45 localhost sshd[585]: Server listening on :: port 22.
May 3 18:23:56 localhost login[673]: pam_unix(login:session): session opened fo
r user root by LOGIN(uid=0)
May 3 18:23:56 localhost login[714]: ROOT LOGIN on ‘/dev/tty1’
Sep 5 13:49:07 localhost sshd[358]: Received signal 15; terminating.
Sep 5 13:49:07 localhost sshd[565]: Server listening on 0.0.0.0 port 22.
Sep 5 13:49:07 localhost sshd[565]: Server listening on :: port 22.
. . .
Использование команды «last»
Как правило, нужно отследить только самые последние попытки входа. Это можно сделать при помощи инструмента «last»:
last
demoer pts/1 rrcs-72-43-115-1 Thu Sep 5 19:37 still logged in
root pts/1 rrcs-72-43-115-1 Thu Sep 5 19:37 — 19:37 (00:00)
root pts/0 rrcs-72-43-115-1 Thu Sep 5 19:15 still logged in
root pts/0 rrcs-72-43-115-1 Thu Sep 5 18:35 — 18:44 (00:08)
root pts/0 rrcs-72-43-115-1 Thu Sep 5 18:20 — 18:20 (00:00)
demoer pts/0 rrcs-72-43-115-1 Thu Sep 5 18:19 — 18:19 (00:00)
Это действие выводит отформатированную версию файла «/etc/log/wtmp».
Как можно видеть, в первой и третьей строках показано, что пользователь все еще находится в системе.
В противном случае, общее время сеанса пользователя задается набором значений, разделенных дефисом.
Использование команды «lastlog»
Чтобы получить подобную информацию в другом виде, можно просмотреть последний раз входа в систему каждого пользователя.
Это можно сделать, войдя в файл «/etc/log/lastlog». Данная информация сортируется в соответствии с записями в файле «/etc/passwd»:
lastlog
Username Port From Latest
root pts/1 rrcs-72-43-115-1 Thu Sep 5 19:37:02 +0000 2013
daemon **Never logged in**
bin **Never logged in**
sys **Never logged in**
sync **Never logged in**
games **Never logged in**
. . .
Здесь можно увидеть время последнего входа в систему каждого пользователя.
Обратите внимание, на данный момент многие пользователи системы никогда не входили, о чем говорит значение **Never logged in**.
Итоги
Авторизация пользователей в Linux является относительно гибкой областью управления системой, так как одну и ту же задачу можно выполнить разными способами при помощи простых инструментов.
Важно запомнить, где система хранит информацию о входе, чтобы отслеживать внесенные на сервер изменения
Источник
Просмотр истории входа в Linux. Кто и когда входил в систему
В данной заметке мы рассмотрим, как узнать, какие пользователи и когда именно входили в систему Linux.
Данная информация обычно нужна системным администраторам для просмотра истории входа в систему на многопользовательском сервере.
Помимо этого, бывает полезно узнать о неудачных попытках входа. Это могут быть боты, но могут быть и попытки взлома вашего сервера.
Где хранятся логи входа в систему
Информация о том, кто входил (залогинивался) или пытался войти в систему, хранится в лог файлах. Для этого используется три лог-файла:
/var/log/btmp — неудачные попытки входа.
/var/run/utmp — кто в данный момент залогинен (текущие сессии).
/var/log/wtmp — список всех сессий входа в систему.
Эти файлы, в отличии от большинства других лог-файлов Linux, имеют бинарный формат. Если вы попробуете просмотреть их командой cat , то на экран будет выведена «каша». Для их просмотра используется команда last .
Просмотр истории входа в систему
Для просмотра логов входа в систему используется команда last . По умолчанию команда last выводит информацию из файла /var/log/wtmp , в котором хранятся записи обо всех сессиях входа.
Выполним команду last :
Как вы можете видеть, выводится таблица с информацией. В ней содержатся имена пользователей, 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 можно получить, выполнив в терминале:
Источник
Логи в Linux. Как найти и прочитать?
Обновл. 20 Май 2021 |
Процесс загрузки системы, работа приложений и служб, различные действия пользователей, сообщения ядра ОС и многое другое — все эти события регистрируются в специальных журналах операционной системы, так называемых log-файлах (или «логах»). Если в работе системы что-то пойдет не так, то эти файлы станут для вас полезным источником информации, с помощью которого вы сможете разобраться в причинах возникших проблем и самостоятельно их устранить.
Как посмотреть логи в Linux?
Большинство логов в Linux генерируются системными демонами syslogd или rsyslogd и хранятся в обычном текстовом файле ASCII в каталоге /var/log. Этот каталог содержит лог-файлы самой ОС, служб и различных приложений, запущенных в системе. Вот как этот каталог выглядит в типичной системе Debian Linux:
Если вы попробуете просмотреть какой-нибудь лог-файл от имени обычного пользователя, то в 99% случаев система ответит вам сообщением о нехватке прав доступа. Поэтому я заранее переключился на пользователя root (команда su –) и все дальнейшие действия будут выполняться от его имени.
Теперь можно перейти к непосредственному изучению содержимого лог-файлов. И для начала, мы заглянем внутрь boot.log. Данный лог-файл содержит информацию обо всех этапах загрузки операционной системы:
root@debian:/var/log# tail boot.log
Как вы можете заметить, команда tail вывела последние 10 строк лог-файла, которые дают нам информацию о последовательном запуске различных сервисов, а также отображает их статус.
Как уже было сказано выше, многие лог-файлы хранятся в виде обычных текстовых файлов, поэтому их можно просматривать с помощью следующих стандартных команд:
tail — вывод последних 10 строк;
head — вывод первых 10 строк;
cat — вывод содержимого всего лог-файла;
grep — поиск в лог-файле всех вхождений заданного выражения или фильтрация лог-файла по заданному выражению;
zcat — отображает всё содержимое сжатых лог-файлов (с расширением *.gz);
zmore — постраничный просмотр сжатых лог-файлов, без их распаковки;
zgrep — поиск внутри сжатого лог-файла.
Основные логи
В основных логах, необходимых для работы Linux, содержится наиболее значительный объем информации о текущем состоянии системы. Их можно условно разделить на четыре категории:
Многие из этих лог-файлов располагаются в каталоге var/log. Наиболее распространенными логами являются:
/var/log/boot.log — журнал загрузки системы (в нем хранится вся информация, связанная с этапами загрузки ОС);
/var/log/kern.log — журнал ядра (в нем хранятся сообщения и предупреждения, поступающие непосредственно из ядра Linux);
/var/log/syslog или /var/log/messages — журналы, в которых хранится информация об общей активности в системе (включая сообщения этапа загрузки);
/var/log/auth.log или /var/log/secure — журналы аутентификации и безопасности (в них хранятся записи обо всех попытках входа в систему, включая как успешные, так и неудачные);
/var/log/debug — журнал отладки (в нем хранится подробная отладочная информация системы и приложений);
/var/log/daemon.log — журнал демонов (содержит информацию о событиях, связанных с различными запущенными в системе демонами/службами);
/var/log/maillog или /var/log/mail.log — журналы почтовых серверов (в них хранится информация, относящаяся к почтовым серверам и архивированию электронных писем);
/var/log/cron — журнал, в котором хранится информация о запланированных задачах (заданиях cron);
/var/log/faillog — информация о неудачных входах в систему. Журнал полезен для изучения потенциальных нарушений безопасности, таких как: взломы учетных записей, попытки перебора паролей и пр.;
/var/log/dmesg — журнал сообщений драйверов устройств. Просмотреть содержимое данного журнала можно с помощью команды dmesg . Стоит заметить, что при достижении своего предела, старые сообщения перезаписываются более новыми.
/var/log/Xorg.x.log — журнал сообщений X-сервера.
В зависимости от выбранного дистрибутива, вы можете встретить следующие лог-файлы менеджеров пакетов:
/var/log/dpkg.log — журнал пакетов, установленных через утилиту dpkg в системах на основе Debian Linux.
/var/log/yum.log — журнал пакетов, установленных через утилиту yum в системах на основе Red Hat Linux.
/var/log/emerge.log — журнал пакетов (ebuild), установленных через утилиту emerge в Gentoo Linux.
Не все журналы разработаны в удобочитаемом виде. Некоторые из них предназначены только для чтения системными приложениями и представлены в бинарном формате данных:
/var/log/utmp и /var/log/utmp — журналы учета входов пользователей в систему. Для просмотра сообщений применяется команда utmpdump , например:
/var/log/lastlog — журнал с информацией о последних входах пользователей. Для просмотра сообщений применяется команда lastlog :
Ротация лог-файлов
Если учесть, что информация в лог-файлы поступает регулярно и по любому поводу, то в скором времени они должны были бы стать просто гигантскими, занимая при этом огромную кучу места на диске. А работать с ними было бы просто невозможно. Но этого не происходит благодаря ротации лог-файлов.
Цель ротации заключается в сжатии устаревших лог-файлов, которые занимают много места. Лог-файлы, в конце имен которых добавлены нули, являются ротируемыми (их имена были автоматически изменены системой). Ротацию лог-файлов можно выполнить с помощью команды logrotate, например:
Настройки ротации лог-файлов хранятся в соответствующем файле конфигурации /etc/logrotate.conf:
var/log/имя_журнала.log <
Missingok
Notifempty
Compress
Size 20k
Daily
Create 0600 root root
>
Разберем детально каждую строку вышеприведенного фрагмента:
Missingok — указывает команде logrotate не выводить ошибку, если лог-файл отсутствует.
Notifempty — если лог-файл пуст, то ротации не будет.
Compress — лог-файл необходимо сжать.
Size 20k — гарантирует, что лог-файл не превышает заданного размера, в противном случае производится его ротация.
Daily — ротация лог-файлов по ежедневному расписанию. Также можно задавать ежечасный ( Hourly ), еженедельный ( Weekly ), ежемесячный ( Monthly ) или ежегодный ( Yearly ) график.
Create 0600 root root — создает экземпляр лог-файла, владельцем и группой которого является root.
Теперь, разобравшись с тем, что означает каждый параметр, можно каждому лог-файлу задавать соответствующий индивидуальный параметр ротации.
systemd и journald
systemd — это подсистема инициализации и управления службами в Linux, фактически вытеснившая в 2010-е годы традиционную подсистему init. В связке с ней работает и journald — демон сбора логов, являющийся частью systemd. Он собирает логи со всей системы и хранит их в бинарном виде в каталоге /var/log/journal. Для того чтобы их просмотреть, создана специальная утилита journalctl. Рассмотрим несколько примеров её применения.
Чтобы просмотреть последние 10 строк логов всех запусков системы, достаточно выполнить следующую команду:
# journalctl —list-boots | tail
Видите столбец, который я обвел красным? Цифрой 0 в нем обозначена текущая загрузка системы, цифрой -1 — предыдущая и т.д. Если вы хотите просмотреть логи какой-то конкретной загрузки, например, позапрошлой, то достаточно ввести:
Также можно просмотреть информацию по выбранной службе, например, по NetworkManager:
# journalctl -u NetworkManager
Или же вывести сообщения ядра ОС:
Для получения своих, каких-то более конкретных результатов, допускается комбинировать опции и параметры команды journalctl :
# journalctl -b -1 -u NetworkManager
Для вывода информации только по нескольким последним записям, применяется опция -n , задающая их количество:
# journalctl -u NetworkManager -n 5
Если говорить про systemd, то, наверное, стоит упомянуть и про команду systemd-analyze, которая отвечает за сбор статистики загрузки системы. Применение данной команды без параметров отобразит общее время загрузки системы:
С помощью параметра blame можно увидеть, сколько времени понадобилось для загрузки каждой конкретной службы (при этом сверху отобразятся самые медленные):
Приоритет сообщений в лог-файлах
Сообщения в лог-файлах создаются в зависимости от типа событий. В свою очередь, событие имеет определенную степень важности. В зависимости от этой важности событию присваивается определенный приоритет:
emerg — наивысший приоритет, что-то сломалось, повод паниковать;
alert — тревога, стоит волноваться;
crit — критическое событие, стоит насторожиться;
err — ошибка;
warning — предупреждение;
notice — уведомление, можно не заморачиваться;
info — информационное сообщение, принять к сведению и забыть;
debug — отладочная информация.
Применяя вышеописанные значения приоритетов, можно просматривать сообщения лог-файлов, фильтруя их по заданному приоритету:
# grep ‘err’ /var/log/syslog
Или же для journalctl:
# journalctl -p warning -b 0
Заключение
Конечно, на данном уроке были рассмотрены только самые основные моменты данной темы. Но в то же время объема представленной информации вполне хватит обычному пользователю, чтобы свободно работать с логами в Linux. Увидимся!
Поделиться в социальных сетях:
Источник