Cài đặt và cấu hình vsFTPd Server trên CentOS 7 & 8

Hướng dẫn cài đặt và cấu hình vsFTPd Server trên CentOS 7 & 8 cực đơn giản chỉ với vài câu lệnh và vài cú pháp cấu hình.

Cài đặt và cấu hình vsFTPd Server trên CentOS 7 & 8

vsFTPd là một FTP Server Stand Alone được phân phối bởi Red Hat Enterprise Linux. vsFTPd được sử dụng rộng rãi trên Linux Server và sử dụng vsFTPd sẽ đảm bảo cho chúng ta an toàn trước 99% lỗ hỏng bảo mật trên FTP Server.

Mô hình của vsFTPd có những đặc điểm chính như sau:

  •  Giữa tiến trình mang đặc quyền và tiến trình không mang đặc quyền có phân chia rõ ràng.

  • Các tiến trình được chạy trong chroot jail nhằm nâng cao bảo mật.

  • Chroot trên các hệ điều hành Unix là một công đoạn thay đổi thư mục root cho các tiến trình đang chạy hiện tại và các tiền trình con của nó.

Cài đặt vsFPTd trên CentOS 7

Lệnh cài đặt vsFPTd:

#yum install vsftpd

Lệnh khởi động vsFTPd:

systemctl start vsftpd

Lệnh kết thúc/trạng thái vsFTPd:

#systemctl [stop] [status] vsftpd.service

Cho phép tự chạy vsFTPd khi khởi động hệ điều hành:

systemctl enable vsftpd

Kiểm tra sơ bộ xem vsFTPd hoạt động hay chưa, chạy lệnh:

telnet localhost 21

Telnet

Nếu kết quả như trên chính là không thành công, không cài telnet bạn dùng lệnh netstat -tulpn cũng được thấy đang listen trên Port 21 là ok.

netstat-tulpn

Sau khi hoàn thành việc cấu hình, ta tiến hành restart vsFTPd bằng lệnh sau:

#systemctl restart vsftpd.service

Hướng dẫn cấu hình FTP Server trên CentOS 7 & 8 với vsFTPd

vsFTPd dùng chính account trên CentOS để log in vào hệ thống của nó. Ta chỉnh sửa file cấu hình tại:

# vi /etc/vsftpd/vsftpd.conf

1. Các tham số cấu hình cơ bản

Khi bật tham số listen, vsFTPd chạy ở mode stand alone và lắng nghe trên socket IPv4

listen= YES

Cho phép các kết nối không chứng thực (anonymous). Tham số sẽ tự động kích hoạt nếu ta comment tham số.

anonymous_enable=YES

Cho phép user local truy cập:

local_enable=YES

Cho phép user quyền truy cập chỉnh sửa file trên server:

write_enable=YES

Cho phép người dùng ẩn danh upload file (tính năng này chỉ có hiệu lực nếu tham số write_enable được bật). Thêm vào đó, bạn cần tạo đường dẫn cho phép người dùng ẩn danh chỉnh sửa.

anon_upload_enable=YES

Cho phép người dùng ẩn danh tạo đường dẫn thư mục mới:

anon_mkdir_write_enable=YES

2. Chroot Users

Chroot hiểu đơn giản là kỹ thuật “giam” một chương trình, dependencies và library cần thiết kế để chạy chương trình vào một folder tách biệt với hệ thống để nâng cao tính bảo mật. Và nếu chương trình đó bị xâm nhập trái phép thì nó chỉ ảnh hưởng trong nội tại như thư mục đó mà thôi.

Trong bài viết này, chúng ta sẽ học cách bật mí tính năng chroot cho các user khi đăng nhập vào FTP Server. Ta có các tùy chọn sau:

Chroot tất cả user:

chroot_local_user=YES

chroot_list_enable=NO

Chỉ chroot đối với một số user nằm trong danh sách được tạo nên đường dẫn /etc/vsftpd.chroot_list:

chroot_local_user=NO

chroot_list_enable=YES

Chroot tất cả user ngoại trừ danh sách các user được liệt kê tại /etc/vsftpd.chroot_list:

chroot_local_user=YES

chroot_list_enable=YES

3. Cho phép và hạn chế người dùng đăng nhập vào hệ thống

Hạn chế các user truy cập vào FTP Server:

userlist_deny=YES

userlist_file=/etc/vsftpd.denied_users

Hoặc có thể cấm tất cả các user truy cập FTP và lập danh sách những người được truy cập.

userlist_deny=NO

userlist_enable=YES

userlist_file=/etc/vsftpd.allowed_users

Bảo mật FTP Server

Để cấu hình bảo mật cho FTP Server thêm an toàn, bạn thêm vào 2 dòng bên dưới. Đây là cách chroot FPT rất cần thiết với máy chủ có nhiều user. Mục đích là đảm bảo mỗi user được tạo ra sẽ bị giới hạn truy cập trong Home Directory của nó, không thể view hoặc access vào bất kỳ thư mục nào.

chroot_local_user=YES # kích hoạt tính năng chroot cho local user.

allow_writeable_chroot=YES # Phải có dòng này chroot mới hoạt động chuẩn được nhé.

Tiếp theo là userlist_enable. Nếu được gán giá trị YES thì tất cả các user được liệt kê trong file /etc/vsftpd/user_list sẽ không thể access vào FTP Server được. Tất cả các user trong user_list đều là những tài khoản quan trọng dùng để vận hành máy chủ, tốt nhất là không dùng cho FTP thì hơn. Nếu giá trị là NO thì ngược lại, toàn bộ những user trong user_list sẽ truy cập được FTP Server.

Mình chọn YES

userlist_enable=YES

Khi chroot user đồng nghĩa với việc user không thể truy cập được đâu ngoài thư mục của mình. Nhưng trong quá trình sử dụng, nhiều khi bạn muốn tạo ra một ngoại lệ (exception) để một user nào đó có thể đi vào tất cả các thư mục xem một tí thì phải làm thế nào?

Để làm được điều đó, bạn thêm vào 2 dòng bên dưới.

chroot_list_enable=YES # Dòng này vô hiệu hóa Chroot.

chroot_list_file=/etc/vsftpd/chroot_list # Dòng này tạo ra một file chứa danh sách các local user không bị giới hạn bởi chroot.

Bạn có thể dùng vi tạo file có tên là chroot_list với đường dẫn như trên rồi thêm mỗi user vào một dòng.

Chú ý, nếu gặp lỗi 500 OOPS: vsftpd: refusing to run with writable root inside chroot(), bạn kiểm tra lại giá trị allow_writeable_chroot cho mình.

Cấu hình như trên là khá ổn rồi, bạn lưu lại file config vsftp ấn :wq để thoát trình soạn thảo vi.

Tạo tài khoản FTP

Khi cấu hình và bảo mật FTP đã sẵn sàng, để linh hoạt khi sử dụng FTP trên Linux, bạn bắt đầu tạo user FTP.

Theo mặc định Local User được tạo ra trên Linux có Home Directory là /home/user. Tất cả dữ liệu user upload/download đều nằm trong thư mục /home/user cả.

Nhưng nếu bạn không muốn dùng mặc định, muốn gom tất cả vào đường dẫn /var/ftp/user thì phải làm thế nào?

Bước 1 - Tạo Home Directory

Ví dụ mình sẽ tạo user1 có home directory là /var/ftp/user1, chạy lệnh:

mkdir /var/ftp/user1

Bước 2 - Tạo user

useradd -d /var/ftp/user1 -s /sbin/nologin user1

Ý nghĩa thông số:

  • -d: Thay đổi Home Directory sang /var/ftp/user1, nếu không user tạo ra sẽ dùng có Home Directory mặc định là /home/user1.

  • -s: Tạo Shell cho user1 không cho login vào server. Bạn nên dùng shell nologin thay cho /bin/bash, /bin/sh.

Chú ý: nếu một user2 được tạo ra trước đó sử dụng Home Directory mặc định, bạn có thể thay đổi bằng lệnh sau:

usermod -d /var/ftp/user2

Bước 3 - Thay đổi quyền sở hữu Home Directory

Thư mục tạo ra mặc định root:root quản lý, bạn phải chown lại cho thư mục.

chown user1:user1 -R /var/ftp/user1

Chúc bạn thành công!