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.
Tạo người dùng cho Pure-FTPd:
Thay thế
Sửa đổi cấu hình Pure-FTPd để kích hoạt TLS:
để biết thông tin chính xác và toàn diện nhất.
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
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
[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
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.
Mã:
pure-ftpd-wrapper --help
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.log
Ví dụ:clf:/var/log/pureftpd.log
AnonymousOnly
.- Không cần giá trị.
AntiWarez
.- Không cần giá trị.
AutoRename
.- Không cần giá trị.
Bind 21
- Ví dụ:
192.168.0.1,21
BrokenClientsCompatibility
.- Không cần giá trị.
ChrootEveryone
.- Không cần giá trị.
CreateHomeDir
.- Không cần giá trị.
CustomerProof
.- Không cần giá trị.
Daemonize
.- Không cần giá trị.
DisplayDotFiles
.- Không cần giá trị.
DontResolve
.- Không cần giá trị.
ExtAuth /path/to/authenticator
- Ví dụ:
/usr/local/bin/myauth
ForcePassiveIP 192.168.0.1
- Ví dụ:
192.168.0.1
FSCharset utf-8
- Ví dụ:
utf-8
IPv4Only
hoặc IPv6Only
.- Không cần giá trị.
KeepAllFiles
.- Không cần giá trị.
LDAPConfigFile /etc/pure-ftpd/ldap.conf
- Ví dụ:
/etc/pure-ftpd/ldap.conf
LimitRecursion 10000 8
- Ví dụ:
10000 8
(10000 tệp, sâu 8 cấp)
MaxClientsNumber 50
- Ví dụ:
50
MaxClientsPerIP 8
- Ví dụ:
8
MaxDiskUsage 95
- Ví dụ:
95
(95 phần trăm)
MaxIdleTime 15
- Ví dụ:
15
(15 phút)
MaxLoad 4.0
- Ví dụ:
4.0
MinUID 1000
- Ví dụ:
1000
MySQLConfigFile /etc/pure-ftpd/mysql.conf
- Ví dụ:
/etc/pure-ftpd/mysql.conf
NoAnonymous
.- Không cần giá trị.
NoChmod
.- Không cần giá trị.
NoRename
.- Không cần giá trị.
PassivePortRange 30000 35000
- Ví dụ:
30000 35000
PerUserLimits 8
- Ví dụ:
8
(8 kết nối đồng thời cho mỗi người dùng)
PureDB /etc/pure-ftpd/pureftpd.pdb
- Ví dụ:
/etc/pure-ftpd/pureftpd.pdb
Quota 1000M
- Ví dụ:
1000M
(1000 Megabyte)
SyslogFacility ftp
- Ví dụ:
ftp
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3
- Ví dụ:
HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3
TrustedGID 1000
- Ví dụ:
1000
UMask 133:022
- Ví dụ:
133:022
(Tệp: 133, Thư mục: 022)
UnixAuthentication
.- Không cần giá trị.
UploadScript /path/to/script
- Ví dụ:
/usr/local/bin/uploadscript
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.