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

theanh

Administrator
Nhân viên
Pure-FTPd là phần mềm máy chủ FTP mã nguồn mở miễn phí có sẵn cho Ubuntu và các bản phân phối Linux khác. Được thiết kế tập trung vào bảo mật, hiệu suất và dễ sử dụng, Pure-FTPd cung cấp các tính năng mạnh mẽ như hỗ trợ người dùng ảo, kết nối được mã hóa bằng TLS/SSL và nhiều cơ chế xác thực khác nhau. Nó cũng cung cấp các tính năng như giới hạn băng thông, hạn chế quyền của người dùng và cho phép truy cập FTP ẩn danh. Pure-FTPd thường được chọn vì tính đơn giản trong cấu hình so với các máy chủ FTP khác, khiến nó trở thành lựa chọn phổ biến cho cả triển khai quy mô nhỏ và lớn trên các hệ thống Ubuntu.

Giao thức truyền tệp (FTP) là giao thức mạng tiêu chuẩn được sử dụng để truyền tệp giữa máy khách và máy chủ qua mạng, chẳng hạn như internet. Được phát triển vào đầu những năm 1970, FTP cho phép người dùng tải lên, tải xuống và quản lý tệp trên máy chủ từ xa. Nó hoạt động bằng hai kênh: kênh lệnh để kiểm soát kết nối và kênh dữ liệu để truyền tệp. FTP có thể hoạt động ở chế độ chủ động hoặc thụ động, chế độ này quyết định cách máy chủ và máy khách thiết lập kết nối. Mặc dù được sử dụng rộng rãi để truyền tệp, FTP được coi là không an toàn vì dữ liệu, bao gồm thông tin đăng nhập, được truyền dưới dạng văn bản thuần túy; Tôi sẽ chỉ cho bạn trong hướng dẫn này cách cấu hình Pure-FTPd để sử dụng FTPS (FTP qua SSL/TLS), giúp FTP an toàn hơn.

Hướng dẫn này hướng dẫn bạn từng bước trong quá trình 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ó:
  • Thiết lập máy chủ Ubuntu
  • Truy cập vào tài khoản người dùng có sudo quyền

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

Cập nhật các gói hệ thống​

Đầ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, 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 FTP người dùng:
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 FTP máy chủ:
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 một chứng chỉ:
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)
[*] Tải tối đa: 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