Cách thiết lập máy chủ FTP với vSFTPd và TLS trên Ubuntu 22.04

theanh

Administrator
Nhân viên
vSFTPd hay Very Secure FTP Daemon là phần mềm FTP Server miễn phí và mã nguồn mở. Đây là FTP Daemon dành cho các hệ điều hành giống Unix và đi kèm với Giấy phép Công cộng GNU. vSFTPd là một trong những FTP daemon được sử dụng nhiều nhất, nhanh và nhẹ trong tài nguyên hệ thống, an toàn thông qua tích hợp PAM và SSL và ổn định. vSFTPd đã giành được sự tin tưởng vì độ hoàn thiện của nó, được sử dụng bởi các công ty lớn như RedHat, SUSE, Debian, Gnome, KDE, v.v.

vSFTPd có thể chạy với IPv6 và cũng hỗ trợ cấu hình IP ảo và người dùng ảo. Nó có thể chạy như một daemon độc lập hoặc sử dụng hoạt động inetd. Về quản lý người dùng, vSFTPd cung cấp một tính năng cho phép người dùng có cấu hình riêng của họ, như giới hạn và khả năng cấu hình lại theo IP nguồn và cũng như điều chỉnh băng thông. Nó cũng hỗ trợ mô-đun xác thực có thể cắm được (PAM) cho người dùng ảo và cung cấp tích hợp bảo mật với SSL/TLS.

Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách thiết lập máy chủ FTP với VSFTPD (Very Secure FTP Daemon) trên máy chủ Ubuntu 22.04. Bài đăng này bao gồm cách bảo mật vSFTPd bằng chứng chỉ TLS/SSL.

Điều kiện tiên quyết​

Trước khi bắt đầu với hướng dẫn này, bạn cần có các yêu cầu sau:
  • Máy chủ Ubuntu 22.04.
  • Người dùng không phải root có quyền root/quản trị viên.
  • Máy khách FTP được cài đặt trên máy cục bộ.

Cài đặt gói vSFTPd​

Kho lưu trữ mặc định của Ubuntu cung cấp nhiều daemon FTP, bao gồm gói vSFTPd. Điều này giúp quản trị viên dễ dàng cài đặt và thiết lập máy chủ FTP mà không cần bất kỳ kho lưu trữ bổ sung hoặc kho lưu trữ của bên thứ ba nào.

Bước đầu tiên ở đây là cài đặt vSFTPd vào máy chủ Ubuntu. Nhưng trước khi cài đặt gói, bạn sẽ được yêu cầu cập nhật và làm mới chỉ mục gói cho hệ thống của mình. Nhập lệnh sau để cập nhật và làm mới kho lưu trữ Ubuntu.
Mã:
sudo apt update
Bây giờ hãy cài đặt gói vSFTPd bằng lệnh sau. Nhập Y để xác nhận cài đặt và nhấn ENTER để tiếp tục. Quá trình cài đặt vSFTPd sẽ bắt đầu.
Mã:
sudo apt install vsftpd


Sau khi quá trình cài đặt vSFTPd hoàn tất, hãy chạy lệnh bên dưới để kiểm tra và xác minh dịch vụ vSFTPd. Bạn sẽ thấy dịch vụ vSFTPd được "bật", nghĩa là sẽ tự động chạy khi khởi động hệ thống. Ngoài ra, trạng thái hiện tại của dịch vụ vSFTPd đang chạy.
Mã:
sudo systemctl is-enabled vsftpd
sudo systemctl status vsftpd

Cấu hình Máy chủ VSFTPD​

Trong phần này, bạn sẽ tạo chứng chỉ SSL/TLS để bật vSFTPd qua TLS. Sau đó, bạn sẽ bắt đầu chỉnh sửa tệp cấu hình vSFTPd "/etc/vsftpd.conf" để tạo máy chủ FTP an toàn.

Chạy lệnh openssl bên dưới để tạo chứng chỉ SSL/TLS tự ký cho máy chủ vSFTPd. Lệnh này sẽ nhắc bạn nhập một số thông tin về chứng chỉ của mình, hãy đảm bảo nhập thông tin chi tiết. Chứng chỉ sẽ được lưu trữ tại "/etc/ssl/private/vsftpd.pem"
Mã:
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem


Tiếp theo, sao lưu cấu hình vsFTPd mặc định trước khi chỉnh sửa tệp bằng lệnh sau.
Mã:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig
Sau khi tệp gốc được sao chép, hãy mở tệp cấu hình vSFTPd "/etc/vsftpd.conf" bằng lệnh bên dưới.
Mã:
sudo nano /etc/vsftpd.conf
Đảm bảo tùy chọn "anonymous_enable" được đặt thành "NO" để vô hiệu hóa quyền truy cập ẩn danh vào máy chủ FTP.
Mã:
anonymous_enable=NO
Bỏ ghi chú tùy chọn "local_enable" để cho phép người dùng truy cập và đăng nhập vào máy chủ FTP. Tùy chọn này phải được bật khi bạn cần thiết lập người dùng ảo, điều này sẽ cho phép tài khoản người dùng thông thường trong tệp /etc/passwd có thể đăng nhập vào máy chủ FTP.
Mã:
local_enable=YES
Bỏ ghi chú tùy chọn "write_enable" để cho phép người dùng có thể ghi và tải tệp lên máy chủ FTP.
Mã:
write_enable=YES
Bỏ ghi chú "chroot_local_users" để bật jail cho từng người dùng FTP. Điều này sẽ tăng thêm tính bảo mật cho máy chủ FTP của bạn vì mọi người dùng FTP sẽ tự động được đưa vào thư mục gốc của họ sau khi đăng nhập. Và một người dùng sẽ không thể truy cập, xem hoặc liệt kê các tệp thuộc về người dùng khác.
Mã:
chroot_local_users=YES
Thêm cấu hình sau để bật người dùng ảo trên máy chủ vSFTPd. Biến "$USER" sẽ được lấy từ biến môi trường hệ thống, do đó mỗi người dùng FTP sẽ có thư mục home riêng và tự động được đặt tại thư mục "/home/username/chroot" sau khi đăng nhập.
Mã:
user_sub_token=$USER
local_root=/home/$USER/chroot
Thêm cấu hình sau để thiết lập cổng phạm vi cho kết nối dữ liệu PASV của máy chủ vSFTPd.
Mã:
pasv_min_port=40000
pasv_max_port=50000
Bây giờ hãy thêm cấu hình sau để bật người dùng ảo trên máy chủ vSFTPd. Chỉ những người dùng trong "/etc/vsftpd.userlist" mới được phép đăng nhập vào máy chủ FTP.
Mã:
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
Thay đổi cấu hình SSL/TLS mặc định của vSFTPd bằng cách sử dụng cấu hình bên dưới. Điều này sẽ buộc người dùng FTP sử dụng kết nối TLS an toàn khi đăng nhập và truyền dữ liệu, cũng chỉ sử dụng TLSv1.
Mã:
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
Lưu và đóng tệp khi bạn hoàn tất.

Tiếp theo, tạo tệp mới cho danh sách người dùng FTP bằng lệnh bên dưới. Tệp này cần thiết để xác định người dùng FTP.
Mã:
touch /etc/vsftpd.userlist
Cuối cùng, hãy chạy lệnh sau để khởi động lại dịch vụ vSFTPd và áp dụng các thay đổi mới. Sau đó, hãy kiểm tra và xác minh dịch vụ vSFTPd. Và bạn sẽ thấy dịch vụ vSFTPd đang chạy với cấu hình mới và SSL/TLS được bật trên đó.
Mã:
sudo systemctl restart vsftpd
sudo systemctl status vsftpd

Thiết lập Tường lửa UFW​

Sau khi máy chủ vSFTPd được cấu hình, đã đến lúc thêm các quy tắc tường lửa UFW cho máy chủ FTP của bạn. Bạn phải thêm các cổng FTP TCP "20" và "21" vào tường lửa, đồng thời phạm vi các cổng kết nối dữ liệu PASV mà bạn đã cấu hình là "40000:50000".

Trước khi thêm bất kỳ quy tắc tường lửa nào, hãy đảm bảo tường lửa UFW được bật. Bạn có thể kiểm tra trạng thái của tường lửa UFW bằng lệnh sau. Nếu bạn nhận được danh sách các quy tắc đã bật, thì tường lửa của bạn đang hoạt động.
Mã:
sudo ufw status
Nếu bạn nhận được thông báo đầu ra như "inactive", thì bạn cần bật tường lửa UFW bằng lệnh dưới đây. Bạn sẽ cần thêm quy tắc ứng dụng "OpenSSH", sau đó bật tường lửa UFW.
Mã:
sudo ufw allow "OpenSSH"
sudo ufw enable
Bây giờ hãy thêm các cổng dịch vụ vSFTPd "20:21" và "40000:50000" bằng lệnh ufw bên dưới.
Mã:
sudo ufw allow 20:21/tcp
sudo ufw allow 40000:50000/tcp
Chạy lệnh sau để tải lại và xác minh trạng thái tường lửa UFW. Và bạn sẽ nhận được cổng "20:21" và "40000:50000" được thêm vào tường lửa UFW.
Mã:
sudo ufw reload
sudo ufw status

Thêm người dùng FTP​

Tại thời điểm này, bạn đã hoàn tất cấu hình Máy chủ FTP an toàn bằng vSFTPd với SSL/TLS được bật và bảo mật hệ thống của bạn bằng tường lửa UFW. Đã đến lúc thiết lập và tạo người dùng FTP, đây là tài khoản người dùng Linux.

Đối với người dùng FTP, nếu bạn thiết lập người dùng FTP bằng shell "/bin/false" hoặc "/usr/sbin/nologin", người dùng FTP của bạn sẽ không thể đăng nhập vào máy chủ FTP. Bởi vì dịch vụ vSFTPd được sử dụng là dịch vụ PAM theo mặc định và người dùng FTP yêu cầu một shell hợp lệ.

Bây giờ hãy chạy lệnh sau để tạo một shell giả cho người dùng FTP "/bin/ftpdummy".
Mã:
echo -e '#!/bin/sh\necho "Shell chỉ dành cho người dùng FTP."' | sudo tee -a /bin/ftpdummy
sudo chmod a+x /bin/ftpdummy
Thêm shell mới "/bin/ftpdummy" vào tệp cấu hình "/etc/shells". Và bây giờ bạn đã sẵn sàng để tạo người dùng FTP mới.
Mã:
sudo echo "/bin/ftpdummy" >> /etc/shells


Trong bản demo này, chúng ta sẽ sử dụng người dùng có tên "alice" làm người dùng FTP. Bây giờ hãy chạy lệnh sau để tạo một người dùng mới có tên là "alice" và với shell mặc định là "/bin/ftpdummy". Sau đó, bạn có thể thiết lập mật khẩu cho người dùng mới, hãy đảm bảo sử dụng mật khẩu mạnh.
Mã:
sudo useradd -m -s /bin/ftpdummy alice
sudo passwd alice


Tiếp theo, tạo một thư mục "chroot" mới trong thư mục home của người dùng bằng lệnh bên dưới. Khi người dùng "alice" đăng nhập vào máy chủ FTP, thư mục "chroot" sẽ là thư mục home mặc định.
Mã:
mkdir -p /home/alice/chroot
Trong thư mục "chroot", hãy tạo một thư mục khác có tên là "data" và "upload". Cả hai thư mục này sẽ được người dùng FTP sử dụng để tải tệp của họ lên.
Mã:
mkdir -p /home/alice/chroot/{data,upload}
Bây giờ hãy chạy lệnh bên dưới để thay đổi quyền và quyền sở hữu chính xác của thư mục dữ liệu FTP. Thư mục "chroot" phải có quyền "550", nhưng các thư mục "data" và "upload" phải có quyền "750" để người dùng có thể ghi/tải tệp vào đó.
Mã:
sudo chown -R alice: /home/alice/chroot
sudo chmod 550 /home/alice/chroot
Mã:
sudo chown -R alice: /home/alice/chroot/{data,upload}
sudo chmod 750 /home/alice/chroot/{data,upload}
Tiếp theo, thêm người dùng "alice" vào tệp danh sách người dùng vSFTPd "/etc/vsftpd.userlist" bằng lệnh sau. Sau đó, bạn có thể khởi động lại dịch vụ vSFTPd để áp dụng các thay đổi mới. Người dùng FTP mới của bạn đã sẵn sàng.
Mã:
echo "alice" >> /etc/vsftpd.userlist
sudo systemctl restart vsftpd

Kết nối với Máy chủ FTP​

Bạn đã hoàn tất quá trình cài đặt và cấu hình Máy chủ FTP bằng vSFTPd trên máy chủ Ubuntu. Bây giờ, hãy kiểm tra và xác minh bằng cách đăng nhập vào Máy chủ FTP.

Hãy đảm bảo rằng bạn đã cài đặt ứng dụng Máy khách FTP trên máy cục bộ của mình. Trong bản demo này, chúng ta sẽ sử dụng "FileZilla", một máy khách FTP miễn phí và mã nguồn mở có thể cài đặt trên Linux, Windows và macOS.

Mở phần mềm Máy khách FTP của bạn và nhập thông tin chi tiết Địa chỉ máy chủ/IP, tên người dùng và mật khẩu của máy chủ FTP của bạn. Sau đó, nhấp vào nút "Kết nối nhanh".

Bây giờ, bạn sẽ được nhắc chấp nhận chứng chỉ Tự ký của Máy chủ FTP. Chọn tùy chọn "Trust ..." và nhấp vào "OK".



Sau khi kết nối, bạn sẽ được đăng nhập vào thư mục home của chroot jail và bạn sẽ thấy hai thư mục "data" và "upload". Bạn sẽ không thể tải tệp lên thư mục chroot jail, nhưng bạn có thể tải tệp lên thư mục "data" và "upload".


Kết luận​

Xin chúc mừng! Từ bài đăng này, bạn đã tạo thành công Máy chủ FTP với vSFTPD trên máy chủ Ubuntu 22.04. Ngoài ra, máy chủ FTP của bạn được bảo mật thông qua các kết nối TLS/SSL và được bảo mật bằng tường lửa UFW. Bây giờ bạn có thể thêm nhiều người dùng FTP hơn để truy cập máy khách của mình.
 
Back
Bên trên