Hạn chế người dùng SSH / SCP / SFTP vào một thư mục


36

Có cách nào đơn giản để hạn chế người dùng SCP / SFTP vào một thư mục không? Tất cả các phương pháp mà tôi đã đưa ra đều yêu cầu tôi thiết lập một nhà tù chroot bằng cách sao chép nhị phân, nhưng tôi không nghĩ rằng điều đó là cần thiết.

Câu trả lời:


29

SSH Hỗ trợ chroot người dùng SFTP nguyên bản. Bạn chỉ cần cung cấp

ChrootDirectory

Trong tệp cấu hình sshd của bạn và khởi động lại sshd.

Nếu bạn chỉ đang làm sftp, thì bạn không phải làm gì thêm. Thật không may, điều này không làm việc cho scp. Đối với shell tương tác, bạn sẽ cần sao chép các tệp nhị phân và / dev nút vào chroot.

Một cấu hình ví dụ, chỉ cho một người dùng, người kiểm tra:

Match User testuser
    ChrootDirectory /home/testuser
    ForceCommand internal-sftp

Một số điều cần chú ý, từ trang man sshd_config:

    Tất cả các thành phần của tên đường dẫn phải là thư mục thuộc sở hữu gốc không phải là thư mục
    có thể ghi bởi bất kỳ người dùng hoặc nhóm khác. Sau chroot, sshd (8) thay đổi
    thư mục làm việc đến thư mục nhà của người dùng.

Tìm kiếm ChrootDirectory trong man sshd_config để biết thêm thông tin.


2
Lưu ý rằng phần bắt đầu bằng "Trình kiểm tra người dùng phù hợp" phải ở END của tệp, vì nó sẽ chỉ bao gồm các dòng cấu hình nếu người dùng là "người kiểm tra" kể từ thời điểm đó.
Magnus

1
Có thể chỉ Chroot cho Giao thức SFTP, nhưng vẫn cho phép kết nối SCP bình thường?
lanoxx

1
Trên máy Ubuntu 14.04 của tôi, cũng cần phải thay đổi Subsystem sftp /usr/lib/openssh/sftp-serverdòng thànhSubsystem sftp internal-sftp -f AUTH -l VERBOSE
partofthetrial

@Magnus hoặc cho đến khi một Matchphần khác .
roaima

12

Chroot là một phương pháp hợp lý đơn giản. Vì hệ điều hành đã có tính năng bảo mật này, các nhà văn daemon có xu hướng không cố gắng thực hiện lại nó.

Rssh đi kèm với một hướng dẫn về việc thiết lập một nhà tù chroot. Đó là trong CHROOTtập tin trong phân phối nguồn. Tóm lại, bạn cần phải có:

  • Một vài mã nhị phân, sao chép từ gốc: /usr/bin/scp, /usr/libexec/openssh/sftp-server,/usr/bin/rssh_chroot_helper
  • Các thư viện ( {/usr,}/lib/lib*.so.[0-9]) mà họ sử dụng, được sao chép tương tự
  • A /etc/passwd(hoàn toàn có thể không phải là bản sao nhưng xuất phát từ bản gốc)
  • Một vài thiết bị : /dev/null, /dev/ttyvà cũng là một /dev/logổ cắm để ghi nhật ký (và bạn cần nói với trình nền syslog của mình để nghe trên ổ cắm đó)

Mẹo bổ sung không có trong tài liệu rssh: Nếu bạn cần một số tệp có thể truy cập được trong nhà tù chroot, bạn có thể sử dụng bindfs hoặc Linux mount --bindđể tạo phân cấp thư mục bổ sung từ bên ngoài nhà tù. bindfscho phép thư mục được đếm lại có nhiều quyền hạn chế hơn, ví dụ như chỉ đọc. ( mount --bindkhông trừ khi bạn áp dụng bản vá kernel; Debian đã bao gồm bản vá này kể từ lúc đông, nhưng hầu hết các bản phân phối khác không có trong năm 2011).


7

Bạn có thể muốn xem xét một cách khéo léo (hoặc gần đây hơn, rssh ); về cơ bản, nó là một vỏ đăng nhập chỉ có thể được sử dụng để khởi chạy scp hoặc hệ thống con sftpd. Trong scponlycbiến thể, nó thực hiện một chroot trước khi kích hoạt hệ thống con được đề cập.


có vẻ không được chấp nhận, ít nhất là trong Ubuntu
tobixen
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.