Hướng dẫn cài đặt vsftpd để download ẩn danh trên Ubuntu 16.04

5 năm trước

 

Giới thiệu

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

FTP thường được sử dụng để hỗ trợ các ứng dụng để lại và luồng công việc với những nhu cầu rất cụ thể. Nếu bạn chọn một giao thức để sử dụng thì hãy xem xét khám phá những lựa chọn hiện đại hơn. Khi bạn cần FTP, tuy nhiên, vsftpd là sự lựa chọn tuyệt vời. Với khả năng tối ưu hoá bảo mật, năng suất và sự ổn định, vsftpd cung cấp khả năng bảo vệ mạnh mẽ chống lại nhiều sự cố bảo mật được tìm thấy trong các máy chủ FTP và là mặc định cho nhiều bản phân phối Linux.

Trong bài hướng dẫn này, chúng tôi sẽ chỉ ra cho bạn cách cài đặt vsftpd để download trang FTP ẩn danh với mục đích phân phối rộng rãi các tệp tin công khai. Thay vì sử dung FTP để quản lí các tệp tin, người dùng cục bộ với quyền sudo được chấp nhận sử dụng scpsFTP, hay bất cứ giao thức bảo mật nào để chuyển và giữ các tệp tin.

ĐIều kiện cần

Để làm theo bài hướng dẫn này bạn cần phải có:

  • Một máy chủ Ubuntu 16.04với người dùng sudo chưa root
  • ​Nếu chưa có Bạn có thể tham khảo tại ViCloud

Khi máy chủ đã sẵn sàng hoạt động thì chúng ta sẽ bắt đầu.

 

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

Chúng ta sẽ bắt đầu update danh sách gói của chúng ta và cài đặt daemon vsftpd:

$ sudo apt-get update 
$ sudo apt-get install vsftpd 

Khi cài đặt thành công, chúng ta sẽ copy file cấu hình để chúng ta có thể bắt đầu với một cấu hình trống đồng thời lưu lại cấu hình cũ để dự phòng.

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

Khi cấu hình dự phòng đã có, chúng ta sẽ bắt đầu tạo cấu hình cho tường lửa.

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

Đầu tiên hãy kiểm tra trạng thái của tường lửa dể xem xem nó đã được bật hay chưa hoặc để để kiểm tra xem những gì hiện tại đang được cho phép nên khi test cấu hình thì tường lửa sẽ không chặn bạn.

$ sudo ufw status

 Trong trường hợp này, chúng ta sẽ thấy:

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

Có lẽ bạn cũng có những quy định khắc hoặc là không có cái nào cả. Trong ví dụ này, duy nhất giao thông ssh mới được cho phép nên chúng ta sẽ cần thêm một vài quy định cho giao thông FTP

Với nhiều ứng dụng , bạn có thể dùng sudo ufw app list và kích hoạt chúng bằng tên nhưng FTP không giống như vật. Bởi vì ufw check /etc/services cho công và giao thức cuả dịch vụ , chúng ta vẫn có thể thêm FTP bằng tên. Chúng ta đều cần ftp-data trên cổng 20 và ftp (cho câu lệnh ) trên cổng 21:

$ sudo ufw allow ftp-data $ sudo ufw allow ftp $ sudo ufw status 

 Quy tắc tường lửa của chúng ta nên như sau:

OutputStatus: active 
To Action From
-- ------ ---- 
OpenSSH ALLOW Anywhere 21/tcp ALLOW Anywhere20/tcp ALLOW Anywhere 
OpenSSH (v6) ALLOW Anywhere (v6) 21/tcp (v6)ALLOW Anywhere (v6)20/tcp (v6)ALLOW Anywhere (v6)

Chúng ta có thể bắt đầu thực hiện khi dã cài đặt vsftpd và mở các cổng cần thiết.

Bước 3 — Chuẩn bị chỗ trống cho các tệp tin

Đầu tiền chúng ta sẽ tạo thư mục để lưu trữ các tệp tin, sử dụng flag -p để tạo thư mục có kích cơ trung bình. Thư mục này sẽ cho phép giữ tất cả các thư mục FTP lại với nhau và sau đó thêm những folder khác yêu cầu chứng thực:

 $ sudo mkdir -p /var/ftp/pub

Tiếp theo, chúng ta sẽ cho phép thư mục đến nobody:nogroup. Sau đó tạo cấu hình cho máy chủ FTP để hiện tất cả các tệp tin đang được sở hữu bởi người dùng và nhóm ftp.

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

Cuối cùng, chúng ta tạo một tệp tin trong thư mục để sau đó sẽ test.

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

Khi tệp mẫu đã sẵn sàng sử dụng chúng ta sẽ bắt đầu tạo cấu hình cho daemon vsftpd.

Bước 4 — Tạo cấu hình truy cập ẩn danh

Chúng ta sẽ cài đặt cho người dùng sudo chưa root để phân phối rộng rãi tệp tin tới mọi người. Để làm như vậy chúng ta sẽ cần tạo cấu hình  vsftpd để cho phép download ẩn danh. Chúng tôi mong các quản trị viên tập tin sử dụng scpsftp hoặc bất kỳ phương pháp bảo mật nào khác để duy trì các tệp, vì vậy chúng tôi sẽ không cho phép upload tệp lên qua FTP.

File cấu hình có một vài  lựa chọn cấu hình cho vsftpd.

Chúng ta sẽ bắt đầu thay đổi cái chúng ta vừa cài:

$ sudo nano /etc/vsftpd.conf 

Tìm giá trị sau rồi chỉnh sửa nó để nó khớp với giá trị bên dưới:

/etc/vsftpd.conf
. . .
# 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. . .

Để thay đổi cài đặt đã có trước đó, chúng ta sẽ đi thêm vài cấu hình bổ sung.

Lưu ý: Bạn có thể tìm hiểu về đầy đủ các tuỳ chọn với câu lệnh man vsftpd.conf

Thêm cài đặt sau vào tệp tin cấu hình. Chúng có thể không theo thứ tự nên bạn có thể đặt chúng 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

Lưu ý: Nếu bạn sử dụng UFW, những cài đặt này sẽ hoạt động như as-is.Nếu bạn dùng Iptables thì có thể bạn sẽ cần thêm một vài quy tắc để mở cổng pasv_min_port và pasv_max_port.

Khi đã được thêm vào, lưu vào đóng file lại. Sau đó khởi động lại daemon với cấu lệnh sau:

 $ sudo systemctl restart vsftpd

systemctl không hiện ra kết quả của các câu lệnh quản lí nên nếu bạn muốn chắc chắn rằng mình đã thành công, dùng câu lệnh sau:

 $ sudo systemctl status vsftpd

Nếu dòng cuối cùng hiện ra như dưới đây thì tức là bạn đã thành công: 

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

Bây giờ chúng ta sẽ kiểm tra công việc của mình.

Bước 5 — Test truy cập ẩn danh

Từ trình duyệt web của bạn, nhập ftp:// sau địa chỉ IP của máy chủ của bạn.

ftp://203.0.113.0

Nếu mọi thứ hoạt động như mong muốn, bạn nên thấy thư mục pub:

Image of the 'pub' folder in a browser

Bạn cũng nên click vào  pub và thấy test.txt sau đó click chuột phải để lưu file.

Image of the 'test.txt' file in a browser

Bạn cũng có thể test từ dòng câu lệnh sẽ cho nhiều feedback hơn về cấu hình của bạn. Chúng ta sẽ ftp tới máy chủ trong passive mode hay nói cách khác dùng flag -p trên nhiều client dòng lệnh. Passive mode cho phép chúng ta tránh thay đổi cấi hình tường lửa cục bộ để cho phép kết nối server và client.

Lưu ý: Máy khách FTP dòng lệnh gốc của Window không hỗ trợ chế độ bị động. Những người dùng Window có thể xem xét một máy khách Window FTP khác như là WinSCP

$ ftp -p 203.0.113.0

Khi được nhắc tên người dùng, bạn có thể nhập "ftp" hoặc "anonymous". Chúng tương đương nhau, vì vậy chúng ta sẽ sử dụng "ftp" ngắn hơn:

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

Sau khi nhấn enter, bạn sẽ thấy:

Output230 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 muốn:

 ftp> ls
Output227 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ì là người dùng ẩn danh, bạn nên chuyển file đến thiết bị cục bộ với câu lệnh get:

 ftp> cd pub
 ftp>get test.txt
Outputftp> 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)

Kết quả này sẽ cho bạn biết rằng bạn đã download thành công tệp này và bạn có thể kiểm tra xem xem nó có trong hệ thống tệp tin cục bộ của bạn không.

Bạn cũng có thể chắc chắn rằng người dùng ẩn danh không thể vào hệ thống tập tin của bạn , nên để kiểm tra chúng ta sẽ quay lại để đặt tệp tin tương tự vềmáy chủ nhưng với một cái tên mới:

 ftp> put test.txt upload.txt 
Output227 Entering Passive Mode (104,236,10,192,168,254). 
550 Permission denied. 

Bởi vì bạn có thể xác nhận điều này, chúng ta sẽ thoát khỏi monitor để cho bước tiếp theo:

 ftp> bye
Bởi vì chúng ta đã xác nhận rằng kết nối ẩn danh hoạt động như mong muốn, chúng ta sẽ chú ý xem điều gì sẽ xảy ra khi người dùng cố kết nối.

Bước 6 — Thử kết nối với tư cách là người dùng.

Có lẽ bạn muốn chắc chắn rằng bạn không thể kết nối với tư cách là người dùng với tài khoản cục bộ bở vì cài đặt này không mã hoá chứng nhận đăng nhập. Thay vì nhập "ftp" hay "anonymous" khi bạn được nhắc đăng nhập, thử dùng người dùng sudo của bạn:

 $ ftp -p 203.0.113.0 
OutputConnected 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>
Kiểm tra này xác nhận rằng bạn cài đặt hệ thống chỉ cho việc download ẩn danh.

Kết luận 

 Bài viết này hướng dẫn cách tạo cấu hình vsftpd chỉ cho việc download ẩn danh. Nó cho phép bạn hỗ trợ các ứng dụng để lại để dùng giao thức hiện đại hơn hoặc để phân phát rộng rãi url FTP khó update.