Попытка настроить chroot'd Rsync

10

Я пытаюсь настроить резервный сервер. Я хочу привязать каждого пользователя (клиента) к своему домашнему каталогу и разрешить ему использовать только sftp и rsync .

Я быстро обнаружил, что я не единственный, кто пытается сделать что-то подобное, и я нашел это руководство и следовал ему. Так что теперь у меня есть chroot'd пользователи только с sftp.

Затем я обнаружил, что rsync нуждается в ssh для порождения себя на другой машине, и что sftp недостаточно. Предоставление каждому пользователю ssh логина - это то, чего я в первую очередь хотел избежать.

Кто-нибудь может придумать какие-нибудь возможные решения?

Спасибо,

отметка

Марк Р.
источник
Посмотрите на этот ответ я написал некоторое время идут serverfault.com/questions/255084/...
user9517

Ответы:

11

Решение sftp также потребует ssh-входа для всех, так что вы здесь ничего не потеряли. Предоставление доступа по ssh не обязательно подразумевает полный доступ к оболочке, например, это показывает, как использовать authorized_keysфайл ssh, чтобы разрешить резервное копирование через rsync, ограничивая доступные команды только получателем rsync.

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

Примерно так, в вашем authorized_keysфайле:

command="/usr/bin/rsync --server -a . /tmp/user1" ssh-rsa ... user1
command="/usr/bin/rsync --server -a . /tmp/user2" ssh-rsa ... user2

Кто-то, использующий user1закрытый ключ, будет выполнять резервное копирование /tmp/user1, а кто-то, использующий user2закрытый ключ, будет делать резервную копию /tmp/user2. И так далее...

larsks
источник
Ссылка пропала 404.
luckydonald
Я обновил ссылку.
Жаворонки
6

Выполните обычное rsyncс клиента на удаленный сервер, но добавьте дополнительный подробный ключ:, SSH -vзатем grep для Sending command. Вы увидите точную команду, которую клиент отправляет на удаленный сервер:

rsync -avz -e'ssh -v -i /ssh-keys/clientprivate.key' --bwlimit=8000 --delete root@server:/path/ /backup/myserver/ 2>&1 | grep "Sending command"

В моем случае это было

rsync --server -vvlogDtprze.iLsf --bwlimit=8000 --delete . /path

Добавьте это как command="..."к /home/USER/.ssh/authorized_keysфайлу удаленного сервера, как упомянуто @larsks. Добавьте дополнительные настройки безопасности, если необходимо:

no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAAAB3NzaC1yc2..CPhIJ+LVULWz arnis@server

Все вместе:

command="rsync --server -vvlogDtprze.iLsf --bwlimit=8000 --delete . /backup/path",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAAAB3NzaC1yc2..CPhIJ+LVULWz arnis@server

(Взято из очень хорошего учебника http://en.positon.org/post/Rsync-command-restriction-over-SSH )

Арнис Юрага
источник
Хороший 1-й ответ.
Slm
2

Вам понадобится предоставить некоторую форму доступа к оболочке, чтобы иметь возможность использовать rsync, если вы не подключаетесь напрямую к серверу rsync - порт по умолчанию - 873 (TCP).

Со страницы руководства rysnc :

У rsync есть два разных способа связаться с удаленной системой: использовать программу удаленной оболочки в качестве транспорта (например, ssh или rsh) или напрямую связаться с демоном rsync через TCP. Транспорт удаленной оболочки используется всякий раз, когда путь источника или назначения содержит один разделитель двоеточия (:) после спецификации хоста. Обращение к демону rsync напрямую происходит, когда путь источника или назначения содержит двоеточие (: :) после спецификации хоста, ИЛИ когда указан URL-адрес rsync: // (см. Также ОСОБЕННОСТИ lqUSING RSYNC-DAEMON В ОТНОШЕНИИ REMOTE-SHELL Раздел CONNECTIONrq для исключения из этого последнего правила).

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

Эта настройка сочетает в себе лучшие функции rsync, SSH и chroot. Rsync обеспечивает гибкость и эффективность передачи файлов, SSH защищает передаваемые данные, а chroot защищает данные на сервере от несанкционированного доступа. Думмыш ограничивает доступ только к rsync.

Хотя сервер rsync реализует chroot, ему не хватает защиты SSH, которая часто требуется. Кроме того, открытие дополнительного порта сервера rsync представляет угрозу безопасности и иногда невозможно ни технически, ни политически. Sftp и scp не обладают гибкостью и эффективностью, предоставляемыми rsync, особенно когда используется дерево каталогов, например веб-сайт.

Или рассмотрим использование rssh (есть руководство по настройке rssh здесь ):

rssh - это ограниченная оболочка для использования с OpenSSH, позволяющая использовать только scp и / или sftp. Теперь он также включает поддержку rdist, rsync и cvs. Например, если у вас есть сервер, с которого вы хотите, чтобы пользователи могли копировать файлы только через scp, не предоставляя доступ к оболочке, вы можете использовать rssh для этого.

runlevelsix
источник
1
Текущие новости в том, что rssh не поддерживается и имеет некоторую странную дыру в безопасности. Проверьте текущее состояние, прежде чем инвестировать в него.
болтун
2
Вы можете использовать скрипт perl rrsyncвместо rssh, включенный в официальный пакет rsync. См. Derek.simkowiak.net/backing-up-multiple-servers-with-rsnapshot
unhammer
0

Вы можете написать оболочку, которая упаковывает rsync.

посмотрите на общую идею здесь: https://sixohthree.com/1458/locking-down-rsync-using-ssh

в своей оболочке вы можете делать то, что вы хотите, и, возможно, выполнять поиск пользователя.

В моем случае мне нужно было включить виртуальную учетную запись, используя того же пользователя * nix. Мне удается сделать это с помощью этого вида оболочки плюс много строк в файле авторизованных_ключей. У меня нет chroot пользователя, но я добавил уровень папки пользователя в команде сервера rsync.

посмотрите на пользователя процесса по-другому, используя ключ ssh

quazardous
источник
0

SFTP с возможностями Rsync, без оболочки

Вы можете использовать LFTP + SFTP в среде chroot и достичь тех же результатов, что и при использовании rsync, без предоставления пользователю оболочки или каких-либо сложных настроек в ssh с помощью оболочек.

Это более безопасно и может быть значительно быстрее.

Аарон
источник
0

Rsync в chroot сложно :) Вам нужно будет установить минимальное окружение для / bin / sh и / usr / bin / rsync в каталоге chrooted (на стороне назначения), чтобы он работал.

См. Всю статью здесь, к концу настройки rsync-среды
https://medium.com/@deltazero/linux-remote-backup-rsync-chroot-d797ba6babe5

dayvee.cz
источник