FTP ( File Transfer Protocol ) là một giao thức client-server giúp cho người dùng có thể truyền tải các tập tin từ xa thông qua 2 port là 20 và 21.
Có nhiều FTP server mã nguồn mở được sử dụng trong linux nhưng phổ biến nhất là PureFTPD, ProFPTD và VSFPTD.
Trong bài này mình sẽ hướng dẫn các bạn cài đặt và cấu hình VSFPTD ( Very Secure FTP Daemon ) trên CentOS 8.
Cài đặt VSFTPD trên CentOS
Bởi vì gói VSFPTD có sẵn trong kho lưu trữ CentOS. Nên để cài đặt nó ta sử dụng lệnh sau . Lưu ý sử dụng với root hoặc user có quyền sudo :
# sudo dnf install vsftpd -y
Khi gói VSFTPD đã được cài đặt xong, minh sẽ enable nó lên bằng lệnh :
# sudo systemctl enable vsftpd --now
Cấu hình VSFTPD
file cài đặt của VSFTPD server sẽ được lưu trong /etc/vsftpd/vsftpd.conf .
Trong các phần tiếp theo mình sẽ tiến hành cấu hình các phần quan trọng trong VSFTPD để server được an toàn hơn.
Bắt đầu thì mình mở file config của VSFTPD :
# sudo vi /etc/vsftpd/vsftpd.conf
1. Truy cập FTP
ở đây thì mình chỉ cho phép người dùng local truy cập vào FTP server, nên mình sẽ tìm tới dòng anonymous_enable và local_enable mình chỉnh như hình dưới :
2.Cho phép Uploads
Mình bỏ dòng ghi chú phía trên 1 dòng của dòng write_enable để cho phép thay đổi file trong hệ thống . như là tải file lên hoặc xóa file :
3. Chroot Jail
Ngăn người sử dụng FTP truy cập file từ bên ngoài thưu mục chính của họ bằng cách bỏ chặn dấu thăng đầu dòng của dòng chroot_local_user=YES.
4. Kết nối tới FTP Passive
VSFTPD có thể sử dụng bất kì các port nào để kết nối FTP Passive. Mình sẽ chỉ định vi hoạt động và sau đó sẽ mở tường lửa trong phạm vi đó.
Mình sẽ thêm cấu hình như sau :
# vi /etc/vsftpd/vsftpd.conf # pasv_min_port=3000 # pasv_max_port=3100
5. Giới hạn đăng nhập người dùng
để chỉ cho phép một số người nhất định truy cập vào FTP server, Mình sẽ thêm những dòng này vào sau dòng userlist_enable=YES :
# userlist_file=/etc/vsftpd/user_list # userlist_deny=NO
6. Bảo mật với SSL / TSL
Trong bài này mình sẽ hướng dẫn tạo chứng chỉ SSL với công cụ openssl.
Trong lệnh dưới sẽ tạo ra private key 2048 bit và có giá trị trong vòng 10 năm. Và cả private key và chứng chỉ sẽ nằm chung một file :
# sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem
Sau khi chứng chỉ SSL được tạo thì mở file /etc/vsftpd/vsftpd.conf và sửa như sau :
#rsa_cert_file=/etc/vsftpd/vsftpd.pem #rsa_private_key_file=/etc/vsftpd/vsftpd.pem #ssl_enable=YES
Khởi động lại dịch vụ VSFTPD
và tất cả các cấu hình không có các dòng có dấu # sẽ như sau :
anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES chroot_local_user=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES userlist_file=/etc/vsftpd/user_list userlist_deny=NO tcp_wrappers=YES user_sub_token=$USER local_root=/home/$USER/ftp pasv_min_port=30000 pasv_max_port=31000 rsa_cert_file=/etc/vsftpd/vsftpd.pem rsa_private_key_file=/etc/vsftpd/vsftpd.pem ssl_enable=YES
sau dó lưu lại và sử dụng lệnh :
# sudo systemctl restart vsftpd
Mở firewall
để mở các port 21 ( port lệnh FTP ) và port 20 ( port dữ liệu FTP ) và port từ 3000 tới 3100 ( phạm vi thụ động mà mình đặt lúc nãy ) hãy sử dụng lệnh sau :
# sudo firewall-cmd -- premanent -- add-port20-21/tcp
# sudo firewall-cmd -- premanent -- add-port3000-3100/tcp
# firewall-cmd --reload
Tạo các user của FTP
1. Tạo user mới có tên là nvcloudviet :
# sudo adduser nvcloudviet
tiếp theo mình tạo mật khẩu cho user
# sudo passwd nvcloudviet
2. Thêm user đó vào danh sách user sử dụng FPT :
# echo "vncloudviet" | sudo tee -a /etc/vsftpd/user_list
vậy là tại thời điểm này , FTP server của bạn đã hoạt động tốt và các user được cấp phép truy cập vào FTP có thể kết nối với máy server .
Kết Luận
Mình đã kết thúc phần hướng dẫn cách setup FPT server với VSFTPD trên centos 8 an toàn và nhanh chóng.
Nếu bạn có những câu hỏi nào hoặc vẫn đề nào đừng quên để lại câu hỏi bên dưới mình sẽ giải quyết tất cả cho bạn.
Nguồn : Linuxize.com