Рейтинг:2

Могу ли я запретить пользователю без полномочий root использовать регистратор для создания поддельных записей (например, sshd) в системном журнале?

флаг eg

я только что играл с logger пользователем без полномочий root, но похоже, что каждый может создавать поддельные записи в системном журнале, используя параметр «-t».

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

Могу ли я предотвратить это? => регистратор является частью пакета util-linux-systemd (предыдущий util-linux) и не может быть легко удален, во-вторых, по умолчанию он выполняется для всех на машине.

Используемая система: разные SuSE Linux (SLE 10, 11, 15)

командная строка:

justin@garfield:~ > logger -t sshd[986]: Принят открытый ключ от порта 127.0.0.19.8 65537 sha2: RSA 2e:45:25:54:6o:34:3a:z3:55:07:04 (просто подделка)"
justin@garfield:~ > su -l
Пароль:
root@garfield:~ > tail -n 2 /var/log/messages
27 октября, 13:35:45 garfield sshd[986]: Принят публичный ключ от порта 127.0.0.19.8 65537 sha2: RSA 2e:45:25:54:6o:34:3a:z3:55:07:04 (просто фальшивый)
27 октября 13:36:21 garfield su: (чтобы получить root права) justin on /dev/pts/0

Примечание. Я просто использовал невозможные значения (IP, открытый ключ), чтобы было ясно, что это поддельная запись.

Рейтинг:0
флаг in

Я думаю, что это должно работать таким образом, иногда очень полезно публиковать сообщения журнала из скрипта. Это, конечно, не было предназначено для пользователей, чтобы загрязнить системные журналы. Решением, на мой взгляд, является наличие хорошо настроенной системы ведения журналов, которая не позволит пользователям загрязнять журналы или подделывать системные сообщения, позволяя вам идентифицировать пользователей, которые имеют привычку это делать.

я использую rsyslogd, поэтому я использую это для примеров.

В первую очередь необходимо настроить rsyslogd для хранения определенных переменных из сокета, который он открывает:

модуль (load="imuxsock"
    SysSock.Annotate="включено"
    SysSock.ParseTrusted="включено"
)

При этом вы можете получить доступ к следующим переменным:

  • pid: PID процесса регистрации.
  • жидкость и Гид: UID и GID, под которыми запускается процесс регистрации.
  • Имя приложения: имя процесса регистрации
  • команда: полная командная строка процесса регистрации

В случае регистратор, pid будет PID systemd-журнал, и Имя приложения всегда будет systemd-журнал. С ними вы можете сделать несколько вещей:

Просто зарегистрируйте эти

Вы можете использовать шаблон, который включает эти переменные, чтобы увидеть, есть ли расхождения между сообщением и полученными параметрами. В шаблоне вы можете получить доступ к этим переменным, например %$!пид%. Так, например, вы используете такой шаблон:

$template SomeLogFormat,"%TIMESTAMP:::date-rfc3339% <%pri-text%> %syslogtag%%msg% (зарегистрировано pid=%$!pid%, работающим как %$!uid%)\n"

демон.* /var/log/daemon.log;SomeLogFormat

даст следующую запись:

2021-10-27T18:27:54.638759+02:00 <daemon.info> sshd[986]: Принят открытый ключ от порта 127.0.0.19.8 65537 sha2: RSA 2e:45:25:54:6o:34:3a: z3:55:07:04 (просто подделка) (зарегистрировано pid=540, работающим как 1000)

Из него вы можете увидеть, является ли сообщение законным, а если нет, вы получите UID пользователя, который находится в смешном настроении. Обратите внимание, что вместо того, чтобы указывать параметры один за другим, вы можете использовать %$!% шаблон, который будет регистрировать вышеуказанные значения в формате JSON.

Перенаправить журналы пользователей

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

если $!uid > 999, то /opt/log/user.log;SomeLogFormat
& останавливаться

Использование шаблона (т. ;СомеЛогФормат часть) не является обязательным. Таким образом, все, что исходит от чего-либо с UID 1000+, будет записано в /opt/журнал/user.log. Вы даже можете разделить журналы пользователей по UID следующим образом:

$template userLogFile,"/opt/log/userlog_%$!uid%.log"

если $!uid > 999, то ?userLogFile;SomeLogFormat
& останавливаться

Таким образом, у каждого пользователя будет свой userlog_xxxx.log файл.

Ответить или комментировать

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