Версия ====== - sudo-logsrvd-1.9.12p2-alt1 Дистрибутивы ============ - p10-server-10-x86-64, обновленный до Sisyphus - p10-workstation-10-x86-64, обновленный до Sisyphus Стенд ===== Две машины: клиент и сервер. Установить пакет sudo-logsrvd на сервере и клиенте: # apt-get install -y sudo-logsrvd Настройка сервера: 1. В файле /etc/sudo_logsrvd.conf раскоментировать строчки: listen_address = *:30343 pid_file = /var/run/sudo/sudo_logsrvd.pid 2. Запустить сервер: # sudo_logsrvd -n Настройка клиента (настроить sudoreplay): 1. Создать каталог: # mkdir -m 750 /var/log/sudo-io 2. В /etc/sudoers добавить следующие строки: test ALL=(ALL) ALL Defaults log_output Defaults!/usr/bin/sudoreplay !log_output Defaults!/sbin/reboot !log_output На клиенте первый системный пользователь обозначен как test. Шаги воспроизведения ==================== 1. На клиенте от пользователя test выполнить команду из под sudo: $ sudo whoami 2. На клиенте отправить логи sudo на сервер: # sudo_sendlog -h <IP-адрес сервера> -p 30343 /var/log/sudo-io/00/00/01/ Ожидаемый результат: примерный вывод как указано ниже Connected to <IP-адрес сервера>:30343 Server ID: Sudo Audit Server <версия sudo> Remote log ID: /var/log/sudo-io/00/00/06 1 I/O log transmitted successfully in 0.002411046 seconds После выполнения команды # sudoreplay -l примерный вывод полей: янв 23 14:21:08 2023 : test : TTY=/dev/pts/1 ; CWD=/home/test ; USER=root ; HOST=workstation-10-x86-64-20230123.localdomain ; TSID=000001 ; COMMAND=/usr/bin/whoami Фактический результат: Connected to <IP-адрес сервера>:30343 Server ID: Sudo Audit Server 1.9.12p2 Remote log ID: /var/log/sudo-io/00/00/01 sudo_sendlog: error message received from server: invalid ClientMessage sudo_sendlog: exited prematurely with state 0 sudo_sendlog: elapsed time sent to server [0, 10112045] sudo_sendlog: commit point received from server [0, 0] При этом # sudoreplay -l на сервере показывает вполне корректный вывод: янв 23 14:07:58 2023 : test : HOST=workstation-10-x86-64-20230123.localdomain ; TTY=/dev/pts/0 ; CWD=/home/test ; USER=root ; TSID=00/00/01 ; COMMAND=/usr/bin/whoami Не воспроизводится в P10 Воспроизводится в задании 313932 для P10.
Проблема выявлена только для серверной части. Новая клиентская часть со старым сервером работает корректно. В серверной части проблема прилетела вот в этом коммите: - https://github.com/sudo-project/sudo/commit/e6f2ad0ed6fd28e42915260352cd0a897bc2c0cc commit e6f2ad0ed6fd28e42915260352cd0a897bc2c0cc Author: Todd C. Miller <Todd.Miller@sudo.ws> Date: Wed Sep 28 08:47:25 2022 -0600 Add missing NULL checks for mandatory fields in protobuf messages. Also no longer reject an InfoMessage with an unknown value_case, just log and ignore it. Сервер проверяет валидность пакета и выпадает в функции handle_exit() /* Check that message is valid. */ if (msg->run_time == NULL) { sudo_warnx(U_("%s: %s"), source, U_("invalid ExitMessage")); closure->errstr = _("invalid ExitMessage"); debug_return_bool(false); } Причину пока выясняю.
Версия пакета: sudo-1.9.13p2-alt1.x86_64 Ошибка больше не воспроизводится: Server ID: Sudo Audit Server 1.9.13p2 Remote log ID: /var/log/sudo-io/00/00/01 1 I/O log transmitted successfully in 0.006069889 seconds