Trang chủ Sys-Ops

Hướng dẫn cài đặt vsftpd trên Ubuntu với virtual user

Hướng dẫn cài đặt vsftpd trên Ubuntu với virtual user

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