it-swarm-vi.com

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

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.

37
user4518

SSH Hỗ trợ chroot một 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à các thư mục thuộc sở hữu gốc không [.__.] Có thể ghi được bởi bất kỳ người dùng hoặc nhóm nào khác. Sau chroot, sshd (8) thay đổi thư mục làm việc [.__.] Thành thư mục chính của người dùng. [.__.]

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

30
gabe.

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 hướng dẫn về cách thiết lập nhà tù chroot. Nó nằm trong tệp CHROOT trong phân phối nguồn. Tóm lại, bạn cần phải có:

  • Một vài tệp nhị phân, được sao chép từ thư mục 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ự
  • /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/tty Và cũng là ổ cắm /dev/log Để 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ù. bindfs cho phép thư mục được cập nhật có nhiều quyền hạn chế hơn, ví dụ như chỉ đọc. (mount --bind Không trừ khi bạn áp dụng bản vá nhân; 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ó từ năm 2011).

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

7
Shadur