Hướng dẫn cài đặt vsftpd trên Ubuntu với virtual user
Theo Bizfly Cloud chia sẻ server của bạn có hàng trăm website lớn nhỏ với rất nhiều người cần truy cập vào server, thay đổi các file , các thư mục bất cứ lúc nào. Việc upload files với sftp , hoặc việc tạo quá nhiều user trong hệ thống cho phép ssh không an toàn cho các server.
Đôi khi người quản trị cần phải cân nhắc rất nhiều giữa nhu cầu truy cập của các bộ phận như developer, webmaster và đảm bảo an toàn cho server. Việc sử dụng vsftpd với virtual user là 1 trong những giải pháp tạm thời có thể khắc phục được các hạn chế trên.
Virtual user là các user không nằm trên hệ thống,không được quản lý bởi các nhóm , không có uid, gid.Trong phạm vi bài viết này, chúng ta sẽ dùng 1 file database riêng để quản lý truy cập cho các virtual user này , sử dụng dịch vụ ftp để truy cập vào các thư mục được chỉ định rõ.
1. Cài đặt vsftpd các gói cần thiết
# sudo apt-get install vsftpd db-util libpam-pwdfile -y
2. Tạo thư mục chứa các file cấu hình
mkdir /etc/vsftpdt3. Tạo file text chứa các thông tin virtual users
# touch /etc/vsftpd/virtual_users.txt
Trong file này chúng ta sẽ điền thông tin username, password tương ứng cho từng user. Mỗi user 2 dòng, các dòng viết liền nhau, username trước, password sau
Ví dụ:
username1
password1
4. Chạy lệnh sau để tạo file db
# db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
Để an toàn, sau bược tạo db này, các bạn có thể xoá file text hoặc mã hoá nó
Có nhiều cách để lưu trữ dữ liệu xác thực, ngoài việc dùng file , các bạn có thể dùng CSDL , ví dụ mysql để tạo DB, quản lý các thông tin username, password này. Còn mình lựa chọn lưu luôn trên file cho linh động.
5. Cấu hình cách thức xác thực bằng PAM file.
Tạo file vsftpd_virtual trong thư mục /etc/pam.d
# vi /etc/pam.d/vsftpd_virtual
Thêm vào các dòng sau:
#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/virtual_users
account required pam_userdb.so db=/etc/vsftpd/virtual_users
session required pam_loginuid.so
6. Cấu hình vsftpd sử dụng virtual user.
File chúng ta sẽ sửa đó là /etc/vsftpd.conf. Đối với 1 số OS khác, file có thể là /etc/vsftpd/vsftpd.conf
# vi /etc/vsftpd.conf
# Kiểm tra các giá trị sau đây, 1 số giá trị các bạn có thể tuỳ chỉnh cho phù hơp
listen=YES
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=NO
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=YES
# Đối với việc upload code và owner của file và thư mục được tự động change về user chạy webserver, chúng ta đặt user của web server ở đây, đối với 1 số hệ thống, user có thể là nginx, apache ...
guest_enable=YES
guest_username=www-data
# Uncomment this to allow local users to log in.
local_enable=YES
## Virtual users will use the same permissions as anonymous
virtual_use_local_privs=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES
## PAM file name
pam_service_name=vsftpd_virtual
## Home Directory for virtual users
user_sub_token=$USER
# Nếu bạn muốn thay đổi thư mục mặc định của mỗi user bạn có thể comment dòng dưới và cấu hình local_root trong file cấu hình của từng user, nếu không, tên các thư mục web tương ứng với mỗi user nên trùng tên user như sau:
local_root=/var/www/html/$USER
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
chroot_local_user=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf
## Hide ids from user
hide_ids=YES
# umask d'upload
anon_umask=022
#passive mode
pasv_enable=Yes
pasv_max_port=10100
pasv_min_port=10090
# vsftp list all content
dirmessage_enable=YES
tcp_wrappers=YES
hide_file=NO
file_open_mode=0644
Bước 7. Tạo thư mục chứa các cấu hình cho mỗi user
/etc/vsftpd/vsftpd_user_conf
# mkdir /etc/vsftpd/vsftpd_user_conf
Bước 8. Tạo file cấu hình cho mỗi user
# vi /etc/vsftpd/vsftpd_user_conf/user1
Paste:
local_root=/home/user1/web
Bước 9. Start or restart vsftpd service:
# service vsftpd restart
>> Tìm hiểu thêm: Hướng dẫn nâng cấp lên PHP 7 trên Ubuntu 14.04
Theo Bizfly Cloud chia sẻ