FTP (File Transfer Protocol): là giao thức cung cấp cơ chế truyền tin dưới dạng tập tin thông qua TCP/IP. Bên cạnh đó, FTP còn là một dịch vụ đặc biệt vì khi hoạt động sẽ sử dụng 2 cổng: 20 (data port) và 21 (command port) thay vì một cổng như các dịch vụ thông dụng khác.
VSFTPD (Very Secure FTP Daemon): là một dịch vụ thường được sử dụng trên Unix và Linux để làm FTP Server mà theo một số đánh giá thì tốc độ nhanh hơn, bảo mật tốt hơn và hoạt động ổn định hơn các dịch vụ FTP Server khác. Trong bài viết Install and Configure FTP Server, tôi xin giới thiệu cách cài đặt và cấu hình một FTP Server bằng vsftpd trên CentOS 7.
I. Cài đặt vsftpd
Kiểm tra máy CentOS đã cài dịch vụ FTP Server vsftpd hay chưa bằng lệnh:
rpm –qa vsftpd
Nếu kết quả trả về là trống thì đồng nghĩa với việc vsftpd chưa được cài đặt. Để tiến hành cài đặt dịch vụ FTP Server từ Repository thông qua Internet dùng lệnh:
yum install -y vsftpd
II. Cấu hình dịch vụ vsftpd
Trước khi cấu hình vsftpd, nên lưu lại một bản sau của file cấu hình ban đầu để dùng trong trường hợp file cấu hình bị lỗi trong quá trình thiết lập các thông số. Để copy dùng lệnh cp như sau:
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
Tiến hành cấu hình FTP Server bằng cách thay đổi các giá trị trong tập tin /etc/vsftpd/vsftpd.conf với lệnh vi như sau:
vi /etc/vsftpd/vsftpd.conf
Thay đổi một số thiết lập cơ bản sau:
#Dòng 12 – Thiết lập không cho anonymous user truy cập ftp
anonymous_enable=NO
#Dòng 16 – Nếu = YES thì cho phép sử dụng local user để đăng nhập FTP và trường này bắt buộc là YES nếu mục anonymous_enable=NO
local_enable=YES
#Dòng 19 – Mặc định là YES. Cho phép FTP Users ghi dữ liệu
write_enable=YES
#Dòng 23 – Phân quyền 664 cho các tập tin và 775 cho các thư mục upload lên FTP Server
local_umask=022
#Dòng 43 – Tắt port 20 trên FTP Server để cho vsftpd an toàn hơn.
connect_from_port_20=NO
#Dòng 82,83 – Hỗ trợ bảng mã ASCII trong upload và download
ascii_upload_enable=YES
ascii_download_enable=YES
Ngoài ra, còn rất nhiều thông số trong thiết lập vsftpd.conf có thể sử dụng cho phù hợp với nhu cầu của từng hệ thống. Có thể tham khảo thêm các tham số tại đây:
https://security.appspot.com/vsftpd/vsftpd_conf.html
Sau khi hoàn tất việc cấu hình vsftpd, tiến hành khởi động dịch vụ và thiết lập cho dịch vụ tự động khởi chạy trong những lần khởi động Server tiếp theo lần lượt bằng các lệnh bên dưới:
systemctl start vsftpd.service
systemctl enable vsftpd.service
III. Tạo user login ftp server
Vsftpd đã được cấu hình chứng thực bằng user local nên hầu như tất cả user tồn tại trong PAM đều có thể login vào FTP Server ngoài trừ những user đặc biệt nằm trong tập tin: /etc/vsftpd/ftpusers. Nếu muốn các user này log in được vào ftp server chỉ cần thêm dấu # vào trước tên user hoặc xóa khỏi danh sách.
Mặc định, khi một user đăng nhập vào FTP Server, thì Server sẽ lấy thư mục home tương ứng với user đó làm vị trí ban đầu cho việc upload và download dữ liệu. Vì vậy, khi tạo user để đăng nhập FTP, cần lưu ý đến việc tạo thư mục home cho user đúng với vị trí mong muốn bằng lệnh useradd và tham số -d như sau:
useradd –d
Ví dụ: Để tạo user opalis có thư mục home là /var/www/html/opalis thì dùng lệnh như sau:
useradd -d /var/www/html/opalis opalis
Khi đăng nhập vào FTP Server bằng user opalis, FTP Server sẽ tự động chuyển đến thư mục /var/www/html/opalis để làm vị trí cho user upload và download dữ liệu.
Nếu muốn chuyển đổi thư mục home của một user sang một đường dẫn khác để tiện cho việc sử dụng FTP thì cần phải làm 2 việc là chuyển đổi thư mục home cho user với lệnh usermod kèm thông số -md và chuyển sở hữu thư mục mới cho user đó bằng lệnh chown với tham số -R.
VD: Chuyển mục home của user opalis từ /var/www/html/opalis sang thư mục /var/www/html/opalisltl/ và chuyển sở hữu thư mục /var/www/html/opalisltl/ về cho user opalis bằng các lệnh sau:
usermod -m -d /var/www/html/opalisltl/ opalis
chown -R opalis /var/www/html/opalisltl/