Как я могу получить список попыток входа в систему с journalctl?

По умолчанию, pgrep только соответствует команде, не arguements. Для соответствия полной командной строке Вам нужно -f опция.

$ pgrep -f java_app

Из pgrep страницы справочника:

- f шаблон обычно только подбирается против имени процесса. Когда-f установлен, полная командная строка используется

5
23.09.2017, 23:06
2 ответа

Вы хотите входить в систему или попытки входа?

Здесь отображаются входы, но не попытки (например, сегодня) и работает в Fedora 22:

$ journalctl -u 'systemd-logind'  --since "today" --until "tomorrow"

Вот пример вывода: - Журналы начинаются в понедельник, 01.09.2014, 03:10:03 BST, заканчиваются в пятницу, 20.11.2015, 09:55:02 GMT . - 20 ноября, 08:47:15 meow systemd [1]: запуск службы входа в систему ... 20 ноября, 08:47:15 meow systemd-logind [699]: новое место seat0. 20 ноября, 08:47:15 мяу systemd-logind [699]: просмотр системных кнопок на / dev / input / event2 (кнопка питания) 20 ноября, 08:47:15 мяу systemd-logind [699]: просмотр системных кнопок на / dev / input / event0 (кнопка питания) 20 ноября, 08:47:15 мяу systemd-logind [699]: просмотр системных кнопок на / dev / input / event1 (крышка Switch) 20 ноября, 08:47:15 meow systemd [1]: запущена служба входа в систему. 20 ноября, 08:47:37 meow systemd-logind [699]: новый сеанс c1 пользователя gdm . 20 ноября, 08:47:46 meow systemd-logind [699]: новый сеанс c2 пользователя gdm. 20 ноября, 08:47:46 meow systemd-logind [699]: удаленный сеанс c1. 20 ноября 08:47:46 meow systemd-logind [699]: удален сеанс c2. 20 ноября 08:47:46 meow systemd-logind [699]: новый сеанс c3 of user gdm. 20 ноября, 08:51:22 meow systemd-logind [699]: новый сеанс 1 пользователя david1.

Он загроможден другой информацией, такой как крышка и питание кнопки, чтобы можно было использовать grep для session , чтобы быть более точным: $ journalctl -u 'systemd-logind' - с "сегодня" - до «завтра» | grep session 20 ноября, 08:47:37 meow systemd-logind [699]: новый сеанс c1 пользователя gdm. 20 ноября, 08:47:46 meow systemd-logind [699]: новый сеанс c2 пользователя gdm. 20 ноября 08:47:46 meow systemd-logind [699]: удален сеанс c1. 20 ноября 08:47:46 meow systemd-logind [699]: удален сеанс c2. {{ 1}} 20 ноября, 08:47:46 meow systemd-logind [699]: новый сеанс c3 пользователя gdm. 20 ноября 08:51:22 meow systemd-logind [699]: новый сеанс 1 пользователя david1.

1
27.01.2020, 20:40

Выполнить:

journalctl -q _AUDIT_TYPE=1112 _TRANSPORT=audit

Объяснение:

Если у вас запущена подсистема аудита (а если вы ее не отключили, то запущена), то это лучший способ получить такую информацию, потому что, кроме всего прочего, если вы используете _TRANSPORT=audit, сообщения не могут быть подделаны, как сообщения через традиционный сокет syslog. Чтобы увидеть все сообщения, отправленные через этот транспорт, используйте journalctl -q _TRANSPORT=audit. (Параметр -q позволяет избежать раздражающих -- Reboot -- строк.)

Чтобы увидеть их в развернутом виде, выполните journalctl -q _TRANSPORT=audit -o verbose. На самом деле, я предлагаю остановиться и сделать это прямо сейчас, пока вы следите за происходящим, потому что следующее, что мы хотим сделать, это отфильтровать некоторые из полей, которые мы видим там. Вот запись из моей системы:

_BOOT_ID=[redacted]
_MACHINE_ID=[redacted]
_HOSTNAME=[redacted]
_UID=0
_TRANSPORT=audit
SYSLOG_FACILITY=4
SYSLOG_IDENTIFIER=audit
AUDIT_FIELD_HOSTNAME=?
AUDIT_FIELD_ADDR=?
AUDIT_FIELD_RES=success
_AUDIT_LOGINUID=18281
_AUDIT_TYPE=1112
AUDIT_FIELD_OP=login
AUDIT_FIELD_ID=18281
_PID=5398
_SELINUX_CONTEXT=system_u:system_r:local_login_t:s0-s0:c0.c1023
AUDIT_FIELD_EXE=/usr/bin/login
AUDIT_FIELD_TERMINAL=tty6
_AUDIT_SESSION=541
_SOURCE_REALTIME_TIMESTAMP=1480529473269000
_AUDIT_ID=7444
MESSAGE=USER_LOGIN pid=5398 uid=0 auid=18281 ses=541 subj=system_u:system_r:local_login_t:s0-s0:c0.c1023 msg='op=login id=18281 exe="/usr/bin/login" hostname=? addr=? terminal=tty6 res=success'

MESSAGE внизу - это неструктурированная запись журнала, которая в основном является тем, что вы видите в невербозном выводе в стиле syslog. Мы могли бы grep для MESSAGE=USER_LOGIN (и закончить прямо сейчас), но журнал позволяет нам делать более интересные вещи, так что давайте продолжим.

Каждый тип сообщения аудита имеет связанный _AUDIT_TYPE (только представьте!). По какой-то причине в структурированном выводе он не преобразуется в текст, но 1112 соответствует USER_LOGIN. Я подтвердил это, проверив libaudit.h, в котором есть (с некоторыми контекстными строками):

#define AUDIT_USER_CHAUTHTOK    1108    /* User acct password or pin changed */
#define AUDIT_USER_ERR          1109    /* User acct state error */
#define AUDIT_CRED_REFR         1110    /* User credential refreshed */
#define AUDIT_USYS_CONFIG       1111    /* User space system config change */
#define AUDIT_USER_LOGIN        1112    /* User has logged in */
#define AUDIT_USER_LOGOUT       1113    /* User has logged out */
#define AUDIT_ADD_USER          1114    /* User account added */
#define AUDIT_DEL_USER          1115    /* User account deleted */

так, journalctl -q _AUDIT_TYPE=1112 _TRANSPORT=audit - это то, что вам нужно. Он получает логины ssh, терминала и GUI и записывает успехи и неудачи. Обратите внимание, что он не перехватывает такие вещи, как sudo или su - для них существуют разные записи аудита.

Даже "короткая" версия вывода довольно многословна, поэтому вы можете использовать -o json и создать короткий сценарий для разбора вывода в красивом формате.

3
27.01.2020, 20:40

Теги

Похожие вопросы