Спроба налаштувати chroot'd rsync


10

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

Я швидко виявив, що я не єдиний, хто намагається зробити щось подібне, і знайшов цей посібник і дотримувався його. Отже, тепер у мене є користувачі chroot'd, які мають лише sftp.

Тоді я з’ясував, що rsync потребує ssh, щоб нереститися на іншій машині, і цього sftp недостатньо. Надання кожному користувачеві ssh логіну - це те, чого я хотів уникнути в першу чергу.

Хтось може придумати якісь можливі рішення?

Дякую,

Позначити


Подивіться на цю відповідь, я писав, що я ходив деякий час go serverfault.com/questions/255084/…
користувач9517

Відповіді:


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. І так далі...


Посилання пропало 404.
luckydonald

Я оновив посилання.
larsks

6

Виконайте звичайне rsyncвід клієнта до віддаленого сервера, але додайте додатковий багатослівний перемикач:, SSH -vа потім натисніть на 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 )


Гарна перша відповідь.
slm

2

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

Зі сторінки чоловіка rysnc :

Існує два різні способи для rsync зв’язатися з віддаленою системою: використання програми віддаленої оболонки як транспорту (наприклад, ssh або rsh) або зв’язку з демоном rsync безпосередньо через TCP. Транспорт віддаленої оболонки використовується, коли шлях до джерела або місця призначення містить одну двокрапку (:) роздільник після специфікації хоста. Звернення до демона rsync безпосередньо відбувається, коли шлях до джерела або місця призначення містить подвійну двокрапку (: :) роздільник після специфікації хоста, АБО коли вказано URL-адресу rsync: // (див. Також ОСОБЛИВОСТІ RSYNC-DAEMON VIA A 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 для цього.


1
Поточна новина полягає в тому, що rssh не підтримується і має деяку дивну дірку в безпеці. Перевірте поточний стан, перш ніж інвестувати в нього.
chutz

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. Мені вдається це зробити, використовуючи такий тип оболонки плюс багато рядків у файлі санкціонованих_кіїв. Я не вказав користувача, але я додав рівень папки користувача в команду сервера rsync.

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


0

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

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

Це більш безпечно і може бути значно швидше.


0

Rsync у chroot є складним :) Вам потрібно буде встановити мінімальне середовище для / bin / sh та / usr / bin / rsync в хронованому каталозі (націлене місце), щоб воно працювало.

Дивіться всю статтю тут, налаштування середовища rsync закінчується
https://medium.com/@deltazero/linux-remote-backup-rsync-chroot-d797ba6babe5

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.