Cài đặt Pure-FTPd trên Ubuntu 22.04

theanh

Administrator
Nhân viên
Pure-FTPd là máy chủ FTP miễn phí (giấy phép BSD), an toàn, chất lượng sản xuất và tuân thủ tiêu chuẩn. Nó không cung cấp các tiện ích không cần thiết nhưng tập trung vào hiệu quả và dễ sử dụng. Hướng dẫn này cung cấp quy trình từng bước để cài đặt và cấu hình Pure-FTPd trên Ubuntu.

Điều kiện tiên quyết để cài đặt Pure-FTPd​

Trước khi tiến hành cài đặt, hãy đảm bảo bạn có:
  • Cài đặt máy chủ Ubuntu
  • Truy cập vào tài khoản người dùng có quyền sudo

Cài đặt Pure-FTPd từng bước​

Cập nhật hệ thống Gói​

Đầu tiên, hãy cập nhật danh sách gói của hệ thống:
Mã:
sudo apt update

Cài đặt Pure-FTPd​

Tiếp theo, hãy cài đặt Pure-FTPd bằng lệnh sau:
Mã:
sudo apt install pure-ftpd

Cấu hình Pure-FTPd để tăng cường bảo mật​

Thiết lập môi trường bảo mật​

Tạo nhóm chuyên dụng cho người dùng FTP:
Mã:
sudo groupadd ftpgroup
Tạo người dùng cho Pure-FTPd:
Mã:
sudo useradd -g ftpgroup -d /dev/null -s /etc ftpuser

Quản lý quyền truy cập của người dùng​

Để thêm người dùng vào máy chủ FTP:
Mã:
sudo pure-pw useradd [username] -u ftpuser -g ftpgroup -d /home/ftpusers/[username]
sudo pure-pw mkdb
Thay thế [username] bằng tên người dùng mong muốn.

Cấu hình TLS để truyền dữ liệu an toàn​

Tạo chứng chỉ tự ký:
Mã:
sudo openssl req -x509 -nodes -days 730 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
Sửa đổi cấu hình Pure-FTPd để kích hoạt TLS:
Mã:
echo 1 | sudo tee /etc/pure-ftpd/conf/TLS
sudo service pure-ftpd restart

Tùy chọn cấu hình nâng cao​

Sau đây là danh sách các thiết lập phổ biến có thể được cấu hình cho Pure-FTPd trong thư mục /etc/pure-ftpd/conf/ trên Ubuntu. Tên tệp cấu hình được in đậm.
  • AltLog: Chỉ định các phương pháp ghi nhật ký thay thế. Ví dụ, AltLog clf:/var/log/pureftpd.log sẽ ghi nhật ký các lần chuyển ở định dạng W3C.
  • AnonymousOnly: Khi được bật (bằng cách tạo tệp có tên là AnonymousOnly), nó sẽ hạn chế máy chủ chỉ cho phép đăng nhập ẩn danh.
  • AntiWarez: Nếu tệp này tồn tại, người dùng không được phép tải lên các tệp đã tồn tại trên máy chủ.
  • AutoRename: Tự động đổi tên các tệp đã tải lên nếu có tệp có cùng tên.
  • Bind: Liên kết máy chủ với một địa chỉ IP và cổng cụ thể. Ví dụ, Bind 21 liên kết với cổng 21 trên tất cả các địa chỉ khả dụng.
  • BrokenClientsCompatibility: Cho phép tương thích với các máy khách FTP không tuân thủ nghiêm ngặt các tiêu chuẩn FTP.
  • ChrootEveryone: Nếu được bật, sẽ hạn chế tất cả người dùng vào thư mục gốc của họ.
  • CreateHomeDir: Tự động tạo các thư mục gốc nếu chúng không tồn tại khi người dùng đăng nhập.
  • CustomerProof: Tăng khả năng phục hồi trước các lỗi thường gặp trong cấu hình và lệnh của máy khách.
  • Daemonize: Khi tệp này tồn tại, Pure-FTPd sẽ chạy dưới dạng daemon.
  • DisplayDotFiles: Kiểm soát việc hiển thị các tệp dot (tệp ẩn) hay không.
  • DontResolve: Ngăn chặn việc phân giải DNS để ghi nhật ký và kiểm soát băng thông, điều này có thể cải thiện hiệu suất.
  • ExtAuth: Chỉ định một chương trình bên ngoài để xác thực người dùng.
  • ForcePassiveIP: Buộc máy chủ báo cáo một địa chỉ IP cụ thể cho các máy khách chế độ thụ động.
  • FSCharset: Đặt bộ ký tự hệ thống tệp, hữu ích cho tên tệp không phải ASCII.
  • IPv4Only hoặc IPv6Only: Hạn chế máy chủ chỉ lắng nghe các địa chỉ IPv4 hoặc IPv6.
  • KeepAllFiles: Ngăn chặn việc xóa bất kỳ tệp nào trên máy chủ.
  • LDAPConfigFile: Chỉ định đường dẫn đến tệp cấu hình LDAP để xác thực.
  • LimitRecursion: Giới hạn độ sâu đệ quy và số lượng tệp được hiển thị trong danh sách thư mục.
  • MaxClientsNumber: Giới hạn số lượng tối đa các clients.
  • MaxClientsPerIP: Hạn chế số lượng kết nối đồng thời từ một địa chỉ IP duy nhất.
  • MaxDiskUsage: Giới hạn phần trăm sử dụng đĩa.
  • MaxIdleTime: Đặt thời gian nhàn rỗi tối đa tính bằng phút trước khi ngắt kết nối một client.
  • MaxLoad: Ngắt kết nối các client hoặc từ chối các kết nối mới vượt quá tải hệ thống nhất định.
  • MinUID: Đặt UID tối thiểu để đăng nhập. Người dùng có UID thấp hơn không thể đăng nhập.
  • MySQLConfigFile: Chỉ định đường dẫn đến tệp cấu hình MySQL để xác thực dựa trên cơ sở dữ liệu.
  • NoAnonymous: Vô hiệu hóa đăng nhập ẩn danh nếu tệp này tồn tại.
  • NoChmod: Vô hiệu hóa lệnh CHMOD trên máy chủ.
  • NoRename: Ngăn người dùng đổi tên tệp.
  • PassivePortRange: Xác định phạm vi cổng cho các kết nối thụ động (ví dụ: 30000 35000).
  • PerUserLimits: Đặt giới hạn cho mỗi người dùng.
  • PureDB: Chỉ định đường dẫn đến tệp cơ sở dữ liệu người dùng PureDB.
  • Quota: Đặt hạn ngạch người dùng limits.
  • SyslogFacility: Định nghĩa tiện ích syslog để ghi nhật ký.
  • TLSCipherSuite: Chỉ định các mã hóa TLS được phép cho các kết nối được mã hóa.
  • TrustedGID: Chỉ định danh sách ID nhóm đáng tin cậy để đăng nhập.
  • UMask: Đặt umask mặc định để tạo tệp.
  • UnixAuthentication: Cho phép xác thực với cơ sở dữ liệu mật khẩu UNIX.
  • UploadScript: Chỉ định một tập lệnh để chạy sau khi tải lên thành công.
Danh sách này bao gồm các tùy chọn cấu hình được sử dụng phổ biến nhất nhưng không đầy đủ. Luôn tham khảo tài liệu chính thức của Pure-FTPd hoặc sử dụng lệnh
Mã:
pure-ftpd-wrapper --help
để biết thông tin chính xác và toàn diện nhất.

Ví dụ​

Sau đây là danh sách các thiết lập Pure-FTPd trong /etc/pure-ftpd/conf/ với các ví dụ minh họa cho các loại giá trị mà chúng chấp nhận:
  • AltLog: AltLog clf:/var/log/pureftpd.logVí dụ: clf:/var/log/pureftpd.log
[*] AnonymousOnly: Bật bằng cách tạo tệp có tên AnonymousOnly.
  • Không cần giá trị.
[*] AntiWarez: Bật bằng cách tạo tệp có tên AntiWarez.
  • Không cần giá trị.
[*] AutoRename: Bật bằng cách tạo tệp có tên AutoRename.
  • Không cần giá trị.
[*] Liên kết: Bind 21
  • Ví dụ: 192.168.0.1,21
[*] BrokenClientsCompatibility: Bật bằng cách tạo tệp có tên BrokenClientsCompatibility.
  • Không cần giá trị.
[*] ChrootEveryone: Bật bằng cách tạo tệp có tên ChrootEveryone.
  • Không cần giá trị.
[*] CreateHomeDir: Bật bằng cách tạo tệp có tên CreateHomeDir.
  • Không cần giá trị.
[*] CustomerProof: Bật bằng cách tạo tệp có tên CustomerProof.
  • Không cần giá trị.
[*] Daemonize: Bật bằng cách tạo tệp có tên Daemonize.
  • Không cần giá trị.
[*] DisplayDotFiles: Bật bằng cách tạo tệp có tên DisplayDotFiles.
  • Không cần giá trị.
[*] DontResolve: Bật bằng cách tạo tệp có tên DontResolve.
  • Không cần giá trị.
[*] ExtAuth: ExtAuth /path/to/authenticator
  • Ví dụ: /usr/local/bin/myauth
[*] ForcePassiveIP: ForcePassiveIP 192.168.0.1
  • Ví dụ: 192.168.0.1
[*] FSCharset: FSCharset utf-8
  • Ví dụ: utf-8
[*] Chỉ IPv4 hoặc Chỉ IPv6: Bật bằng cách tạo tệp có tên IPv4Only hoặc IPv6Only.
  • Không cần giá trị.
[*] KeepAllFiles: Bật bằng cách tạo tệp có tên KeepAllFiles.
  • Không cần giá trị.
[*] LDAPConfigFile: LDAPConfigFile /etc/pure-ftpd/ldap.conf
  • Ví dụ: /etc/pure-ftpd/ldap.conf
[*] Giới hạn đệ quy: LimitRecursion 10000 8
  • Ví dụ: 10000 8 (10000 tệp, sâu 8 cấp)
[*] MaxClientsNumber: MaxClientsNumber 50
  • Ví dụ: 50
[*] MaxClientsPerIP: MaxClientsPerIP 8
  • Ví dụ: 8
[*] MaxDiskUsage: MaxDiskUsage 95
  • Ví dụ: 95 (95 phần trăm)
[*] MaxIdleTime: MaxIdleTime 15
  • Ví dụ: 15 (15 phút)
[*] MaxLoad: MaxLoad 4.0
  • Ví dụ: 4.0
[*] MinUID: MinUID 1000
  • Ví dụ: 1000
[*] Tệp MySQLConfig: MySQLConfigFile /etc/pure-ftpd/mysql.conf
  • Ví dụ: /etc/pure-ftpd/mysql.conf
[*] NoAnonymous: Bật bằng cách tạo tệp có tên NoAnonymous.
  • Không cần giá trị.
[*] NoChmod: Bật bằng cách tạo tệp có tên NoChmod.
  • Không cần giá trị.
[*] NoRename: Bật bằng cách tạo tệp có tên NoRename.
  • Không cần giá trị.
[*] PassivePortRange: PassivePortRange 30000 35000
  • Ví dụ: 30000 35000
[*] PerUserLimits: PerUserLimits 8
  • Ví dụ: 8 (8 kết nối đồng thời cho mỗi người dùng)
[*] PureDB: PureDB /etc/pure-ftpd/pureftpd.pdb
  • Ví dụ: /etc/pure-ftpd/pureftpd.pdb
[*] Hạn ngạch: Quota 1000M
  • Ví dụ: 1000M (1000 Megabyte)
[*] SyslogFacility: SyslogFacility ftp
  • Ví dụ: ftp
[*] TLSCipherSuite: TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3
  • Ví dụ: HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3
[*] TrustedGID: TrustedGID 1000
  • Ví dụ: 1000
[*] UMask: UMask 133:022
  • Ví dụ: 133:022 (Tệp: 133, Thư mục: 022)
[*] UnixAuthentication: Bật bằng cách tạo tệp có tên UnixAuthentication.
  • Không cần giá trị.
[*] UploadScript: UploadScript /path/to/script
  • Ví dụ: /usr/local/bin/uploadscript
Những ví dụ này sẽ làm rõ cách cấu hình các tùy chọn khác nhau trong Pure-FTPd.

Giám sát và bảo trì​

Kiểm tra nhật ký thường xuyên trong /var/log/pure-ftpd/ để phát hiện bất kỳ hoạt động hoặc lỗi bất thường nào.
 
Back
Bên trên