Hy vọng rằng không phải là một sự trùng lặp, nhưng không thể tìm thấy câu trả lời cho câu hỏi này ... Tôi đã tìm thấy câu trả lời này, bề ngoài có vẻ giống nhau, nhưng rất cũ và câu trả lời duy nhất trong đó không trả lời câu hỏi thực tế : Người dùng được chroot cho sftp, nhưng cho phép người dùng đăng nhập bằng SSH

Tôi đã thiết lập thành công môi trường ChrootDirectory đang hoạt động thông qua sftp cho người dùng trong nhóm 'sftp_users'. Nó hoạt động tốt, tất cả các quyền thích hợp và như vậy, hạn chế quyền truy cập chỉ vào sftp và chúng có thể chạy trong (các) thư mục con của chúng bên trong ChrootDirectory. Điều này rất tốt cho những người dùng không được khai báo, không cho phép truy cập ssh và chỉ cho phép rw bên trong (các) thư mục con của họ trong ChrootDirectory.

Tôi muốn có những người dùng sơ khai hơn một chút vẫn có thể sử dụng ssh bình thường, tuy nhiên khi đăng nhập qua sftp sau đó sẽ có môi trường ChrootDirectory. Đây là một vấn đề ít về bảo mật, vì chúng được coi là riêng tư và obvi có thể lướt xung quanh hệ thống tệp trong ssh trong quyền người dùng thông thường của chúng. Vấn đề là, tôi không thấy cách nào để Chroot họ khi họ đăng nhập bằng sftp mà không ngăn đăng nhập ssh. Điều này là để tiêu chuẩn hóa và tin cậy hơn bất cứ điều gì khác, vì vậy khi họ sftp họ chỉ đến vị trí đã Chrooted giống như những người dùng chỉ sftp.

Tôi nghĩ rằng điều này sẽ hoạt động nếu tôi để shell của chúng làm mặc định (không phải / bin / false hoặc nologin). Thật không may, khi họ ở trong nhóm sftp_only, nó sẽ không cho phép họ vào ssh chút nào, chỉ có sftp. Có giải pháp nào cho việc này, ngoài việc có hai tài khoản riêng biệt - một tài khoản được thêm vào 'sftp_users' và một tài khoản không có trong nhóm đó? Cho đến nay, tất cả những gì tôi có thể tìm thấy là tài liệu về cách hạn chế sftp Chroot và đồng thời không cho phép ssh nếu chúng thuộc nhóm đó.

Người dùng ví dụ là 'thử nghiệm'. 'test' nằm trong nhóm sftp_users và do đó có thể đăng nhập qua sftp và được Chroot vào thư mục được chỉ định của anh ấy ('/ sftp / test') và đọc hoặc ghi vào thư mục chính của anh ấy được gắn kết tại '/ sftp / test / home' . Tất cả đều hoạt động. Nhưng ngay cả khi trình bao của anh ta vẫn được đặt trong / etc / passwd thành / bin / bash, 'test' không thể đăng nhập qua ssh nếu được thêm vào nhóm sftp_users. Xóa tư cách thành viên trong nhóm đó và anh ta có thể làm cả hai, nhưng sau đó không được Chrooted theo sftp.

Người dùng không thuộc nhóm 'sftp_users' vẫn có thể đăng nhập qua ssh hoặc sftp, nhưng không được Chroot theo sftp.

Có cách nào để Đối sánh giao thức được sử dụng và / hoặc có thể đặt Đối sánh bổ sung cho một nhóm khác không? Tôi chỉ tìm kiếm chroot khi họ đăng nhập qua sftp. Không chroot qua ssh là tốt cho những người dùng này.

Sau đây là sshd_config của tôi:

Port XXXX
#ListenAddress ::
#ListenAddress 0.0.0.0

Protocol 2

HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key

SyslogFacility AUTH
LogLevel INFO

LoginGraceTime 120
PermitRootLogin no
StrictModes yes

PubkeyAuthentication yes

IgnoreRhosts yes
HostbasedAuthentication no

PermitEmptyPasswords no

ChallengeResponseAuthentication no

X11Forwarding yes
X11DisplayOffset 10
PrintMotd yes
PrintLastLog yes

ClientAliveCountMax 10
ClientAliveInterval 3600
TCPKeepAlive no

#Banner /etc/issue.net

AcceptEnv LANG LC_*

Subsystem sftp /usr/lib/openssh/sftp-server -u 0027

UsePAM yes
PasswordAuthentication yes



Match Group sftp_users
  ChrootDirectory /sftp/%u
  ForceCommand internal-sftp -u 0027
  X11Forwarding no
  AllowTcpForwarding no
  PasswordAuthentication yes
answer

OpenSSH không hỗ trợ ghi đè các từ khóa toàn cầu dựa trên lệnh đã gửi. Bạn phải phân biệt một số (kết hợp) tiêu chí mà OpenSSH đưa ra cho Matchcâu lệnh.

The available criteria are User, Group, Host, LocalAddress, LocalPort, RDomain, and Address (with RDomain representing the rdomain(4) on which the connection was received)

-- man 5 sshd_config

Một lựa chọn phổ biến là cung cấp các dịch vụ bị hạn chế có chủ ý trên các IP thay thế được tiếp cận thông qua các miền thay thế, chẳng hạn như snapshot.backup.examplesftp.backup.example.


Tuy nhiên, các nhận xét về câu hỏi được liên kết giải thích vấn đề một cách rõ ràng.

Nếu bạn nghĩ rằng bạn muốn truy cập sftp được chroot cho những người dùng có đặc quyền, bạn có thể đang chuyển các vai trò khác nhau cho những người dùng giống hệt nhau và điều đó đang dẫn đến rủi ro bảo mật. Thông thường, các mối quan tâm về kiểm tra và phân tách đặc quyền sẽ được phục vụ tốt hơn bằng cách sử dụng một người dùng khác cho bất kỳ điều gì khiến bạn cân nhắc thiết lập cài đặt chroot ngay cả đối với những người dùng không bị giới hạn bởi điều đó. Nếu có hai tác vụ khác nhau, ngay cả khi được thực hiện bởi cùng một người và một tác vụ được thực hiện an toàn hơn nếu bị hạn chế có chủ ý, thì bằng mọi cách, hãy thiết lập một người dùng hệ thống mới (ví dụ: có người dùng personperson-taskchia sẻ hầu hết các hạn chế và phương pháp xác thực, và chỉ hạn chế một trong số chúng trong ssh).