Tạo người dùng SFTP và bỏ tù để chroot trên CentOS - lỗi xác thực người dùng


18

Tôi đã có một bản phát hành CentO 6.4 với Digital Ocean và muốn tạo thành công người dùng SFTP và tống giam họ vào thư mục nhà riêng của người dùng nhưng tôi sợ rằng tôi đang làm hỏng điều này.

Tôi đã thử rất nhiều thứ, quá nhiều thứ để liệt kê ở đây vì hầu hết có lẽ không chính xác hoặc sẽ không có ý nghĩa gì nhưng điều tôi cảm thấy nên là quy trình chính xác và điều tôi đã thử là: -

Tạo một nhóm cho sftp: -

groupadd sftp

Tạo người dùng và đặt thư mục chính của họ: -

useradd -d /var/www/vhosts/domain.com dummyuser

Đặt mật khẩu cho người dùng: -

passwd dummyuser

Thay đổi nhóm người dùng thành 'sftp': -

usermod -g sftp dummyuser

Đặt vỏ của người dùng thành /bin/false: -

usermod -s /bin/false dummyuser

Chỉnh sửa hệ thống con trong sshd_config( /etc/ssh/): -

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

Thêm phần sau vào dưới cùng của sshd_configtệp: -

Match group sftp
    X11Forwarding no
    ChrootDirectory %h
    AllowTcpForwarding no
    ForceCommand internal-sftp

Tôi chắc chắn rằng tất cả các thư mục sau đây là root:root: -

/var
/var/www
/var/www/vhosts
/var/www/vhosts/domain.com

Nếu sau đó tôi cố gắng đăng nhập vào máy chủ thông qua SFTP với người dùng dummyuser(trong WinSCP), tôi nhận được những điều sau: -

Authentication log (see session log for details):
Using username "dummyuser".

Authentication failed.

Tất cả những gì tôi muốn đạt được là bỏ tù một người dùng vào thư mục nhà của họ. Tôi cũng đã thiết lập và cấu hình vsftpd. Người dùng có thể đăng nhập tốt nhưng sẽ có quyền truy cập vào toàn bộ máy chủ - Tôi hoàn toàn không thể làm việc được.

Biên tập

Quên đề cập đến, sau đó tôi sshdcũng khởi động lại : -

service sshd restart

Khi lỗi được tạo ra trong WinSCP, trang trợ giúp của họ về vấn đề này ở đây .

Đăng nhập kết quả

/var/log/secure

Tôi đã thay thế tên máy chủ thực tế bằng server_name.

 Apr 28 14:20:56 server_name sshd[9944]: Accepted password for dummyuser from 80.194.255.4 port 44402 ssh2
 Apr 28 14:20:56 server_name sshd[9944]: pam_unix(sshd:session): session opened for user dummyuser by (uid=0)
 Apr 28 14:20:56 server_name sshd[9946]: fatal: bad ownership or modes for chroot directory component "/var/www/vhosts/"
 Apr 28 14:20:56 server_name sshd[9944]: pam_unix(sshd:session): session closed for user dummyuser

Bạn đã khởi động lại sshd? Có gì trong các tệp nhật ký trên máy chủ?
mạo

Có tôi đã làm, xin lỗi tôi đã quên để thêm nó vào cuối câu hỏi của tôi (sẽ bao gồm ngay bây giờ). Tôi nên tìm tệp nhật ký nào (và vị trí) vì tôi đã không tìm thấy tệp 'nhật ký phiên'? Cảm ơn.
zigojacko

Bạn sẽ muốn xem qua /var/log/secure.
mạo

Tuyệt vời, cảm ơn bạn - điều này giúp (cập nhật câu hỏi với các mục nhật ký).
zigojacko

gây tử vong: quyền sở hữu hoặc chế độ xấu cho thành phần thư mục chroot "/ var / www / vhosts /" một cái gì đó như thế này tôi nghi ngờ nhưng vhostsroot:root.
zigojacko

Câu trả lời:


14

Đó là một cạm bẫy phổ biến:
Tất cả các thư mục cho đến nhà chroot phải được sở hữu và chỉ có thể ghi bởi rootngười dùng.
Các thư mục không thể ghi nhóm - ngay cả khi nhóm là root.


4
Tôi vừa học được một mẹo để kiểm tra điều này một cách thuận tiện:namei -l /var/www/vhosts
clockworkgeek

5

Tôi đã tìm thấy và định cấu hình thành công sftp trên CentOS 6.5: http : //www.thegeek ware.com/2012/03/chroot-sftp-setup/

Chỉnh sửa cấu hình sshd:

vim / etc / ssh / sshd_config

#Subsystem      sftp    /usr/libexec/openssh/sftp-server (comment out the default with "#")

add:

Subsystem sftp internal-sftp
Match Group sftp-only
ChrootDirectory /var/www/%u
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp

Thoát và lưu.

Sau đó:

mkdir /etc/skel2
groupadd sftp-only
getent group |grep sftp-only  (take note the GID (Group ID).  Here, in my example it's 500)

Đối với người dùng mới có tên "testuser" (thành viên của nhóm chỉ sftp với GID 500):

useradd --base-dir /var/www --gid 500 --skel /etc/skel2 --create-home --shell /sbin/nologin testuser

(tôi sử dụng trống / etc / skel2 để không có .bashrc vv được sao chép theo mặc định bởi CentOS)

mkdir -p /var/www/testuser/home/testuser

chown root:sftp-only /var/www/testuser
chmod 750 /var/www/testuser

chown root:root /var/www/testuser/home
chmod 755 /var/www/testuser/home

chown testuser:sftp-only /var/www/testuser/home/testuser
chmod 770 /var/www/testuser/home/testuser

Vì vậy, trong ví dụ này, tôi đã thực hiện nó để cấp quyền truy cập an toàn cho các công ty tư vấn bên ngoài quản lý trang web. Bạn có thể sau khi tạo tất cả điều này làm:

mkdir /var/www/testuser/home/testuser/www.somesite.com
chown testuser:apache /var/www/testuser/home/testuser/www.somesite.com
chmod xxx (permissions to the website as needed, usually 750 so apache would get read access)

Người ta có thể tinh chỉnh tất cả điều này khi cần thiết.

Hy vọng điều này sẽ giúp!

Guy Boisvert IngTegration inc. http://www.ingtegration.com


Chào mừng bạn đến với Lỗi Máy chủ! Trong khi về mặt lý thuyết có thể trả lời câu hỏi, tốt hơn là nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo.
masegaloeh

1
Vì bạn đã thay đổi cấu hình sshd, tôi khuyên bạn nên khởi động lại nó:service sshd restart
Loïc
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.