Cách cài đặt vsftpd FTP Server với SSL/TLS trên CentOS 8

theanh

Administrator
Nhân viên
FTP là một giao thức được sử dụng rộng rãi để truyền tệp giữa máy chủ và máy khách. Hiện nay có rất nhiều máy chủ FTP nguồn mở bao gồm FTPD, VSFTPD, PROFTPD và pureftpd. Trong số đó, VSFTPD là giao thức an toàn, nhanh và được sử dụng rộng rãi nhất trên toàn thế giới. Nó còn được gọi là "Very Secure File Transfer Protocol Daemon". Nó cũng hỗ trợ SSL, IPv6, FTPS rõ ràng và ngầm định.

Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách cài đặt VSFTPD trên máy chủ CentOS 8 và bảo mật bằng SSL/TLS.

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

  • Máy chủ chạy CentOS 8.
  • Mật khẩu gốc được cấu hình trên máy chủ của bạn.

Cài đặt VSFTPD​

Theo mặc định, VSFTPD có sẵn trong kho lưu trữ mặc định của CentOS 8. Bạn có thể cài đặt bằng cách chạy lệnh sau:
Mã:
dnf install vsftpd -y
Sau khi cài đặt hoàn tất, hãy khởi động dịch vụ VSFTPD và cho phép dịch vụ này khởi động sau khi hệ thống khởi động lại bằng lệnh sau:
Mã:
systemctl start vsftpd
 systemctl enable vsftpd
Lúc này, máy chủ VSFTPD của bạn đã được cài đặt và đang chạy. Bây giờ bạn có thể tiến hành bước tiếp theo.

Tạo người dùng cho VSFTPD​

Tiếp theo, bạn sẽ cần tạo người dùng mới cho VSFTPD. Vì vậy, bạn có thể truy cập máy chủ FTP của mình bằng người dùng này.

Chạy lệnh sau để tạo người dùng mới có tên là vyom như được hiển thị bên dưới:
Mã:
adduser vyom
Tiếp theo, đặt mật khẩu cho người dùng vyom bằng lệnh sau:
Mã:
passwd vyom
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Cấu hình VSFTPD​

Tiếp theo, mở tệp cấu hình mặc định của VSFTPD nằm tại thư mục /etc/vsftpd như được hiển thị bên dưới:
Mã:
nano /etc/vsftpd/vsftpd.conf
Thay đổi các mục sau lines:
Mã:
anonymous_enable=NOlocal_enable=YESwrite_enable=YESlocal_umask=022dirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YESxferlog_std_format=YESlisten=NOlisten_ipv6=YESpam_service_name=vsftpduserlist_enable=NO
Lưu và đóng tệp khi bạn hoàn tất. Sau đó, khởi động lại dịch vụ VSFTPD và xác minh trạng thái của dịch vụ bằng lệnh sau:
Mã:
systemctl restart vsftpd
 systemctl status vsftpd
Bạn sẽ thấy đầu ra sau:
Mã:
? vsftpd.service - Vsftpd ftp daemon Đã tải: đã tải (/usr/lib/systemd/system/vsftpd.service; đã tắt; cài đặt trước của nhà cung cấp: đã tắt) Đang hoạt động: đang hoạt động (đang chạy) kể từ Thứ sáu 2020-02-21 00:43:57 EST; 6 giây trước Tiến trình: 2698 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (mã=thoát, trạng thái=0/THÀNH CÔNG) PID chính: 2699 (vsftpd) Nhiệm vụ: 1 (giới hạn: 6102) Bộ nhớ: 1020.0K CGroup: /system.slice/vsftpd.service ??2699 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf21/02 00:43:57 centos8 systemd[1]: Đã dừng daemon ftp Vsftpd.21/02 00:43:57 centos8 systemd[1]: Đang khởi động Vsftpd ftp daemon...21/02 00:43:57 centos8 systemd[1]: Đã khởi động Vsftpd ftp daemon.
Lúc này, máy chủ VSFTPD của bạn đã được cấu hình. Bây giờ bạn có thể tiến hành tất cả VSFTPD thông qua SELinux và tường lửa.

Cấu hình Tường lửa và SELInux​

Theo mặc định, SELinux được bật trong CentOS 8. Vì vậy, bạn sẽ cần cấu hình SELinux cho VSFTPD.

Bạn có thể cấu hình SELinux để cho phép truy cập FTP bằng lệnh sau:
Mã:
setsebool -P allow_ftpd_full_access=1
Tiếp theo, bạn sẽ cần cho phép dịch vụ FTP thông qua firewalld. Bạn có thể cho phép bằng lệnh sau:
Mã:
firewall-cmd --zone=public --permanent --add-service=ftp
Tiếp theo, tải lại dịch vụ firewalld để áp dụng các thay đổi cấu hình tường lửa:
Mã:
firewall-cmd --reload
Tại thời điểm này, tường lửa và SELinux của bạn được cấu hình để cho phép kết nối FTP đến từ hệ thống từ xa. Bây giờ bạn có thể tiến hành kiểm tra kết nối FTP.

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

Máy chủ VSFTPD của bạn hiện đã được cài đặt và cấu hình. Bây giờ, đã đến lúc kết nối máy chủ FTP từ hệ thống máy khách.

Để thực hiện, hãy vào hệ thống Máy khách và chạy lệnh sau để kết nối máy chủ FTP của bạn:
Mã:
ftp 172.20.10.3
Bạn sẽ được yêu cầu cung cấp người dùng FTP và mật khẩu như hiển thị bên dưới:
Mã:
Đã kết nối tới 172.20.10.3.220 (vsFTPd 3.0.3)Tên (172.20.10.3:root): vyom331 Vui lòng chỉ định mật khẩu.Mật khẩu:230 Đăng nhập thành công.
Sau khi kết nối được thiết lập thành công, bạn sẽ thấy đầu ra sau:
Mã:
Loại hệ thống từ xa là UNIX.Sử dụng chế độ nhị phân để truyền tệp.ftp>
Bây giờ, hãy nhập exit và nhấn nút Enter để thoát khỏi các phiên FTP.

Cấu hình VSFTPD với Hỗ trợ TLS​

Vì lý do bảo mật, bạn nên mã hóa các truyền FTP bằng SSL/TLS. Để thực hiện, bạn sẽ cần tạo chứng chỉ SSL và cấu hình máy chủ VSFTPD để sử dụng chứng chỉ này.

Trước tiên, bạn sẽ cần cài đặt gói OpenSSL trong hệ thống của mình. Bạn có thể cài đặt bằng lệnh sau:
Mã:
dnf install openssl -y
Sau khi cài đặt, hãy tạo một thư mục mới để lưu trữ chứng chỉ SSL:
Mã:
mkdir /etc/ssl/private
Tiếp theo, tạo chứng chỉ tự ký bằng lệnh sau:
Mã:
openssl req -newkey rsa:2048 -nodes -keyout /etc/ssl/private/vsftpd.key -x509 -days 365 -out /etc/ssl/private/vsftpd.crt
Cung cấp tất cả thông tin bắt buộc như hiển thị bên dưới:
Mã:
Tạo khóa riêng RSA...+++++...........+++++ghi khóa riêng mới vào '/etc/ssl/private/vsftpd.key'-----Bạn sắp được yêu cầu nhập thông tin sẽ được kết hợpvào yêu cầu cấp chứng chỉ của bạn.Những gì bạn sắp nhập được gọi là Tên phân biệt hoặc DN.Có khá nhiều trường nhưng bạn có thể để trống một số trườngĐối với một số trường sẽ có giá trị mặc định,Nếu bạn nhập '.', trường đó sẽ được để trống.-----Tên quốc gia (mã 2 chữ cái) [XX]:INTên tiểu bang hoặc tỉnh (tên đầy đủ) []:GUJTên địa phương (ví dụ: thành phố) [Thành phố mặc định]:JUNTên tổ chức (ví dụ: công ty) [Công ty TNHH mặc định]:ITTên đơn vị tổ chức (ví dụ: bộ phận) []:ITTên chung (ví dụ: tên của bạn hoặc tên máy chủ của bạn) []:ftpserverĐịa chỉ email []:[emailprotected]
Sau khi tạo chứng chỉ SSL, bạn sẽ cần cấu hình VSFTPD để sử dụng chứng chỉ này.

Mở tệp cấu hình mặc định của VSFTPD như hiển thị bên dưới:
Mã:
nano /etc/vsftpd/vsftpd.conf
Thêm các dòng sau vào cuối tệp:
Mã:
#Đường dẫn của SSL chứng chỉrsa_cert_file=/etc/ssl/private/vsftpd.crtrsa_private_key_file=/etc/ssl/private/vsftpd.key#Bật SSLssl_enable=YESallow_anon_ssl=NOforce_local_data_ssl=YESforce_local_logins_ssl=YES#TSL an toàn hơn SSL nên hãy bật ssl_tlsv1_2.ssl_tlsv1=YESssl_sslv2=NOssl_sslv3=NOrequire_ssl_reuse=NOssl_ciphers=HIGH#Bật gỡ lỗi SSL để lưu trữ tất cả nhật ký VSFTPD.debug_ssl=YES
Lưu và đóng tệp khi bạn hoàn tất. Sau đó, khởi động lại dịch vụ VSFTPD để áp dụng các thay đổi:
Mã:
systemctl restart vsftpd
Lúc này, máy chủ VSFTPD của bạn được cấu hình để sử dụng chứng chỉ SSL. Bây giờ bạn có thể tiến hành bước tiếp theo.

Xác minh kết nối TLS VSFTPD​

Máy chủ VSFTPD của bạn hiện được bảo mật bằng hỗ trợ SSL/TLS. Tiếp theo, hãy thử kết nối máy chủ FTP của bạn từ dòng lệnh như hiển thị bên dưới:
Mã:
ftp 172.20.10.3
Bạn sẽ thấy lỗi trong đầu ra sau:
Mã:
Đã kết nối tới 172.20.10.3.220 (vsFTPd 3.0.2)Tên (172.20.10.3:root): vyom530 Phiên không ẩn danh phải sử dụng mã hóa.Đăng nhập không thành công.421 Dịch vụ không khả dụng, máy chủ từ xa đã đóng kết nốiftp>
Bạn không thể kết nối với máy chủ VSFTP của mình từ máy khách dòng lệnh. Bởi vì nó không hỗ trợ hỗ trợ SSL/TLS.

Vì vậy, bạn sẽ cần tải xuống và kiểm tra kết nối VSFTPD bằng máy khách FTP hỗ trợ kết nối TLS.

Để thực hiện, hãy vào hệ thống Máy khách và cài đặt gói máy khách FileZilla.

Sau khi cài đặt FileZilla, hãy mở phần mềm FileZilla như hình dưới đây:



Tiếp theo, mở Trình quản lý trang web như hình dưới đây:



Nhấp vào nút Trang web mới để thêm kết nối FTP mới như hình dưới đây:



Cung cấp IP máy chủ FTP của bạn, Chọn giao thức FTP, Chọn "Sử dụng FTP rõ ràng qua TLS", Chọn yêu cầu mật khẩu, cung cấp tên người dùng của máy chủ FTP của bạn và nhấp vào nút Kết nối. Bạn sẽ được yêu cầu cung cấp mật khẩu của người dùng FTP như hiển thị bên dưới:



Cung cấp mật khẩu FTP của bạn và nhấp vào nút OK. Bạn sẽ được yêu cầu xác minh chứng chỉ đang được sử dụng cho kết nối SSL/TLS như hiển thị bên dưới:



Nhấp vào nút OK để xác minh chứng chỉ. Sau khi kết nối được thiết lập thành công, bạn sẽ thấy màn hình sau:


Kết luận​

Trong hướng dẫn trên, chúng tôi đã cài đặt máy chủ VSFTPD trên CentOS 8. Chúng tôi cũng đã cấu hình máy chủ VSFTPD để sử dụng chứng chỉ SSL/TLS. Máy chủ FTP của bạn hiện đã được bảo mật. Hãy thoải mái hỏi tôi nếu bạn có bất kỳ câu hỏi nào.
 
Back
Bên trên