Mục lục

Không có mục lục
Tham gia kênh Telegram của CloudFly để nhận thêm ưu đãi và không bỏ lỡ bất kỳ khuyến mãi nào từ CloudFly

Cách thiết lập vsftpd cho thư mục người dùng trên Ubuntu 20.04

Ngày đăng: 1 tháng 12 năm 2022

Ubuntu

Giới thiệu

FTP, viết tắt của File Transfer Protocol, là một giao thức mạng đã từng được sử dụng rộng rãi để di chuyển các tệp giữa máy khách và máy chủ. FTP vẫn được sử dụng để hỗ trợ các ứng dụng cũ và quy trình công việc với các nhu cầu rất cụ thể. Nếu bạn có lựa chọn về giao thức, hãy xem xét các tùy chọn hiện đại hiệu quả hơn, an toàn hơn và thuận tiện hơn cho việc phân phối tệp. Ví dụ: người dùng Internet tải xuống trực tiếp từ trình duyệt web của họ bằng https và người dùng dòng lệnh sử dụng các giao thức bảo mật như scp hoặc SFTP.

vsftpd, trình nền FTP rất an toàn, là máy chủ FTP cho nhiều hệ thống giống Unix, bao gồm cả Linux và cũng thường là máy chủ FTP mặc định cho nhiều bản phân phối Linux. vsftpd có lợi cho việc tối ưu hóa bảo mật, hiệu suất và tính ổn định. Nó cũng cung cấp khả năng bảo vệ mạnh mẽ chống lại các vấn đề bảo mật được tìm thấy trong các máy chủ FTP khác. vsftpd có thể xử lý các cấu hình IPD ảo, hỗ trợ mã hóa với tích hợp SSL, v.v.

Trong hướng dẫn này, bạn sẽ thiết lập cấu hình vsftpd để cho phép người dùng tải tệp lên thư mục chính của họ bằng FTP với thông tin đăng nhập được bảo mật bằng SSL/TLS. Bạn cũng sẽ kết nối máy chủ của mình bằng FileZilla, ứng dụng khách FTP nguồn mở, để kiểm tra mã hóa TLS.

Điều kiện tiên quyết

Để làm theo hướng dẫn này, bạn sẽ cần:

  • Điều đầu tiên bạn cần là máy chủ Ubuntu 20.04, non-root user có đặc quyền sudo và tường lửa được bật. Bạn có thể tìm hiểu thêm về cách thực hiện việc này trong hướng dẫn Thiết lập máy chủ ban đầu với Ubuntu 20.04 của chúng tôi.

  • Điều thứ hai bạn cần là FileZilla, một ứng dụng khách FTP mã nguồn mở, được cài đặt và thiết lập cấu hình trên máy cục bộ của bạn. Điều này sẽ cho phép bạn kiểm tra xem máy khách có thể kết nối với máy chủ của bạn qua TLS hay không.

Bước 1 — Cài đặt vsftpd

Bắt đầu bằng cách cập nhật danh sách gói của bạn:

  1. sudo apt update

Tiếp theo, cài đặt vsftpd daemon:

  1. sudo apt install vsftpd

Khi quá trình cài đặt hoàn tất, hãy sao chép tệp cấu hình để bạn có thể bắt đầu với cấu hình trống, đồng thời lưu bản gốc làm bản sao lưu:

  1. sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig

Với bản sao lưu cấu hình tại chỗ, bạn đã sẵn sàng thiết lập cấu hình tường lửa.

Bước 2 — Mở Tường lửa

Trước tiên, hãy kiểm tra trạng thái tường lửa để xem nó có được bật hay không. Nếu đúng như vậy, thì bạn sẽ thực hiện các điều chỉnh để đảm bảo rằng lưu lượng FTP được cho phép để các quy tắc tường lửa không chặn các bài kiểm tra.

Kiểm tra trạng thái tường lửa:

  1. sudo ufw status

Đầu ra này cho thấy rằng tường lửa đang hoạt động và chỉ SSH được phép thông qua:

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)

Bạn có thể có các quy tắc khác tại chỗ hoặc không có quy tắc tường lửa nào cả. Vì chỉ cho phép lưu lượng SSH, nên bạn sẽ cần thêm quy tắc cho lưu lượng FTP.

Bắt đầu bằng cách mở các cổng 20, 21990 để chúng sẵn sàng khi bạn bật TLS:

  1. sudo ufw allow 20,21,990/tcp

Tiếp theo, mở các cổng 40000-50000 cho phạm vi cổng thụ động mà bạn sẽ đặt trong tệp cấu hình:

  1. sudo ufw allow 40000:50000/tcp

Kiểm tra trạng thái tường lửa của bạn:

  1. sudo ufw status

Đầu ra của các quy tắc tường lửa của bạn bây giờ sẽ xuất hiện như sau:

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 20,21,990/tcp ALLOW Anywhere 40000:50000/tcp ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 20,21,990/tcp (v6) ALLOW Anywhere (v6) 40000:50000/tcp (v6) ALLOW Anywhere (v6)

Với vsftpd đã được cài đặt và các cổng cần thiết đã mở, giờ là lúc tạo một FTP user chuyên dụng.

Bước 3 — Chuẩn bị User Directory

Trong bước này, bạn sẽ tạo một FTP user chuyên dụng. Tuy nhiên, bạn có thể đã có user cần truy cập FTP. Hướng dẫn này phác thảo cách duy trì quyền truy cập của người dùng hiện tại vào dữ liệu của họ, tuy nhiên, chúng tôi khuyên bạn nên bắt đầu với một FTP user chuyên dụng mới cho đến khi bạn thiết lập cấu hình và kiểm tra thiết lập của mình trước khi định cấu hình lại bất kỳ người dùng hiện có nào.

Bắt đầu bằng cách thêm người dùng thử:

  1. sudo adduser sammy

Chỉ định một mật khẩu khi được nhắc. Vui lòng nhấn ENTER để bỏ qua các lời nhắc sau vì những chi tiết đó không quan trọng đối với mục đích của bước này.

FTP thường an toàn hơn khi người dùng bị giới hạn trong một thư mục cụ thể. vsftpd thực hiện điều này với chroot jails. Khi bật chroot cho người dùng cục bộ, theo mặc định, họ bị giới hạn trong thư mục chính. Vì vsftpd bảo mật thư mục theo một cách cụ thể, nên người dùng không thể ghi được. Điều này tốt cho người dùng mới, những người chỉ nên kết nối qua FTP, nhưng người dùng hiện tại có thể cần ghi vào thư mục chính của họ nếu họ cũng có quyền truy cập shell.

Trong ví dụ này, thay vì xóa các đặc quyền ghi khỏi thư mục chính, hãy tạo một thư mục ftp để dùng làm chroot và một thư mục files có thể ghi để chứa các tệp thực tế.

Tạo thư mục ftp:

  1. sudo mkdir /home/sammy/ftp

Đặt quyền sở hữu của nó:

  1. sudo chown nobody:nogroup /home/sammy/ftp

Xóa quyền ghi:

  1. sudo chmod a-w /home/sammy/ftp

Xác minh các quyền:

  1. sudo ls -la /home/sammy/ftp
Output
total 8 dr-xr-xr-x 2 nobody nogroup 4096 Sep 14 20:28 . drwxr-xr-x 3 sammy sammy 4096 Sep 14 20:28 ..

Tiếp theo, tạo thư mục để tải lên tệp:

  1. sudo mkdir /home/sammy/ftp/files

Sau đó gán quyền sở hữu cho người dùng:

  1. sudo chown sammy:sammy /home/sammy/ftp/files

Kiểm tra quyền trên thư mục ftp sẽ trả về đầu ra sau:

  1. sudo ls -la /home/sammy/ftp
Output
total 12 dr-xr-xr-x 3 nobody nogroup 4096 Sep 14 20:30 . drwxr-xr-x 3 sammy sammy 4096 Sep 14 20:28 .. drwxr-xr-x 2 sammy sammy 4096 Sep 14 20:30 files

Cuối cùng, thêm tệp test.txt để sử dụng để kiểm tra:

  1. echo "vsftpd test file" | sudo tee /home/sammy/ftp/files/test.txt
Output
vsftpd test file

Bây giờ bạn đã bảo mật thư mục ftp và cho phép người dùng truy cập vào thư mục tệp, tiếp theo bạn sẽ sửa đổi cấu hình của chúng ta.

Bước 4 — Cấu hình quyền truy cập FTP

Trong bước này, bạn sẽ cho phép một người dùng có tài khoản shell cục bộ kết nối với FTP. Hai cài đặt chính cho điều này đã được đặt trong vsftpd.conf. Mở tệp này bằng trình soạn thảo văn bản ưa thích của bạn. Ở đây, chúng tôi sẽ sử dụng nano:

  1. sudo nano /etc/vsftpd.conf

Khi bạn đã mở tệp, hãy xác nhận rằng chỉ thị anonymous_enable được đặt thành NO và chỉ thị local_enable được đặt thành YES:

/etc/vsftpd.conf
. . .
# Allow anonymous FTP? (Disabled by default).
anonymous_enable=NO
#
# Uncomment this to allow local users to log in.
local_enable=YES
. . .

Các cài đặt này ngăn đăng nhập ẩn danh và cho phép đăng nhập cục bộ tương ứng. Hãy nhớ rằng việc bật đăng nhập cục bộ có nghĩa là bất kỳ người dùng bình thường nào được liệt kê trong tệp /etc/passwd đều có thể được sử dụng để đăng nhập.

Một số lệnh FTP cho phép người dùng thêm, thay đổi hoặc xóa tệp và thư mục trên hệ thống tệp. Bật các lệnh này bằng cách bỏ ghi chú cài đặt write_enable. Bạn có thể thực hiện việc này bằng cách xóa dấu thăng (#) trước chỉ thị này:

/etc/vsftpd.conf
. . .
write_enable=YES
. . .

Bỏ ghi chú chroot để ngăn người dùng được kết nối FTP truy cập vào bất kỳ tệp hoặc lệnh nào bên ngoài cây thư mục:

/etc/vsftpd.conf
. . .
chroot_local_user=YES
. . .

Tiếp theo, thêm một lệnh user_sub_token có giá trị là biến môi trường $USER. Sau đó, thêm một lệnh local_root và đặt nó vào đường dẫn được hiển thị, bao gồm cả biến môi trường $USER. Thiết lập này đảm bảo rằng cấu hình sẽ cho phép người dùng này và những người dùng trong tương lai được định tuyến đến thư mục chính của người dùng thích hợp khi đăng nhập. Thêm các cài đặt này vào bất kỳ đâu trong tệp:

/etc/vsftpd.conf
. . .
user_sub_token=$USER
local_root=/home/$USER/ftp

Giới hạn phạm vi cổng có thể được sử dụng cho FTP thụ động để đảm bảo có đủ kết nối:

/etc/vsftpd.conf
. . .
pasv_min_port=40000
pasv_max_port=50000

Lưu ý: Ở Bước 2, bạn đã mở các cổng được đặt ở đây cho dải cổng thụ động. Nếu bạn thay đổi các giá trị này, hãy nhớ cập nhật cài đặt tường lửa của mình.

Để cho phép truy cập FTP trong từng trường hợp cụ thể, hãy đặt cấu hình sao cho người dùng chỉ có quyền truy cập khi họ được thêm vào danh sách một cách rõ ràng, thay vì theo mặc định:

/etc/vsftpd.conf
. . .
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO

userlist_deny thay đổi logic: khi nó được đặt thành YES, người dùng trong danh sách bị từ chối truy cập FTP; khi nó được đặt thành NO, chỉ những người dùng trong danh sách mới được phép truy cập.

Khi bạn thực hiện xong các thay đổi, hãy lưu tệp và thoát khỏi trình chỉnh sửa. Nếu bạn đã sử dụng nano để chỉnh sửa tệp, bạn có thể làm như vậy bằng cách nhấn CTRL + X, Y, rồi ENTER.

Cuối cùng, thêm người dùng của bạn vào /etc/vsftpd.userlist. Sử dụng cờ -a để thêm vào tệp:

  1. echo "sammy" | sudo tee -a /etc/vsftpd.userlist

Kiểm tra xem nó đã được thêm vào như bạn mong đợi chưa:

  1. cat /etc/vsftpd.userlist
Output
sammy

Khởi động lại daemon để tải các thay đổi cấu hình:

  1. sudo systemctl restart vsftpd

Với cấu hình sẵn có, bây giờ bạn có thể kiểm tra quyền truy cập FTP.

Bước 5 — Kiểm tra quyền truy cập FTP

Chúng ta đã thiết lập cấu hình máy chủ để chỉ cho phép người dùng sammy kết nối qua FTP. Bây giờ chúng ta sẽ đảm bảo rằng điều này hoạt động như mong đợi.

Vì bạn đã tắt quyền truy cập ẩn danh nên bạn có thể kiểm tra bằng cách thử kết nối ẩn danh. Nếu cấu hình được thiết lập đúng cách, người dùng ẩn danh sẽ bị từ chối cấp quyền. Mở một cửa sổ đầu cuối khác và chạy lệnh sau. Đảm bảo thay thế 203.0.113.0 bằng địa chỉ IP công khai của máy chủ của bạn:

  1. ftp -p 203.0.113.0

Khi được nhắc nhập tên người dùng, hãy thử đăng nhập với tư cách người dùng không tồn tại, chẳng hạn như anonymous và bạn sẽ nhận được kết quả sau:

Output
Connected to 203.0.113.0. 220 (vsFTPd 3.0.3) Name (203.0.113.0:default): anonymous 530 Permission denied. ftp: Login failed. ftp>

Đóng kết nối:

  1. bye

Người dùng không phải sammy cũng không kết nối được. Hãy thử kết nối với tư cách là người dùng sudo của bạn. Họ cũng nên bị từ chối truy cập và điều đó sẽ xảy ra trước khi họ được phép nhập mật khẩu của mình:

  1. ftp -p 203.0.113.0
Output
Connected to 203.0.113.0. 220 (vsFTPd 3.0.3) Name (203.0.113.0:default): sudo_user 530 Permission denied. ftp: Login failed. ftp>

Đóng kết nối:

  1. bye

Mặt khác, người dùng sammy có thể kết nối, đọc và ghi tệp. Đảm bảo rằng người dùng FTP được chỉ định của bạn có thể kết nối:

  1. ftp -p 203.0.113.0
Output
Connected to 203.0.113.0. 220 (vsFTPd 3.0.3) Name (203.0.113.0:default): sammy 331 Please specify the password. Password: your_user's_password 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp>

Bây giờ thay đổi vào thư mục files:

  1. cd files
Output
250 Directory successfully changed.

Tiếp theo, hãy chạy get để chuyển tệp thử nghiệm mà bạn đã tạo trước đó sang máy cục bộ của mình:

  1. get test.txt
Output
227 Entering Passive Mode (203,0,113,0,169,12). 150 Opening BINARY mode data connection for test.txt (17 bytes). 226 Transfer complete. 17 bytes received in 0.00 secs (4.5496 kB/s) ftp>

Tiếp theo, tải lên tệp có tên mới để kiểm tra quyền ghi:

  1. put test.txt upload.txt
Output
227 Entering Passive Mode (203,0,113,0,164,71). 150 Ok to send data. 226 Transfer complete. 17 bytes sent in 0.00 secs (5.3227 kB/s)

Đóng kết nối:

  1. bye

Bây giờ bạn đã kiểm tra cấu hình của mình, tiếp theo, bạn sẽ thực hiện các bước để tăng cường bảo mật cho máy chủ của mình.

Bước 6 — Bảo mật giao dịch

Vì FTP không mã hóa bất kỳ dữ liệu nào khi truyền, kể cả thông tin đăng nhập của người dùng, nên bạn có thể bật TLS/SSL để cung cấp mã hóa đó. Bước đầu tiên là tạo chứng chỉ SSL để sử dụng với vsftpd.

Sử dụng openssl để tạo chứng chỉ mới và sử dụng cờ -days để làm cho chứng chỉ hợp lệ trong một năm. Trong cùng một lệnh, hãy thêm 2048-bit RSA key riêng tư. Bằng cách đặt cả hai cờ -keyout-out thành cùng một giá trị, key riêng và chứng chỉ sẽ nằm trong cùng một tệp:

  1. sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

Bạn sẽ được nhắc cung cấp thông tin địa chỉ cho chứng chỉ của mình. Thay thế thông tin của riêng bạn cho các giá trị được đánh dấu:

Output
Generating a 2048 bit RSA private key ............................................................................+++ ...........+++ writing new private key to '/etc/ssl/private/vsftpd.pem' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:US State or Province Name (full name) [Some-State]:NY Locality Name (eg, city) []:New York City Organization Name (eg, company) [Internet Widgits Pty Ltd]:CloudFly Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []: your_server_ip Email Address []:

Để biết thêm thông tin chi tiết về cờ chứng chỉ, hãy đọc OpenSSL Essentials: Working with SSL Certificates, Private Keys and CSRs.

Khi bạn đã tạo chứng chỉ, hãy mở lại tệp cấu hình vsftpd:

  1. sudo nano /etc/vsftpd.conf

Ở cuối tệp, sẽ có hai dòng bắt đầu bằng rsa_. Nhận xét chúng bằng cách đặt trước mỗi dòng một dấu thăng (#):

/etc/vsftpd.conf
. . .
# rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
# rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
. . .

Sau những dòng đó, hãy thêm các dòng sau trỏ đến chứng chỉ và key riêng mà bạn đã tạo:

/etc/vsftpd.conf
. . .
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
. . .

Bây giờ, bạn sẽ buộc sử dụng SSL, điều này sẽ ngăn các máy khách không thể xử lý TLS kết nối. Điều này là cần thiết để đảm bảo rằng tất cả lưu lượng được mã hóa, nhưng nó có thể buộc người dùng FTP của bạn thay đổi ứng dụng khách. Thay đổi ssl_enable thành YES:

/etc/vsftpd.conf
. . .
ssl_enable=YES
. . .

Tiếp theo, thêm các dòng sau để từ chối rõ ràng các kết nối ẩn danh qua SSL và yêu cầu SSL cho cả truyền dữ liệu và đăng nhập:

/etc/vsftpd.conf
. . .
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
. . .

Sau đó thiết lập cấu hình máy chủ để sử dụng TLS, phiên bản kế thừa ưu tiên của SSL, bằng cách thêm các dòng sau:

/etc/vsftpd.conf
. . .
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
. . .

Cuối cùng, thêm hai tùy chọn cuối cùng. Cái đầu tiên sẽ không yêu cầu sử dụng lại SSL vì nó có thể phá vỡ nhiều máy khách FTP. Thứ hai sẽ yêu cầu các bộ mật mã mã hóa “cao”, hiện có nghĩa là độ dài khóa bằng hoặc lớn hơn 128 bit:

/etc/vsftpd.conf
. . .
require_ssl_reuse=NO
ssl_ciphers=HIGH
. . .

Đây là cách phần này của tệp sẽ xuất hiện sau khi tất cả những thay đổi này đã được thực hiện:

/etc/vsftpd.conf
# This option specifies the location of the RSA certificate to use for SSL
# encrypted connections.
#rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
#rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
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
require_ssl_reuse=NO
ssl_ciphers=HIGH

Khi bạn hoàn tất, hãy lưu và đóng tệp. Nếu bạn đã sử dụng nano, bạn có thể thoát bằng cách nhấn CTRL + X, Y, sau đó ENTER.

Khởi động lại máy chủ để các thay đổi có hiệu lực:

  1. sudo systemctl restart vsftpd

Tại thời điểm này, bạn sẽ không thể kết nối với ứng dụng khách dòng lệnh không an toàn nữa. Nếu bạn đã thử, bạn sẽ nhận được thông báo sau:

Output
ftp -p 203.0.113.0 Connected to 203.0.113.0. 220 (vsFTPd 3.0.3) Name (203.0.113.0:default): sammy 530 Non-anonymous sessions must use encryption. ftp: Login failed. 421 Service not available, remote server has closed connection ftp>

Tiếp theo, xác minh rằng bạn có thể kết nối bằng ứng dụng khách hỗ trợ TLS, chẳng hạn như FileZilla.

Bước 7 — Kiểm tra TLS với FileZilla

Hầu hết các máy khách FTP hiện đại có thể được cấu hình để sử dụng mã hóa TLS. Vì mục đích của chúng tôi, chúng tôi sẽ trình bày cách kết nối với FileZilla vì hỗ trợ đa nền tảng của nó. Tham khảo tài liệu cho các khách hàng khác.

Khi bạn mở FileZilla lần đầu tiên, hãy tìm biểu tượng Site Manager nằm phía trên từ Host, biểu tượng ngoài cùng bên trái ở hàng trên cùng. Bấm vào nút này:

description image

Một cửa sổ mới sẽ mở ra. Nhấp vào nút New Site ở góc dưới cùng bên phải:

description image

Trong My Sites, một biểu tượng mới có dòng chữ New Site sẽ xuất hiện. Bạn có thể đặt tên cho nó ngay bây giờ hoặc quay lại sau và sử dụng nút Rename.

Điền vào trường Host với tên hoặc địa chỉ IP. Trong menu thả xuống Encryption, chọn Require explicit FTP over TLS.

Đối với Logon Type, hãy chọn Ask for password. Điền người dùng FTP của bạn vào trường User:

description image

Nhấp vào nút Connect ở cuối giao diện. Bạn sẽ được hỏi mật khẩu của người dùng:

description image

Chọn OK để kết nối. Bây giờ bạn sẽ được kết nối với máy chủ của mình bằng mã hóa TLS/SSL.

Tiếp theo, bạn sẽ được cung cấp chứng chỉ máy chủ giống như sau:

description image

Khi bạn đã chấp nhận chứng chỉ, hãy nhấp đúp vào thư mục tệp và kéo tệp upload.txt sang bên trái để xác nhận rằng bạn có thể tải tệp xuống:

description image

Khi bạn đã hoàn thành việc đó, hãy nhấp chuột phải vào bản sao cục bộ, đổi tên nó thành upload-tls.txt và kéo nó trở lại máy chủ để xác nhận rằng bạn có thể tải tệp lên:

description image

Bây giờ bạn đã xác nhận rằng bạn có thể truyền tệp an toàn và thành công khi bật SSL/TLS.

Bước 8 - Vô hiệu hóa quyền truy cập Shell (Tùy chọn)

Nếu bạn không thể sử dụng TLS do yêu cầu của máy khách, bạn có thể đạt được một số bảo mật bằng cách vô hiệu hóa khả năng đăng nhập của người dùng FTP theo bất kỳ cách nào khác. Một cách để ngăn chặn nó là tạo một vỏ tùy chỉnh. Mặc dù điều này sẽ không cung cấp bất kỳ mã hóa nào, nhưng có thể đáng làm như vậy để hạn chế quyền truy cập của tài khoản bị xâm phạm vào các tệp có thể truy cập bằng FTP.

Đầu tiên, mở một tệp có tên ftponly trong thư mục bin:

  1. sudo nano /bin/ftponly

Thêm thông báo cho người dùng biết lý do tại sao họ không thể đăng nhập:

/bin/ftponly
#!/bin/sh
echo "This account is limited to FTP access only."

Lưu tệp và thoát trình chỉnh sửa của bạn. Nếu bạn đã sử dụng nano, bạn có thể thoát bằng cách nhấn CTRL + X, Y, sau đó ENTER.

Sau đó, thay đổi quyền để làm cho tệp có thể thực thi được:

  1. sudo chmod a+x /bin/ftponly

Mở danh sách các shell hợp lệ:

  1. sudo nano /etc/shells

Ở dưới cùng thêm:

/etc/shells
. . .
/bin/ftponly

Cập nhật shell của người dùng bằng lệnh sau:

  1. sudo usermod sammy -s /bin/ftponly

Bây giờ, hãy thử đăng nhập vào máy chủ của bạn với tên sammy:

  1. ssh sammy@your_server_ip

Bạn sẽ nhận được thông báo sau:

Output
This account is limited to FTP access only. Connection to 203.0.113.0 closed.

Điều này xác nhận rằng người dùng không còn có thể ssh đến máy chủ và chỉ giới hạn ở quyền truy cập FTP. Xin lưu ý, nếu bạn nhận được thông báo lỗi khi đăng nhập vào máy chủ của mình, điều này có thể có nghĩa là máy chủ của bạn không chấp nhận xác thực mật khẩu. Việc sử dụng xác thực dựa trên mật khẩu có thể khiến máy chủ của bạn dễ bị tấn công và đây là lý do tại sao bạn có thể muốn xem xét việc tắt xác thực mật khẩu. Nếu bạn đã thiết lập cấu hình xác thực dựa trên SSH key, bạn có thể tìm hiểu thêm về cách tắt xác thực mật khẩu trên máy chủ của mình ở Bước 4 của hướng dẫn Cách thiết lập khóa SSH trên Ubuntu 20.04.

Kết luận

Trong hướng dẫn này, chúng tôi đã giải thích cách thiết lập FTP cho người dùng có tài khoản cục bộ. Nếu bạn cần sử dụng nguồn xác thực bên ngoài, bạn có thể muốn khám phá khả năng hỗ trợ người dùng ảo của vsftpd. Điều này cung cấp một bộ tùy chọn phong phú thông qua việc sử dụng PAM (Pluggable Authentication Modules) và là một lựa chọn tốt nếu bạn quản lý người dùng trong một hệ thống khác như LDAP hoặc Kerberos. Bạn cũng có thể đọc về các tính năng vsftpd, các bản phát hành mới nhất và các bản cập nhật để tìm hiểu thêm.

Tham gia kênh Telegram của CloudFly để nhận thêm ưu đãi và không bỏ lỡ bất kỳ khuyến mãi nào từ CloudFly
Chia sẻ

0 câu trả lời