Cách cài đặt máy chủ FTP an toàn với vsftpd trên Debian 12

theanh

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

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

Trong hướng dẫn này, bạn sẽ tìm hiểu cách thiết lập và tạo máy chủ FTP an toàn với vsftpd trên máy chủ Debian 12. Trong hướng dẫn này, bạn cũng sẽ tìm hiểu cách bảo mật cài đặt máy chủ FTP của mình thông qua UFW (Tường lửa đơn giản) và cách kết nối với máy chủ FTP bằng ứng dụng khách FTP FileZilla.

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

Trước khi tiếp tục, hãy đảm bảo bạn có những điều sau:
  • Máy chủ Debian 12.
  • Người dùng không phải root có quyền quản trị viên sudo.
  • Gói openssl được cài đặt trên máy chủ của bạn.

Cài đặt vsftpd​

Vsftpd là một triển khai của giao thức FTP cho hệ điều hành UNIX và Linux. Gói vsftpd có sẵn trên hầu hết các bản phân phối Linux, bao gồm cả Debian. Bây giờ bạn sẽ cài đặt vsftpd qua APT và xác minh dịch vụ vsftpd để đảm bảo rằng dịch vụ đang chạy.

Trước khi cài đặt gói vsftpd, hãy thực hiện lệnh sau để cập nhật kho lưu trữ Debian của bạn.
Mã:
sudo apt update

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22702%22%20height=%22163%22%3E%3C/svg%3E


Bây giờ hãy cài đặt vsftpd gói bằng lệnh apt install bên dưới.
Mã:
sudo apt install vsftpd
Xác nhận cài đặt bằng cách nhập y và nhấn ENTER.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22216%22%3E%3C/svg%3E


Sau khi vsftpd được cài đặt, dịch vụ vsftpd sẽ tự động chạy và được bật. Xác minh dịch vụ vsftpd bằng lệnh sau.
Mã:
sudo systemctl is-enabled vsftpd
sudo systemctl status vsftpd
Đầu ra sau xác nhận rằng dịch vụ vsftpd đang chạy và được bật. Ngoài ra, dịch vụ vsftpd sẽ được chạy tự động khi khởi động hệ thống.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22282%22%3E%3C/svg%3E

Cấu hình vsftpd​

Trong bước tiếp theo, bạn sẽ cấu hình và tạo một máy chủ FTP an toàn với vsftpd. Bạn sẽ tạo chứng chỉ SSL/TLS và sửa đổi cấu hình vsftpd mặc định /etc/vsftpd.conf.

Trước tiên, hãy thực hiện lệnh openssl bên dưới để tạo chứng chỉ TLS mới sẽ được sử dụng cho quá trình cài đặt máy chủ vsftpd của bạn.
Mã:
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Nhập thông tin chi tiết của bạn khi được yêu cầu. Sau khi quá trình hoàn tất, chứng chỉ TLS của bạn sẽ có tại /etc/ssl/private/vsftpd.pem.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22705%22%20height=%22338%22%3E%3C/svg%3E


Bây giờ hãy thực hiện lệnh bên dưới để tạo một tệp mới /etc/vsftpd.userlist để lưu trữ FTP người dùng.
Mã:
touch /etc/vsftpd.userlist
Sau đó, chạy lệnh sau để sao lưu cấu hình vsftpd. Sau đó, mở cấu hình vsftpd /etc/vsftpd.conf bằng trình chỉnh sửa nano.
Mã:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig
sudo nano /etc/vsftpd.conf
Vô hiệu hóa quyền truy cập ẩn danh vào máy chủ vsftpd của bạn bằng cách thay đổi tùy chọn anonymous_enable thành NO.
Mã:
anonymous_enable=NO
Cho phép người dùng cục bộ trong tệp /etc/passwd và người dùng PAM đăng nhập vào máy chủ vsftpd bằng cách thay đổi tùy chọn local_enable thành YES.
Mã:
local_enable=YES
Cho phép người dùng FTP tải tệp lên máy chủ vsftpd bằng cách thay đổi tùy chọn write_enable thành YES.
Mã:
write_enable=YES
Bây giờ hãy bật chroot hoặc jail cho người dùng FTP bằng cách thêm các tùy chọn sau. Thao tác này sẽ khóa người dùng FTP trong thư mục /home/$USER/chroot. Ví dụ, người dùng FTP bob sẽ bị khóa trong thư mục /home/bob/chroot.
Mã:
chroot_local_user=YES
user_sub_token=$USER
local_root=/home/$USER/chroot
Tiếp theo, hãy thêm cấu hình sau để thiết lập người dùng ảo vsftpd. Bất kỳ người dùng nào trong tệp /etc/vsftpd.userlist đều được phép đăng nhập vào máy chủ vsftpd.
Mã:
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
Thêm các dòng sau để bảo mật máy chủ vsftpd của bạn bằng chứng chỉ SSL/TLS. Thao tác này sẽ buộc người dùng đăng nhập và kết nối truyền dữ liệu sử dụng kết nối an toàn.
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
Bây giờ hãy thêm cấu hình bên dưới để thiết lập kết nối chế độ thụ động bằng các cổng giữa 2000025000.
Mã:
pasv_min_port=20000
pasv_max_port=25000
Lưu và thoát tệp khi bạn hoàn tất.

Bây giờ chạy lệnh systemctl sau để khởi động lại dịch vụ vsftpd và áp dụng các thay đổi bạn đã thực hiện.
Mã:
sudo systemctl restart vsftpd
Với lệnh này, máy chủ vsftpd của bạn hiện đang chạy với cấu hình mới.

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

Trong bước tiếp theo, bạn sẽ cài đặt UFW (Tường lửa đơn giản) trên máy chủ Debian của mình và bảo mật cài đặt máy chủ FTP của bạn bằng tường lửa này. Bạn sẽ cài đặt UFW qua APT, mở cổng máy chủ FTP 20:21/tcp và cổng kết nối dữ liệu chế độ thụ động 20000:25000/tcp.

Cài đặt UFW bằng lệnh apt sau. Nhập y để tiếp tục cài đặt.
Mã:
sudo apt install ufw

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22637%22%20height=%22310%22%3E%3C/svg%3E


Sau khi UFW được cài đặt, hãy chạy các lệnh ufw bên dưới để mở cổng cho dịch vụ OpenSSH, cổng máy chủ vsftpd 20:21 và kết nối FTP chế độ thụ động giữa các cổng 20000 đến 25000.
Mã:
sudo ufw allow OpenSSH
sudo ufw allow 20:21/tcp
sudo ufw allow 20000:25000/tcp
Tiếp theo, thực hiện lệnh ufw bên dưới để khởi động và bật UFW.
Mã:
sudo ufw enable
Nhập để xác nhận và UFW sẽ chạy và được bật trên hệ thống Debian của bạn.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22716%22%20height=%22283%22%3E%3C/svg%3E


Xác minh trạng thái chi tiết của UFW bằng lệnh bên dưới.
Mã:
sudo ufw status
Đầu ra active xác nhận rằng UFW đang chạy và được bật. Ngoài ra, dịch vụ OpenSSH được thêm vào và một số cổng cho máy chủ vsftpd 20:21/tcp20000:25000/tcp được thêm vào.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22488%22%20height=%22254%22%3E%3C/svg%3E

Thiết lập Người dùng ảo FTP​

Lúc này, bạn đã hoàn tất cấu hình máy chủ vsftpd, bây giờ bạn sẽ tạo một người dùng FTP mới sẽ được sử dụng để đăng nhập vào máy chủ FTP và tải tệp lên nó.

Thực hiện lệnh sau để tạo một tệp mới /bin/ftponly. Sau đó, thực thi tệp đó thông qua lệnh chmod bên dưới. Tệp /bin/ftponly sẽ được sử dụng làm shell mặc định cho người dùng FTP.
Mã:
echo -e '#!/bin/sh\necho "Shell for FTP users only."' | sudo tee -a /bin/ftponly
sudo chmod a+x /bin/ftponly
Thêm tệp /bin/ftponly vào /etc/shells để đảm bảo đó là shell hợp lệ.
Mã:
sudo echo "/bin/ftponly" >> /etc/shells

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22145%22%3E%3C/svg%3E


Bây giờ hãy tạo một người dùng FTP mới bob và thiết lập mật khẩu bằng cách thực hiện lệnh bên dưới. Nhập mật khẩu của bạn và lặp lại.
Mã:
sudo useradd -m -s /bin/ftponly bob
sudo passwd bob
Sau đó, chạy lệnh sau để tạo thư mục chroot /home/bob/chroot mới cho người dùng bob. Ngoài ra, bạn sẽ đảm bảo rằng thư mục chroot /home/bob/chroot có quyền sở hữu hợp lệ.
Mã:
sudo -u bob mkdir -p /home/bob/chroot
sudo chown -R bob: /home/bob/chroot
Tiếp theo, chạy lệnh bên dưới để tạo một thư mục mới dataupload sẽ được sử dụng để lưu trữ dữ liệu người dùng FTP. Hãy đảm bảo cấu hình quyền sở hữu phù hợp cho các thư mục đó.
Mã:
sudo -u bob mkdir -p /home/bob/chroot/{data,upload}
sudo chown -R bob: /home/bob/chroot/{data,upload}
Bây giờ hãy chạy lệnh bên dưới để thay đổi quyền của thư mục /home/bob/chroot thành 550 và cả thư mục dataupload thành 750.
Mã:
sudo chmod 550 /home/bob/chroot
sudo chmod 750 /home/bob/chroot/{data,upload}
Bây giờ bạn đã tạo người dùng mới, hãy thực hiện lệnh bên dưới để thêm người dùng bob vào tệp /etc/vsftpd.userlist.
Mã:
echo "bob" >> /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. Sau khi thực hiện lệnh, người dùng FTP bob của bạn đã sẵn sàng.
Mã:
sudo systemctl restart vsftpd

Tải tệp lên máy chủ FTP​

Để xác minh cài đặt máy chủ vsftpd của bạn, bạn sẽ kết nối với máy chủ FTP bằng người dùng mới mà bạn đã tạo thông qua phần mềm máy khách FTP. Sau đó, bạn cũng sẽ tải tệp mới lên để đảm bảo cài đặt của bạn thành công.

Tải xuống và cài đặt máy khách FTP cho máy cục bộ của bạn. Bạn có thể sử dụng FileZilla, có thể cài đặt trên Windows, Linux và MacOS. Sau khi FileZilla được cài đặt, hãy mở nó để kết nối với máy chủ FTP an toàn của bạn.

Nhập địa chỉ IP máy chủ FTP của bạn và tên người dùng cùng mật khẩu của người dùng FTP. Sau đó, nhấp vào Quickconnect để xác nhận.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22108%22%3E%3C/svg%3E


Chọn tùy chọn Luôn tin tưởng chứng chỉ này trong các phiên làm việc trong tương lai và nhấp vào OK để xác nhận.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22654%22%20height=%22727%22%3E%3C/svg%3E


Sau khi kết nối với máy chủ FTP, bạn sẽ thấy hai thư mục dữ liệu và tải lên có sẵn trên máy chủ FTP của mình. Bạn có thể tải tệp lên cả thư mục data và upload, nhưng bạn không thể tải tệp ra ngoài các thư mục được bảo vệ qua chroot.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22518%22%3E%3C/svg%3E


Bạn có thể kéo-thả tệp để tải lên máy chủ FTP.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22518%22%3E%3C/svg%3E

Kết luận​

Để kết thúc, bạn đã tạo thành công một máy chủ FTP an toàn với vsftpd trên máy chủ Debian 12. Bạn cũng đã bảo mật cài đặt máy chủ FTP của mình thông qua UFW (Uncomplicated Firewall) và học cách tạo người dùng FTP. Bây giờ bạn có thể sử dụng máy chủ FTP làm phương thức truyền dữ liệu chính giữa máy cục bộ của mình với máy chủ, Bạn cũng có thể tìm một phần mềm máy khách FTP khác theo sở thích của mình.
 
Back
Bên trên