FTP (File Transfer Protocol) là một công cụ tiêu chuẩn truyền thống và được sử dụng rộng rãi để truyền tệp giữa máy chủ và máy khách qua mạng, đặc biệt khi không cần xác thực (cho phép người dùng ẩn danh kết nối với máy chủ). Chúng ta phải hiểu rằng FTP không an toàn theo mặc định, vì nó truyền thông tin xác thực của người dùng và dữ liệu mà không có mã hóa.

Trong hướng dẫn này, chúng tôi sẽ mô tả các bước để cài đặt, cấu hình và bảo mật một máy chủ FTP (VSFTPD viết tắt của Very Secure FTP Daemon) trong CentOS/RHEL 7 và các bản phân phối Fedora.

Lưu ý rằng tất cả các lệnh trong hướng dẫn này sẽ được chạy như root trong trường hợp bạn không vận hành máy chủ với tài khoản root, sử dụng lệnh sudo để đạt được đặc quyền root.

Bước 1: Cài đặt FTP Server

1. Đang cài đặt máy chủ vsftpd, chỉ cần chạy lệnh sau trong thiết bị đầu cuối.

# yum install vsftpd

2. Sau khi cài đặt hoàn tất, dịch vụ sẽ bị vô hiệu hóa lúc đầu, vì vậy chúng tôi cần phải khởi động nó theo cách thủ công trong lúc này và cho phép nó tự động khởi động từ lần khởi động hệ thống tiếp theo:

# systemctl start vsftpd
# systemctl enable vsftpd

3. Tiếp theo, để cho phép truy cập vào các dịch vụ FTP từ các hệ thống bên ngoài, chúng ta phải mở cổng 21 nơi các daemon FTP đang chạy như sau:

# firewall-cmd --zone=public --permanent --add-port=21/tcp
# firewall-cmd --zone=public --permanent --add-service=ftp
# firewall-cmd --reload

Bước 2: Cấu hình FTP Server

4. Bây giờ chúng ta sẽ chuyển sang thực hiện một số cấu hình để thiết lập và bảo mật máy chủ FTP của chúng ta, hãy bắt đầu bằng cách tạo bản sao lưu của tệp cấu hình ban đầu /etc/vsftpd/vsftpd.conf:

# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.orig

Tiếp theo, mở tệp cấu hình ở trên và đặt các tùy chọn sau với các giá trị tương ứng 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         
listen=NO   			
listen_ipv6=YES		    
pam_service_name=vsftpd     
userlist_enable=YES  	        
tcp_wrappers=YES  		

Bạn sẽ thấy dòng lệnh sau:

# disable anonymous  # permit local logins # enable FTP commands which change the filesystem  # value of umask for file creation for local users  # enable showing of messages when users first enter a new directory # a log file will be maintained detailing uploads and downloads # use port 20 (ftp-data) on the server machine for PORT style connections # keep standard log file format # prevent vsftpd from running in standalone mode # vsftpd will listen on an IPv6 socket instead of an IPv4 one # name of the PAM service vsftpd will use # enable vsftpd to load a list of usernames # turn on tcp wrappers

5. Bây giờ, hãy cấu hình FTP để cho phép / từ chối quyền truy cập FTP đối với người dùng dựa trên tệp danh sách người dùng /etc/vsftpd.userlist.

Theo mặc định, người dùng được liệt kê trong userlist_file=/etc/vsftpd.userlist bị từ chối truy cập đăng nhập với userlist_deny đặt thành YES nếu userlist_enable=YES.

Tuy nhiên, userlist_deny=NO thay đổi cài đặt, nghĩa là chỉ những người dùng được liệt kê rõ ràng trong userlist_file=/etc/vsftpd.userlist sẽ được phép đăng nhập.

userlist_enable=YES                   
userlist_file=/etc/vsftpd.userlist   
userlist_deny=NO   

Bạn sẽ nhìn thấy dòng lệnh sau:

# vsftpd will load a list of usernames, from the filename given by # stores usernames.

Đó không phải là tất cả, khi người dùng đăng nhập vào máy chủ FTP, họ sẽ bị đưa vào một nhà tù đã được chroot’ed, đây là thư mục gốc cục bộ sẽ chỉ hoạt động như thư mục chính của họ cho phiên FTP.

Tiếp theo, chúng ta sẽ xem xét hai tình huống có thể xảy ra về cách chuyển người dùng FTP sang thư mục Home Directory (thư mục gốc cục bộ) cho người dùng FTP, như được giải thích bên dưới.

6. Bây giờ, hãy thêm hai tùy chọn sau để hạn chế người dùng FTP vào thư mục Home của họ.

chroot_local_user=YES
allow_writeable_chroot=YES

chroot_local_user=YES người dùng cục bộ sẽ được đưa vào một nhà tù chroot, thư mục chính của họ sau khi đăng nhập theo cài đặt mặc định.

Và cũng theo mặc định, vsftpd không cho phép ghi thư mục chroot jail vì lý do bảo mật, tuy nhiên, chúng ta có thể sử dụng tùy chọn allow_writeable_chroot=YES để ghi đè cài đặt này.

Lưu file và đóng nó lại.

Bảo mật máy chủ FTP với SELinux

7. Bây giờ, hãy thiết lập SELinux boolean bên dưới để cho phép FTP đọc các tệp trong thư mục chính của người dùng. Lưu ý rằng điều này ban đầu được thực hiện bằng cách sử dụng lệnh:

# setsebool -P ftp_home_dir on

Bây giờ chúng ta sẽ sử dụng semanage để thiết lập quy tắc SELinux để cho phép FTP đọc / ghi thư mục chính của người dùng.

# semanage boolean -m ftpd_full_access --on

Tại thời điểm này, chúng tôi phải khởi động lại vsftpd để thực hiện tất cả các thay đổi mà chúng tôi đã thực hiện cho đến nay ở trên:

# systemctl restart vsftpd

Bước 4: Kiểm tra FTP Server

8. Bây giờ chúng ta sẽ kiểm tra máy chủ FTP bằng cách tạo người dùng FTP bằng lệnh useradd.

# useradd -m -c Ravi Saive, CEO -s /bin/bash ravi
# passwd ravi

Sau đó, chúng tôi phải thêm người dùng ravi vào tập tin /etc/vsftpd.userlist sử dụng lệnh echo như sau:

# echo "ravi" | tee -a /etc/vsftpd.userlist
# cat /etc/vsftpd.userlist

9. Bây giờ đã đến lúc kiểm tra xem cài đặt của chúng tôi ở trên có hoạt động chính xác hay không. Hãy bắt đầu bằng cách kiểm tra thông tin đăng nhập ẩn danh, chúng ta có thể thấy từ ảnh chụp màn hình bên dưới rằng đăng nhập ẩn danh không được phép:

# ftp 192.168.56.10

Bạn sẽ thấy lời nhắc sau:

Connected to 192.168.56.10 (192.168.56.10). 220 Welcome to TecMint.com FTP service. Name (192.168.56.10:root) : anonymous 530 Permission denied. Login failed. ftp>

Kiểm tra Đăng nhập FTP Ẩn danh

10. Cũng hãy kiểm tra xem người dùng không được liệt kê trong tệp /etc/vsftpd.userlist sẽ được cấp quyền để đăng nhập, không xảy ra trường hợp như trong ảnh chụp màn hình bên dưới:

# ftp 192.168.56.10

Bạn sẽ thấy lời nhắc sau:

Connected to 192.168.56.10 (192.168.56.10). 220 Welcome to TecMint.com FTP service. Name (192.168.56.10:root) : aaronkilik 530 Permission denied. Login failed. ftp>

Đăng nhập người dùng FTP không thành công
Đăng nhập người dùng FTP không thành công

11. Bây giờ, hãy kiểm tra lần cuối xem có người dùng được liệt kê trong tệp không /etc/vsftpd.userlist thực sự được đặt trong thư mục chính sau khi đăng nhập:

# ftp 192.168.56.10

Bạn sẽ thấy lời nhắc sau:

Connected to 192.168.56.10 (192.168.56.10). 220 Welcome to TecMint.com FTP service. Name (192.168.56.10:root) : ravi 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> ls

Đăng nhập người dùng FTP thành công[[
Đăng nhập người dùng FTP thành công

Chú ý: Sử dụng allow_writeable_chroot=YES có ý nghĩa bảo mật nhất định, đặc biệt nếu người dùng có quyền tải lên hoặc quyền truy cập trình bao.

Chỉ kích hoạt tùy chọn này nếu bạn biết chính xác những gì bạn đang làm. Điều quan trọng cần lưu ý là các hàm ý bảo mật này không dành riêng cho vsftpd, chúng áp dụng cho tất cả các daemon FTP cung cấp để đưa người dùng cục bộ vào tù chroot.

Do đó, chúng ta sẽ xem xét một cách an toàn hơn để thiết lập một thư mục gốc cục bộ không thể ghi khác trong phần tiếp theo.

Bước 5: Định cấu hình các thư mục chính của người dùng FTP khác nhau

12. Mở lại tệp cấu hình vsftpd và bắt đầu bằng cách nhận xét tùy chọn không an toàn bên dưới:

#allow_writeable_chroot=YES

Sau đó, tạo thư mục gốc cục bộ thay thế cho người dùng (ravi của bạn có thể khác) và xóa quyền ghi cho tất cả người dùng vào thư mục này:

# mkdir /home/ravi/ftp
# chown nobody:nobody /home/ravi/ftp
# chmod a-w /home/ravi/ftp

13. Tiếp theo, tạo một thư mục trong thư mục gốc cục bộ nơi người dùng sẽ lưu trữ các tệp của mình:

# mkdir /home/ravi/ftp/files
# chown ravi:ravi  /home/ravi/ftp/files
# chmod 0700 /home/ravi/ftp/files/

Sau đó, thêm / sửa đổi các tùy chọn sau trong tệp cấu hình vsftpd với các giá trị sau:

user_sub_token=$USER          
local_root=/home/$USER/ftp  

Bạn sẽ nhìn thấy dòng lệnh sau:

# inserts the username in the local root directory  # defines any users local root directory

Lưu file và đóng nó lại. Một lần nữa, hãy khởi động lại dịch vụ với các cài đặt mới:

# systemctl restart vsftpd

14. Bây giờ, hãy kiểm tra lại lần cuối và thấy rằng thư mục gốc cục bộ của người dùng là thư mục FTP mà chúng tôi đã tạo trong thư mục chính của anh ta.

# ftp 192.168.56.10

Bạn sẽ thấy lời nhắc sau:

Connected to 192.168.56.10 (192.168.56.10). 220 Welcome to TecMint.com FTP service. Name (192.168.56.10:root) : ravi 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> ls

FTP Người dùng Trang chủ Thư mục Đăng nhập Thành công
FTP User Home Directory đăng nhập thành công

Trong bài viết này, chúng tôi đã mô tả cách cài đặt, cấu hình cũng như bảo mật máy chủ FTP trong CentOS 7, hãy sử dụng phần bình luận bên dưới để viết thư phản hồi cho chúng tôi về hướng dẫn này / chia sẻ bất kỳ thông tin hữu ích nào về chủ đề này.

Trong bài viết tiếp theo, chúng tôi cũng sẽ hướng dẫn bạn cách bảo mật máy chủ FTP bằng kết nối SSL / TLS trong CentOS 7, cho đến lúc đó, hãy duy trì kết nối với TecMint.

Bài viết trên tôi đã chia sẻ những phương pháp phổ biến và đơn giản nhất giúp khắc phục nhanh cách cài đặt, cấu hình và bảo mật máy chủ FTP trong CentOS 7 – [Comprehensive Guide]. Bạn đã lựa chọn được phương pháp nào chưa? Nếu còn bất kỳ thắc mắc hay câu hỏi nào, đừng quên Like, Share và để lại bình luận bên dưới 2error.net để có thêm nhiều trải nghiệm tuyệt vời hơn nhé! 😉