Tại sao chroot_local_user của vsftpd không an toàn?


20

Tôi đang thiết lập trên VPS của mình một vsftpd và tôi không muốn người dùng được phép rời khỏi thư mục chính của họ. Tôi đang sử dụng local_user ftp, không ẩn danh, vì vậy tôi đã thêm:

chroot_local_user = CÓ

Tôi đã đọc rất nhiều bài đăng trên diễn đàn, rằng điều này không an toàn.

  1. Tại sao điều này không an toàn?
  2. Nếu điều này không an toàn vì cũng sử dụng ssh để tham gia vào VPS của tôi, thì tôi có thể khóa những người dùng này khỏi sshd, phải không?
  3. Có một lựa chọn khác để đạt được hành vi này của vsftpd không? (Tôi không muốn xóa quyền đọc trên tất cả thư mục / tệp cho "world" trên hệ thống của mình)

Câu trả lời:


20

Kiểm tra Câu hỏi thường gặp của VSFTPD tại đây để biết câu trả lời mà bạn đang tìm kiếm. Dưới đây là đoạn trích quan trọng mà tôi nghĩ sẽ trả lời câu hỏi của bạn.

Q) Giúp đỡ! Ý nghĩa bảo mật được đề cập trong tùy chọn "chroot_local_user" là gì?

A) Trước tiên lưu ý rằng các daemon ftp khác có cùng ý nghĩa. Đây là một vấn đề chung. Vấn đề không quá nghiêm trọng, nhưng đó là: Một số người có tài khoản người dùng FTP không được tin cậy để có quyền truy cập toàn bộ. Nếu những tài khoản này cũng có thể tải lên các tập tin, có một rủi ro nhỏ. Một người dùng xấu hiện có quyền kiểm soát root hệ thống tập tin, đó là thư mục chính của họ. Trình nền ftp có thể khiến một số tệp cấu hình được đọc - ví dụ / etc / some_file. Với chroot (), tệp này hiện nằm dưới sự kiểm soát của người dùng. vsftpd là cẩn thận trong lĩnh vực này. Nhưng, libc của hệ thống có thể muốn mở tệp cấu hình cục bộ hoặc các cài đặt khác ...


Cảm ơn vì điều đó, tôi đã không biết tất cả những điều đó. Đã học được điều gì đó! +1
Yanick Girouard

4
Trên thực tế tôi đã đến đây sau khi đọc Câu hỏi thường gặp vì tôi không hiểu câu nói đáng lo ngại này: "Trình nền ftp có thể khiến một số tệp cấu hình được đọc - ví dụ / etc / some_file. Với chroot (), tệp này hiện nằm dưới sự kiểm soát của người dùng.". Có lẽ đây chỉ là trường hợp nếu vsftpdcó lỗi bảo mật (à tràn bộ đệm) ??? Làm thế nào để chạy vsftpdvới người dùng chroot'ed đến nhà của họ làm cho kịch bản này có nhiều khả năng? Vui lòng giải thích ...
sxc731

4

Vấn đề là bạn không thể sử dụng cả tài khoản cục bộ và cũng có thể vô hiệu hóa các tài khoản đó khỏi đăng nhập shell. Nếu bạn đặt shell đăng nhập của họ thành / bin / nologin, nó sẽ không cho phép bạn đăng nhập bằng vsftpd.

Một trình nền FTP tốt hơn và an toàn hơn sẽ là Pure-ftpd. Nhìn lên, nó có sẵn từ kho EPEL và cho phép tạo người dùng ảo. Máy chủ sử dụng một người dùng / nhóm chung để đặt tất cả các quyền cho các thư mục nhà của người dùng và "ánh xạ" người dùng ảo tới người dùng đó khi đăng nhập để xử lý các quyền. Điều đó an toàn hơn và bạn không phải đối phó với bảo mật đăng nhập openssh.

Pure-ftpd cũng hỗ trợ rất nhiều tính năng như hạn ngạch, tỷ lệ, v.v. Tốt hơn nhiều so với vsftpd.

Đây là một hướng dẫn đơn giản về cách cài đặt nó và định cấu hình người dùng ảo cơ bản: http://blog.namran.net/2011/05/04/how-to-setup-virtual-ftp-server-USE-pure-ftpd- tính bằng centos /

Nếu bạn đọc tài liệu đầy đủ (mà bạn nên), bạn sẽ biết rằng công tắc -d khi tạo người dùng ảo là tự động chroot vào thư mục đó cho người dùng đó.


Tôi sử dụng lệnh AllowUsers user1 user2trong sshd_config, trong đó tôi không cho phép ftp_user1 đăng nhập bằng ssh, người dùng vẫn có thể đăng nhập bằng ftp_user1. Vì vậy, nó hoạt động như ý, nhưng câu hỏi chính của tôi vẫn mở, tại sao nó không an toàn?
p1100i

4
Nó sẽ được thôi! Bạn chỉ cần thêm "không phải vỏ" vào / etc / shell. Trên nhiều hệ thống, / bin / false hoặc / bin / nologin tồn tại trong / etc / shell. Nếu shell ở đó, vsftpd thực sự sẽ cho phép bạn đăng nhập, cũng với chroot_local_user được kích hoạt.
Frands Hansen

1
Tôi đứng sửa rồi. Cảm ơn đã chỉ ra điều đó!
Yanick Girouard
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.