Hướng dẫn thiết lập vsftpd để người dùng có thể tải về trên Ubuntu 16.04

Giới thiệu

FTP viết tắt của File Transfer Protocol (Giao Thức Truyền Tập Tin), là một giao thức mạng được sử dụng rộng rãi để chuyển tập tin giữa người dùng và máy chủ. Nó đã được thay thế bằng những cách nhanh hơn, an toàn hơn và thuận tiện hơn trong việc cung cấp tập tin. Nhiều người dùng bình thường muốn tải trực tiếp từ trình duyệt của họ với https và người dùng sử dụng dòng lệnh thích sử dụng giao thức bảo mật chẳng hạn như scp hoặc sFTP.

FTP thường được sử dụng để hô trợ ứng dụng kế thừa và tiến trình công việc với yêu cầu đặc biệt. Nếu bạn có lựa chọn giao thức nào để sử dụng, nên quan tâm tới những lựa chọn hiện đại hơn. Khi bạn thực sự cần FTP vsftpd là một lựa chọn tuyệt vời. Tối ưu cho bảo mật, hiệu năng và tin cậy, vsftpd đưa ra bảo vệ liên quan đến lỗi bảo mật đã phát hiện với máy chủ FTP và trên nhiều nhánh Linux .

Trong hướng dẫn này, chúng tôi sẽ chỉ ra làm thế nào để thiết đặt vsftpd cho người dùng ẩn danh tải về sử dụng FTP với nhiều tập tin được chia sẻ. Thay vì sử dụng FTP để quản lý tập tin, người dùng với quyền sudo để sử dụng scp, sFTP hay bất cứ giao thức bảo mật nào lựa chọn để chuyển và bảo trì tập tin.

Bước một – Cài đặt vsftpd

Chúng ta sẽ bắt đầu với việc cập nhật danh sách gói cài đặt và cài đặt vsftpd:

$ sudo apt update

$ sudo apt install vsftpd

Khi việc cài đặt hoàn thành, chúng ta sẽ chép tập tin cấu hình để có thể khởi động với cấu hình trống, lưu tập tin gốc để dự phòng.

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

Với tập tin dự phòng ở đó, chúng ta sẵn sàng để cấu hình Firewall

Bước hai – Mở Firewall

Đầu tiên chúng ta kiểm tra tình trạng Firewall xem đã được kích hoạt hay chưa, để xem những gì được phép,để cho việc kiểm tra cấu hình không bị firewall chặn lại.

$ sudo ufw status

Trường hợp của tôi bạn có thể thấy

Output
Status: active

To Action  From
— ——  —-
OpenSSH ALLOW   Anywhere
OpenSSH (v6)   ALLOW   Anywhere (v6)

Bạn có thể có những quy tắc ở đây hoặc là không có cái nào, chỉ có ssh là được phép, vì vậy chúng ta cần thêm quy tắc cho FTP. Với nhiều ứng dụng, bạn có thể sử dụng sudo ufw all list và kích hoạt chúng bằng tên, nhưng FTP không nằm trong số đó. Bởi vì ufw cũng kiểm tra /etc/services cho cổng và giao thức kết nối của dịch vụ, chúng ta vẫn có thể thêm FTP bằng tên. Chúng ta cần cả hai ftp-data trên cổng 20 và ftp(cho dòng lệnh) trên cổng 21

sudo ufw allow ftp-data

sudo ufw allow ftp

sudo ufw status

Bây giờ quy tắc firewall của chúng ta sẽ giống vậy:

Output
Status: active

To Action  From
— ——  —-
OpenSSH  ALLOW   Anywhere
21/tcp ALLOW   Anywhere
20/tcp ALLOW   Anywhere

OpenSSH (v6)   ALLOW   Anywhere (v6)
21/tcp (v6)ALLOW   Anywhere (v6)
20/tcp (v6)ALLOW   Anywhere (v6)

Với vsftpd được cài đặt và các cổng cần thiết được mở

Bước ba – Chuẩn bị không gian cho tập tin

Đầu tiên, chúng ta sẽ tạo một thư mục nơi sẽ được chứa tập tin, sử dụng cờ -p để tạo ra đường dẫn ngay lập tức. Cấu trúc thư mục sẽ cho phép bạn giữ tất cả các thư mục FTP cùng nhau và sau đó thêm thư mục khác được chứng thực.

$ sudo mkdir -p /var/ftp/pub

Tiếp theo, chúng ta sẽ thiết lập quyền trên thư mục thành nobody:nogroup. Sau đó sẽ cấu hình máy chủ FTP để hiển thị tất cả tập tin thuộc về người dùng và nhóm ftp.

$ sudo chown nobody:nogroup /var/ftp/pub

Cuối cùng, chúng ta sẽ tạo một tập tin trong thư mục để kiểm tra.

$ echo “vsftpd test file” | sudo tee /var/ftp/pub/test.txt

Với tập tin chung một chỗ, chúng ta sẵn sàn cấu hình vsftpd

Bước bốn – Cấu hình truy cập ẩn danh.

Chúng ta thiết lập cho users với quyền sudo để duy trì tập tin được sử dụng rộng rãi. Để làm điều này, chúng ta sẽ cấu hình vsftpd để cho phép tài khoản ẩn danh tải về. Chúng ta sẽ phải cần người quản trị tập tin sử dụng scp , sftp hoặc bất cứ kết nối bảo mật nào khác để duy trì tập tin, vì vậy chúng ta sẽ không kích hoạt tải lên tập tin qua FTP

Tập tin cấu hình bao gồm một vài trong nhiều cấu hình của vsftpd.

Chúng ta sẽ bắt đầu bằng cách thay đổi một trong những cấu hình đã sét đó:

$ sudo nano /etc/vsftpd.conf

Tìm giá trị dưới đây và biên tập lại giống như bên dưới:

. . .
# Allow anonymous FTP? (Disabled by default).
anonymous_enable=YES
#

We’ll set the local_enable setting to “NO” because we’re not going to allow users with local accounts to upload files via FTP. The comment in the configuration file can be a little confusing, too, because the line is uncommented by default.
# Uncomment this to allow local users to log in.
local_enable=NO
. . .

Thêm vào một số thay đổi với cấu hình hiện tại :

Thêm thiết này này vào tập tin cấu hình. Chúng không phụ thuộc vào vị trí cho nên bạn có thể thêm vào bất cứ chỗ nào trong tập tin.

#
# Point users at the directory we created earlier.
anon_root=/var/ftp/
#
# Stop prompting for a password on the command line.
no_anon_password=YES
#
# Show the user and group as ftp:ftp, regardless of the owner.
hide_ids=YES
#
# Limit the range of ports that can be used for passive FTP
pasv_min_port=40000
pasv_max_port=50000

Sau khi hoàn thành , bạn thoát ra và lưu lại. Khởi động lại tiến trình đang chạy với lệnh:

$ sudo systemctl restart vsftpd

systemctl không hiện ra kết quả xuất ra của tất cả lệnh quản lý dịch vụ, vậy nên nếu muốn bạn có thể kiểm tra đã khởi động thành công chưa với lệnh:

$ sudo systemctl status vsftpd

Nếu những dòng cuối xuất ra tương tự vậy thì bạn đã khởi động lại thành công:

Output
Aug 17 17:49:10 vsftpd systemd[1]: Starting vsftpd FTP server…
Aug 17 17:49:10 vsftpd systemd[1]: Started vsftpd FTP server.

Vậy là xong, bây giờ chúng ta có thể tiến hành kiểm tra.

Bước năm – Kiểm tra truy cập nặc danh

Từ trình duyệt web nhập vào: ftp://ip_máy_chủ_của_bạn

ftp://203.0.113.0

Nếu mọi thứ đúng như bạn cấu hình, bạn sẽ thấy thư mục pub:

anonftp-pub.png

Bạn cũng có thể truy cập vào pub, kiểm tra test.txt, chuột phải và lưu xuống

anonftp-test1.png

Bạn cũng có thể kiểm tra từ dòng lệnh, nơi có thể trả về nhiều thông tin về kết nối của bạn. Chúng ta sẽ ftp đến máy chủ ở passive mode, với cờ -p trên hầu hết dòng lệnh của ngừoi dùng. Passive mode cho phép tránh thay đổi cấu hình local firewall để cho phép máy chủ và máy trạm kết nối nhau.

ftp -p 203.0.113.0

Khi màn hình hiện lên nhập vào user, bạn có thể nhập vào một trong hai “ftp” hoặc “anonymous ”. Chúng ta sẽ nhập vào ngắn gọn ftp

Connected to 203.0.113.0.
220 (vsftpd 3.0.3)
Name (203.0.113.0:21:sammy): ftp

Sau khi nhập Enter , bạn sẽ thấy như sau:

Output

230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

Chắc chắn rằng passive mode hoạt động như mong đợi:

ftp> ls

Output
227 Entering Passive Mode (45,55,187,171,156,74).
150 Here comes the directory listing.
drwxr-xr-x    2 ftp      ftp          4096 Aug 17 19:30 pub
226 Directory send OK.

Với tài khoản anonymous, bạn cũng có thể chuyển tập tin về máy của bạn với lệnh get

ftp> cd pub

ftp> get test.txt

Output

ftp> get test.txt
227 Entering Passive Mode (45,55,187,171,156,73).
150 Opening BINARY mode data connection for test.txt (14 bytes).
226 Transfer complete.
16 bytes received in 0.0121 seconds (1325 bytes/s)

Phần hiện thị trả về cho biết là bạn đã hoàn thành tải tập tin về. Chúng tôi muốn chắc rằng tài khoản anonymous không có khả năng chiếm tập tin trên hệ thống, để kiểm tra chúng ta quay trỏ lại thêm một tập tin giống vậy nhưng với tên khác.

ftp> put test.txt upload.txt

Output
227 Entering Passive Mode (104,236,10,192,168,254).
550 Permission denied.

Bây giờ chúng ta chắc chắn được điều này,và chuyển sang bước tiếp theo.

Bước sáu – Thử kết nối như một User

Bạn có thể muốn chắc chắn rằng không thể kết nối như một ngừời dùng với một tài khoản local khi thiết đặt này không mã hóa chứng thực đăng nhập. Thay vì nhập vào “ftp” hay “anonymous” khi được hỏi đăng nhập , sử dụng tên user khác :

ftp -p 203.0.113.0

Output
Connected to 203.0.113.0:21.
220 (vsFTPd 3.0.3)
Name (203.0.113.0:21:your_user)
530 This FTP server is anonymous only.
ftp: Login failed.
ftp>

Việc kiểm tra này xác nhận rằng hệ thống chỉ cho phép anonymous tải về.

Comments

comments