Cách thiết lập vsftpd cho Tải xuống ẩn danh trên Ubuntu 16.04
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 file giữa client và server . Kể từ đó, nó đã được thay thế bằng các cách phân phối file nhanh hơn, an toàn hơn và thuận tiện hơn. Nhiều user Internet thông thường mong đợi tải trực tiếp từ trình duyệt web của họ bằnghttps
và user dòng lệnh có nhiều khả năng sử dụng các giao thức an toàn như scp
hoặc sFTP . FTP thường được sử dụng để hỗ trợ các ứng dụng kế thừa và quy trình làm 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 sẽ sử dụng, hãy xem xét khám phá các tùy chọn hiện đại hơn. Tuy nhiên, khi bạn cần FTP, vsftpd là một lựa chọn tuyệt vời. Được tối ưu hóa về bảo mật, hiệu suất và độ ổn định, vsftpd cung cấp khả năng bảo vệ mạnh mẽ chống lại nhiều vấn đề bảo mật được tìm thấy trong các server FTP khác và là mặc định cho nhiều bản phân phối Linux.
Trong hướng dẫn này, ta sẽ chỉ cho bạn cách cài đặt vsftpd cho trang download FTP ẩn danh nhằm phân phối rộng rãi các file công khai. Thay vì sử dụng FTP để quản lý file , user local có quyền sudo
được mong đợi sử dụng scp
, sFTP
hoặc bất kỳ giao thức an toàn nào khác mà họ chọn để truyền và duy trì file .
Yêu cầu
Để làm theo hướng dẫn này, bạn cần :
- Server Ubuntu 16.04 với user không phải root có quyền
sudo
: Bạn có thể tìm hiểu thêm về cách cài đặt user có các quyền này trong hướng dẫn Cài đặt server ban đầu với Ubuntu 16.04 của ta .
Khi bạn đã có server tại chỗ, bạn đã sẵn sàng bắt đầu.
Bước 1 - Cài đặt vsftpd
Ta sẽ bắt đầu bằng cách cập nhật danh sách gói của bạn và cài đặt daemon vsftpd
:
- sudo apt-get update
- sudo apt-get install vsftpd
Khi quá trình cài đặt hoàn tất, ta sẽ sao chép file cấu hình để có thể bắt đầu với cấu hình trống, lưu bản root làm bản backup .
- sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig
Với một bản backup cấu hình tại chỗ, ta đã sẵn sàng cấu hình firewall .
Bước 2 - Mở firewall
Trước tiên, hãy kiểm tra trạng thái firewall để xem nó có được bật hay không và nếu có, hãy xem những gì hiện được phép để khi đến thời điểm kiểm tra cấu hình, bạn sẽ không gặp phải các luật firewall đang chặn bạn.
- sudo ufw status
Trong trường hợp của ta , ta thấy như sau:
OutputOutput Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)
Bạn có thể có các luật khác hoặc không có luật firewall nào cả. Trong ví dụ này, chỉ cho phép lưu lượng ssh
, vì vậy ta cần thêm các luật cho lưu lượng FTP.
Với nhiều ứng dụng, bạn có thể sử sudo ufw app list
dụng sudo ufw app list
và kích hoạt chúng theo tên, nhưng FTP không phải là một trong số đó. Vì ufw cũng kiểm tra / etc / services cho cổng và giao thức của một dịch vụ, ta vẫn có thể thêm FTP theo tên. Ta cần cả ftp-data
trên cổng 20 và ftp
(cho các lệnh) trên cổng 21:
- sudo ufw allow ftp-data
- sudo ufw allow ftp
- sudo ufw status
Bây giờ các luật firewall của ta trông giống như:
OutputStatus: 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 đã mở, ta đã sẵn sàng để tiếp tục.
Bước 3 - Chuẩn bị không gian cho file
Đầu tiên, ta sẽ tạo folder mà ta dự định lưu trữ các file , sử dụng cờ -p
để tạo folder trung gian. Cấu trúc folder sẽ cho phép bạn giữ tất cả các folder FTP cùng nhau và sau đó thêm các folder khác yêu cầu xác thực:
- sudo mkdir -p /var/ftp/pub
Tiếp theo, ta sẽ đặt quyền folder thành nobody:nogroup
. Sau đó, ta sẽ cấu hình server FTP để hiển thị tất cả các file do user và group ftp sở hữu.
- sudo chown nobody:nogroup /var/ftp/pub
Cuối cùng, ta sẽ tạo một file trong folder để thử nghiệm sau.
- echo "vsftpd test file" | sudo tee /var/ftp/pub/test.txt
Với file mẫu này, ta đã sẵn sàng để cấu hình daemon vsftpd.
Bước 4 - Cấu hình quyền truy cập ẩn danh
Ta đang cài đặt để user có quyền sudo
duy trì file để phân phối rộng rãi cho công chúng. Để thực hiện việc này, ta sẽ cấu hình vsftpd
để cho phép download ẩn danh. Ta hy vọng administrator file sử dụng scp
, sftp
hoặc bất kỳ phương pháp bảo mật nào khác để duy trì file , vì vậy ta sẽ không cho phép tải file lên qua FTP.
Tệp cấu hình chứa một số tùy chọn cấu hình cho vsftpd.
Ta sẽ bắt đầu bằng cách thay đổi những cái đã được cài đặt :
- sudo nano /etc/vsftpd.conf
Tìm các giá trị sau và chỉnh sửa chúng để chúng trùng với các giá trị 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 . . .
Ngoài việc thay đổi cài đặt hiện có, ta sẽ thêm một số cấu hình bổ sung.
Lưu ý: Bạn có thể tìm hiểu về đầy đủ các tùy chọn bằng lệnh man vsftpd.conf
.
Thêm các cài đặt này vào file cấu hình. Chúng không phụ thuộc vào thứ tự, vì vậy bạn có thể đặt chúng ở bất cứ đâu trong file .
# # 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 đang sử dụng UFW, các cài đặt này hoạt động như hiện tại. Nếu bạn đang sử dụng Iptables , bạn có thể cần thêm luật để mở các cổng bạn chỉ định giữa pasv_min_port
và pasv_max_port
.
Sau khi chúng được thêm, hãy lưu file . Sau đó, khởi động lại daemon bằng lệnh sau:
- sudo systemctl restart vsftpd
systemctl
không hiển thị kết quả của tất cả các lệnh quản lý dịch vụ, vì vậy nếu bạn muốn chắc chắn rằng mình đã thành công, hãy sử dụng lệnh sau:
- sudo systemctl status vsftpd
Nếu dòng cuối cùng cho biết trông giống như sau, 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ờ ta đã sẵn sàng để kiểm tra công việc của bạn .
Bước 5 - Kiểm tra quyền truy cập ẩn danh
Từ trình duyệt web, nhập ftp: // theo sau là địa chỉ IP của server của bạn .
ftp: // 203.0.113.0
Nếu mọi thứ hoạt động như mong đợi, bạn sẽ thấy folder pub
:
Bạn cũng có thể nhấp vào pub
, xem test.txt
, sau đó nhấp chuột phải để lưu file .
Bạn cũng có thể kiểm tra từ dòng lệnh, điều này sẽ cung cấp nhiều phản hồi hơn về cấu hình của bạn. Ta sẽ ftp tới server ở chế độ thụ động, đây là cờ -p
trên nhiều client dòng lệnh. Chế độ thụ động cho phép user tránh thay đổi cấu hình firewall local để cho phép server và client kết nối.
Lưu ý: Máy khách FTP dòng lệnh root của Windows, ftp.exe
, hoàn toàn không hỗ trợ chế độ thụ động. User Windows có thể cần xem xét một client Windows FTP khác chẳng hạn như WinSCP .
- ftp -p 203.0.113.0
Khi được yêu cầu nhập tên user , bạn có thể nhập “ftp” hoặc “nặc danh”. Chúng tương đương nhau, vì vậy 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ẽ nhận được thông tin sau:
Output 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp>
Đảm bảo rằng chế độ thụ động đang hoạt động như mong đợi:
- 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.
Là user ẩn danh, bạn có thể chuyển file vào máy local của bạn bằng lệnh get
:
- cd pub
- 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 cho bạn biết rằng bạn đã thành công trong việc download file và bạn có thể xem qua để biết rằng file đó nằm trên hệ thống file local của bạn nếu bạn muốn.
Ta cũng muốn chắc chắn rằng những user ẩn danh sẽ không điền vào hệ thống file của ta , vì vậy, để kiểm tra, ta sẽ quay lại và cố gắng đặt lại cùng một file trên server , nhưng với một tên mới:
- put test.txt upload.txt
Output227 Entering Passive Mode (104,236,10,192,168,254). 550 Permission denied.
Bây giờ ta đã xác nhận điều này, ta sẽ thoát khỏi màn hình để chuẩn bị cho bước tiếp theo:
- bye
Bây giờ ta đã xác nhận kết nối ẩn danh đang hoạt động như mong đợi, ta sẽ chuyển sự chú ý của bạn đến những gì sẽ xảy ra khi user cố gắng kết nối.
Bước 6 - Cố gắng kết nối với quyền user
Bạn cũng có thể cần chắc chắn rằng mình không thể kết nối với quyền user có account local vì cài đặt này không mã hóa thông tin đăng nhập của họ. Thay vì nhập “ftp” hoặc “nặc danh” khi bạn được yêu cầu đăng nhập, hãy thử sử dụng user 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>
Các bài kiểm tra này xác nhận bạn cài đặt hệ thống chỉ để download ẩn danh.
Kết luận
Trong hướng dẫn này, ta đã trình bày cách cấu hình vsftpd chỉ cho các bản download ẩn danh. Điều này cho phép ta hỗ trợ các ứng dụng cũ không thể sử dụng các giao thức hiện đại hơn hoặc các url FTP được xuất bản rộng rãi sẽ khó cập nhật. Để tìm hiểu thêm về cách duy trì file , Cách sử dụng SFTP để truyền file an toàn bằng server từ xa có thể hướng dẫn bạn.
Các tin liên quan
Cách triển khai ứng dụng Node.js bằng Terraform trên Ubuntu 14.042016-08-25
Cách cấu hình Cụm Galera với MariaDB 10.1 trên server Ubuntu 16.04
2016-08-19
Cách tạo Mảng RAID với mdadm trên Ubuntu 16.04
2016-08-16
Cách quản lý mảng RAID với mdadm trên Ubuntu 16.04
2016-08-16
Cách thiết lập NFS Mount trên Ubuntu 16.04
2016-08-04
Cách cài đặt và sử dụng Byobu để quản lý thiết bị đầu cuối trên Ubuntu 16.04
2016-08-04
Cách cài đặt và cấu hình Ansible trên Ubuntu 16.04
2016-07-22
Cách cài đặt và cấu hình Sphinx trên Ubuntu 16.04
2016-07-22
Cách triển khai ứng dụng Node.js và MongoDB với Rancher trên Ubuntu 14.04
2016-07-18
Cách cài đặt và sử dụng BaasBox trên Ubuntu 14.04
2016-07-13