Cấu hình VSFTP 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 ...
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 vsftpd@configuration-file-2site
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