Cấu hình VSFTP trên Centos 7

Cấu hình VSFTPD trên Centos 7

Giới thiệu:

vsftpd là một FTP Server Stand Alone được phân phối bởi Red Hat Enterprise Linux. Mô hình vsftpd có 3 thuộc tính chính là:

  • Sự phân chia rõ rệt giữa tiến trình mang đặc quyền và tiến trình không mang đặc quyền.

  • Các task cần các đặc quyền được xử lý bởi các tiến trình có ít các đặc quyền nhất

  • Hầu hết các tiến trình được chạy trong chroot jail để nâng cao tính bảo mật.

I. Cài đặt:

#yum install vsftpd

Khởi động/Kết thúc/Trạng thái vsftpd:

#systemctl [start] [stop] [status] vsftpd.service

Khởi động vsftpd khi khởi động máy:

#systemctl enable vsftpd.service

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

II. Cấu hình căn bản:

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ăn 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) (Lưu ý: tham số tự động kích hoạt nếu ta comment tham số)

anonymous_enable=ÝE

Cho phép user local truy cập:

local_enable=YES

Cho phép user quyền chỉnh sửa file trên server (Mặc định: Cấm)

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 để 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 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 thư mục đó mà thôi. Chi tiết về chroot mình sẽ có một series khác để nói riêng về kỹ thuật này nhé.

Trong nội dung bài viết này ta sẽ học cách bật 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 như 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 trê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 ta có thể cấm tất cả các user truy cập FTP và lập danh sách một số người được truy cập

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

III. Khởi động nhiều phiên bản cấu hình của VSFTPD:

Đôi khi một server chứa nhiều FTP domain để phục vụ nhiều mục đích khác nhau. Ta có thể thực hiện điều này bằng cách tạo ra 2 hay nhiều file cấu hình cho các domain khác nhau và khởi động từng FTP Daemon chạy các file cấu hình khác nhau cùng lúc.

Trước đó ta cần đảm bảo các máy client thông mạng và DNS Server được cấu hình đầy đủ cho các FTP Server

Tiếp theo ta tạo các file cấu hình khác nhau và đặt tại /etc/vsftpd Mỗi file cấu hình sẽ lắng nghe một mạng duy nhất, tham số này là độc nhất

listen_address=N.N.N.N

Ta khởi động các phiên bản của FTP Daemon bằng lệnh sau: Lưu ý ta phải bỏ đuôi .conf ở file cấu hình đi

systemctl start [email protected]

Thay vì phải khởi động bắng tay từng phiên bản một ta có thể khởi động tất cả cùng lúc bằng hai thao tác xong

systemctl enable vsftpd.target
systemctl start vsftpd.target

IV. Mã hóa VSFTPD với TLS/SSL:

Tinh chỉnh các thông số sau để mã hóa vsftpd bằng TLS và disble các phương thức SSL đã cũ:

ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

V. Chính sách SELinux cho VSFTPD:

Để share file một cách ẩn danh ta set biến public_content_t với đường dẫn public:

~]# chcon -R -t public_content_t /path/to/directory

Để tạo một đường dẫn để upload file một cách ẩn danh, ta cấu hình tương tự như trên và set tham số allow_ftpd_anon_write bằng lệnh sau:

 ~]# setsebool -P allow_ftpd_anon_write=1

Cho phép người dùng local truy cập đường dẫn nguồn của chính họ bằng lệnh sau:

~]# setsebool -P ftp_home_dir=1