Đang cố gắng thiết lập rsync chroot'd


10

Tôi đang cố gắng thiết lập một máy chủ dự phòng. Tôi muốn chroot mỗi người dùng (máy khách) vào thư mục chính của nó và chỉ cho phép nó sử dụng sftprsync .

Tôi nhanh chóng phát hiện ra rằng tôi không phải là người duy nhất cố gắng làm điều gì đó như thế này và tôi đã tìm thấy hướng dẫn này và làm theo nó. Vì vậy, bây giờ tôi đã có người dùng chroot'd chỉ với sftp.

Sau đó, tôi phát hiện ra rằng rsync cần ssh để tự sinh sản trên máy kia và sftp đó là không đủ. Cung cấp cho mỗi người dùng một đăng nhập ssh là điều mà tôi muốn tránh ở nơi đầu tiên.

Bất cứ ai cũng có thể nghĩ về một số giải pháp có thể?

Cảm ơn bạn,

dấu


Hãy xem câu trả lời này. Tôi đã viết một lúc nào đó đi serverfault.com/questions/255084/ trên
user9517

Câu trả lời:


11

Một giải pháp sftp cũng sẽ yêu cầu đăng nhập ssh cho mọi người, vì vậy bạn chưa thực sự mất bất cứ thứ gì ở đây. Cấp quyền truy cập ssh không nhất thiết ngụ ý truy cập shell đầy đủ, ví dụ, điều này cho thấy cách sử dụng authorized_keystệp ssh để cho phép sao lưu qua rsync trong khi giới hạn các lệnh có sẵn cho chỉ bộ thu rsync.

Trong thực tế, nếu bạn chọn xác thực dựa trên khóa, thay vì xác thực mật khẩu (mà bạn nên), thì bạn có thể chạy mọi thứ trong một tài khoản người dùng thay vì yêu cầu nhiều tài khoản. Bạn sẽ sử dụng các khóa để xác định người dùng từ xa và điều khiển bộ thu rsync tại một thư mục cụ thể.

Một cái gì đó như thế này, trong authorized_keystập tin của bạn :

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

Ai đó sử dụng user1khóa riêng sẽ sao lưu vào /tmp/user1và ai đó sử dụng user2khóa riêng sẽ sao lưu vào /tmp/user2. Và kể từ đó trở đi...


Liên kết không còn 404.
luckydonald 28/03/19

Tôi đã cập nhật liên kết.
larsks

6

Thực thi thông thường rsynctừ máy khách đến máy chủ từ xa, nhưng thêm công tắc dài dòng bổ sung : SSH -v, sau đó grep cho Sending command. Bạn sẽ thấy máy khách lệnh chính xác đang gửi đến máy chủ từ xa:

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

Trong trường hợp của tôi, nó là

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

Thêm phần này command="..."vào /home/USER/.ssh/authorized_keystệp máy chủ từ xa như @larsks đã đề cập. Thêm cài đặt bảo mật quảng cáo, nếu cần:

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

Tất cả cùng nhau:

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

(Lấy từ hướng dẫn rất tốt http://en.poseiton.org/post/Rsync-command-restriction-over-SSH )


Câu trả lời tốt đầu tiên.
slm

2

Bạn sẽ cần cung cấp một số hình thức truy cập shell để có thể sử dụng rsync trừ khi bạn kết nối trực tiếp với máy chủ rsync - cổng mặc định là 873 (TCP).

Từ trang người đàn ông rysnc :

Có hai cách khác nhau để rsync liên hệ với hệ thống từ xa: sử dụng chương trình shell từ xa làm phương tiện vận chuyển (như ssh hoặc rsh) hoặc liên hệ trực tiếp với daemon rsync qua TCP. Vận chuyển shell từ xa được sử dụng bất cứ khi nào đường dẫn nguồn hoặc đích chứa một dấu hai chấm (:) sau một đặc tả máy chủ. Liên hệ trực tiếp với daemon rsync xảy ra khi đường dẫn nguồn hoặc đích chứa dấu hai chấm (: :) sau thông số máy chủ, HOẶC khi URL rsync: // được chỉ định (xem thêm TÍNH NĂNG RSYNC-DAEMON VIA A TUYỆT VỜI Phần CONNMENTrq cho một ngoại lệ cho quy tắc sau này).

Để cung cấp quyền truy cập shell hạn chế, hãy xem xét hướng dẫn sau đây . (Lưu ý: liên kết ban đầu đã chết) Tóm tắt:

Thiết lập này kết hợp các tính năng tốt nhất từ ​​rsync, SSH và chroot. Rsync cung cấp tính linh hoạt và hiệu quả trong việc truyền tệp, SSH bảo vệ dữ liệu được truyền và chroot bảo vệ dữ liệu trên máy chủ khỏi bị truy cập trái phép. Hình nộm giới hạn chỉ truy cập vào rsync.

Trong khi máy chủ rsync thực hiện chroot, nó thiếu bảo vệ SSH thường được yêu cầu. Ngoài ra, việc mở một cổng máy chủ rsync bổ sung có rủi ro bảo mật và đôi khi không thể về mặt kỹ thuật hoặc chính trị. Sftp và scp thiếu tính linh hoạt và hiệu quả được cung cấp bởi rsync, đặc biệt là khi có một cây thư mục, chẳng hạn như một trang web.

Hoặc xem qua cách sử dụng rssh (có một hướng dẫn để thiết lập rssh tại đây ):

rssh là một trình bao hạn chế để sử dụng với OpenSSH, chỉ cho phép scp và / hoặc sftp. Bây giờ nó cũng bao gồm hỗ trợ cho ndist, rsync và cvs. Ví dụ: nếu bạn có một máy chủ mà bạn chỉ muốn cho phép người dùng sao chép các tập tin qua scp, mà không cung cấp quyền truy cập shell, bạn có thể sử dụng rssh để làm điều đó.


1
Tin tức hiện tại là rssh không được duy trì và có một số lỗ hổng bảo mật kỳ lạ. Kiểm tra lại trạng thái hiện tại trước khi đầu tư vào nó.
chutz

2
Bạn có thể sử dụng tập lệnh perl rrsyncthay vì rssh, được bao gồm trong gói rsync chính thức. Xem derek.simkowiak.net/backing-up-multipl-servers-with-rsnapshot
unhammer

0

bạn có thể viết một trình bao bọc rsync.

nhìn vào ý tưởng chung ở đây: https://sixohthree.com/1458/locking-down-rsync-USE-ssh

trong vỏ bọc của bạn, bạn có thể làm những gì bạn muốn và có thể chroot người dùng.

Trong trường hợp của tôi, tôi cần phải bật tài khoản ảo bằng cách sử dụng cùng một người dùng * nix. Tôi quản lý để làm như vậy bằng cách sử dụng loại shell này cộng với nhiều dòng trong tệp ủy quyền. Tôi chưa chro người dùng nhưng tôi đã thêm một cấp thư mục người dùng trong lệnh máy chủ rsync.

nhìn vào quá trình người dùng khác nhau bằng cách sử dụng khóa ssh


0

SFTP với khả năng của Syncync, không có vỏ

Bạn có thể sử dụng LFTP + SFTP trong môi trường chroot và đạt được kết quả tương tự như sử dụng rsync, mà không cần cung cấp cho người dùng trình bao hoặc thực hiện bất kỳ tùy chỉnh nặng nào trong ssh với trình bao bọc.

Điều này là an toàn hơn và có thể nhanh hơn đáng kể.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.