Проблема в понимании параметра `use chroot` в файле rsyncd.conf

Sawashiro Miyuki спросил: 12 мая 2018 в 04:29 в: rsync

rsyncd.conf имеет следующую возможность для режима демона rsync:

Использовать chroot

Если"use chroot" верно, демон rsync будет прокручиваться до "пути" перед началом передачи файла с клиентом. Это имеет преимущество дополнительной защиты от возможных реализаций дыр безопасности, но у него есть недостатки, связанные с требованием суперпользовательских привилегий, невозможностью следовать символическим ссылкам, которые являются eitherabsolute или вне нового корневого пути, и усложнять сохранение пользователей и групп посредством (см. ниже).

В качестве дополнительной функции безопасности вы можете указать dot-dir в "пути" модуля, чтобы указать точку, в которой должен происходить chroot. Это позволяет rsync torun в chroot с не-"/" дорогой для вершины иерархии переноса. Выполнение этой защиты от непреднамеренной загрузки библиотеки (безусловные абсолютные пути не будут находиться внутри иерархии переноса, если вы не использовали неразумное имя пути), и позволяет вам настраивать библиотеки для chroot, которые находятся за пределами передачи. Например, указание "/ var / rsync /./ module1" будет зацикливаться на каталоге "/ var / rsync" и установить путь внутри-chroot к "/ module1". Если вы опустили dot-dir, chroot использовал бы весь путь, а путь theinside-chroot был бы "/".

У меня возникли проблемы с пониманием

вы можете указать dot-dir в "пути" модуля, чтобы указать точку, в которой должен происходить chroot. Это позволяет rsync запускаться в chroot с не-"/" путем для вершины иерархии переноса. Выполнение этой защиты от непреднамеренной загрузки библиотеки

.

Означает ли это, что rsync (в режиме демона) пытается загрузить библиотеки после вызова chroot() системный вызов? Я попытался проверить это, например, rsyncd.conf:

uid = 0
gid = 0
use chroot = yes[backup]
path  = /home/minecraft/
read only = yes

Strace of rsync daemon obviosly показывает chroot:

[pid 20018] geteuid()                   = 0
[pid 20018] chroot("/home/minecraft")   = 0
[pid 20018] chdir("/")                  = 0
[pid 20018] setgid(0)                   = 0
[pid 20018] setgroups(1, [0])           = 0
[pid 20018] setuid(0)                   = 0
[pid 20018] setresuid(-1, 0, -1)        = 0
[pid 20018] geteuid()                   = 0

, но никаких попыток для загрузки библиотек после вызова chroot ().


1 ответ

Bjoern Rennhak ответил: 12 мая 2018 в 05:37

Загрузка нежелательной библиотеки

TLDR;

Режим chroot Rsyncd защищает от случайной загрузки общих системных / пользовательских библиотек, отличных от тех, которые вы намеревались использовать во время фазы соединения rsync. Rsync не может получить доступ и случайно загрузить то, что ему не разрешено в первую очередь (т.е. /) из-за вашего chroot (если он определен правильно).


Как rsync работает с практическим обзором, дает нам некоторое представление о том, какой поток выполнения происходит во время фазы подключения в режиме chroot.

Когда соединение получено для определенного модуля, демон открывает новый дочерний процесс обрабатывать соединение. Затем этот дочерний процесс считывает файл rsyncd.conf, чтобы установить параметры запрашиваемого модуля, которые могут чередоваться по пути к модулю и могут отбрасывать setuid и setgid для процесса. После этого он будет вести себя так же, как любой другой процесс сервера rsync, принимая либо роль отправителя, либо получателя.

Я предполагаю, что library относится к бинарной системе / пользовательским библиотекам (. так, .а). Существуют, например, старые переменные среды, например, например. LD_LIBRARY_PATH и т. д., что может вызвать проблемы при запуске rsync. Из обзора видно, что rsync выполняет следующие действия:

демон создает новый дочерний процесс для обработки соединения.

что означает, что если вы манипулировали некоторыми переменными среды или определяли некоторые конкретные переменные в вашем, например. $HOME/.bashrc и т. д., то это может привести к непредвиденным побочным эффектам, таким как unintended library loading.

Вот какое-то интересное и проницательное объяснение того, как, например, LD_LIBRARY_PATH может привести к странным и непредвиденным побочным эффектам.

use chroot

Кроме того, основная идея этого параметра - дополнительная защита от возможных дыр безопасности в реализации. В меньшей степени также защита от взлома через rsync.

Sawashiro Miyuki ответил: 13 мая 2018 в 06:08
Я обновил вопрос. Если я правильно понимаю, документация говорит, что существует защита от загрузки нежелательных библиотек only , если вы укажете путь "dot-dir" в пути. Или, может быть, это просто мой сломанный английский :)
Bjoern Rennhak ответил: 13 мая 2018 в 08:42
Да, правильно. Если вы определите это без этого, то rsync может потенциально прочитать остальную иерархию путей, с возможными побочными эффектами.
Bjoern Rennhak ответил: 28 мая 2018 в 12:42
@SawashiroMiyuki Можете ли вы принять ответ, если закончите? Благодарю.