Hôm nay mình sẽ hướng dẫn cho các bạn cách làm thế nào để dựng FTP server trên Ubuntu VPS. Vsftpd server là cách được công nhận rộng rãi, nhanh nhất và an toàn nhất để bảo mật FTP cho những nền tảng giống với UNIX.
FTP (File Transfer Protocol) là cách để gửi và nhận files qua kết nối mạng. Nhờ vào framework client/server kết nối bảo mật SSL/TLS, FTP cho phép người dùng chia sẽ (và nhận) file từ xa một cách an toàn, hiệu quả, và đáng tin cậy (sử dụng giao thức TCP/IP).
FTP Functions hoạt động giống với HTTP hoặc SMTP; điểm khác biệt là nó chịu trách nhiệm truyền tải file an toàn giữa người gửi và người nhận. Bài hướng dẫn này sẽ chỉ bạn cách thiết lập FTP server trên Ubuntu 16.04.
Đối với lĩnh vực Camera giám sát, bạn có thể dùng giao thức FTP để truyền dữ liệu video, hình ảnh từ thiết bị ghi hình đến Server để lưu trữ hoặc xử lý phát triển. Xem cách cài đặt truyền dữ liệu FTP tại đây.
Bước 1 – Cài đặt Vsftpd
Đầu tiên, hãy cập nhật các gói sản phẩm trước khi tiến hành cài đặt vsftpd daemon. Để bắt đầu, hãy chạy lệnh sau:
sudo apt-get update
Đợi tiến trình kết thúc, sau đó bạn sẽ nhận được thông báo sau:
Sau đó thực hiện lệnh sau để cài vsftpd daemon:
sudo apt-get install vsftpd
Bạn sẽ được hỏi xác nhân, nhấn Y để đồng ý rồi nhấn Enter để bắt đầu
Sau khi cài đặt hoàn tất, hãy backup file gốc để chúng ta có thể bắt đầu với một file cấu hình trống:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.original
Bây giờ chúng ta đã sẳn sàng cho bước tiếp theo để cấu hình firewall.
Bước 2 – Cho phép FTP traffic qua tường lửa
Để cho phép Ubuntu FTP server giao tiếp ra ngoài, bạn cần phải cho phép nó khỏi bị chặn bởi tường lửa. Hãy xem tường lửa có được kích hoạt chưa bằng cách dùng lệnh sau:
sudo ufw status
Nếu bạn thấy thông báo này:
ufw: command not found
Có nghĩa là tường lửa chưa được bật và bạn có thể làm tiếp bước tiếp theo.
Tuy nhiên, nếu kết quả hiển thị khác, với một số quy tắc đã được định nghĩa rồi hoặc một thông báo là tưởng lửa đang active (hoạt động), bạn sẽ phải xác định xem kết nối FTP có hoạt động không. Hãy tiếp tục và mở port 20 và 21 cho kết nối FTP; port 40000-50000 đã được dành riêng cho một số port thụ động có thể sẽ được cấu hình trong file cấu hình và port 990 sẽ được dùng khi TLS được kích hoạt. Để làm việc này hãy thực hiện lệnh sau:
sudo ufw allow 20/tcp sudo ufw allow 21/tcp sudo ufw allow 990/tcp sudo ufw allow 40000:50000/tcp
Giờ bạn hãy tiếp tục xem tình trạng firewall:
sudo ufw status
Kết quả sẽ tương tự như sau:
Output Status: active To Action From -- ------ ---- 990/tcp ALLOW Anywhere 20/tcp ALLOW Anywhere 21/tcp ALLOW Anywhere 40000:50000/tcp ALLOW Anywhere 20/tcp (v6) ALLOW Anywhere (v6) 21/tcp (v6) ALLOW Anywhere (v6) 990/tcp (v6) ALLOW Anywhere (v6) 40000:50000/tcp (v6) ALLOW Anywhere (v6)
Vậy giờ bạn đã có tất cả các port cầnt hiết được mở, bạn có thể tiếp tục ở bước tiếp theo.
Bước 3 – Tạo thư mục người dùng
Tại bước 3 này trong quá trình cài đặt Ubuntu FTP server, chúng tôi sẽ cần bạn chọn người dùng cho việc truy cập FTP. Để làm được vậy, chúng tôi sẽ tạo một user mới. Để tạo user mới, bạn hãy thực hiện lệnh sau:
sudo adduser alex
Khi được hỏi, hãy điền mật khẩu thành viên và điền vào các thông tin chi tiết khác. Lý tưởng nhất là FTP cần phải hạn chế để cho truy cập vào thư mục nhất định thôi, vì lý do an toàn. Vsftpd sử dụng chroot jails để làm việc này. Với việc kích hoạt chroot, một local user sẽ bị hạn chế vào thư mục home của họ mặc định. Cũng vì vậy, có thể vì lý do bảo mật của vsftpd, uesr có thể không ghi được vào trong thư mục này. Chúng ta sẽ không vô hiệu quyền ghi dữ liệu khỏi thư mục home, mà thay vào đó, chúng ta sẽ tạo một thư mục FTP hoạt động như là chroot với quyền ghi dữ liệu được kích hoạt, sẽ chịu trách nhiệm cho việc giữ các file được chia sẽ. sử dụng lệnh này để tạo một thư mục FTP:
sudo mkdir /home/alex/ftp
Chọn ownership bằng lệnh sau:
sudo chown nobody:nogroup /home/alex/ftp
Cuối cùng, bỏ quyền ghi cho thư mục đó:
sudo chmod a-w /home/alex/ftp
Giờ hãy dùng lệnh sau để xác nhận lại phân quyền:
sudo ls -la /home/alex/ftp
Kết quả sẽ tương tự như sau:
total 8 dr-xr-xr-x 2 nobody nogroup 4096 Jun 29 11:32 . drwxr-xr-x 3 alex alex 4096 Jun 29 11:32 ..
Ở bước tiếp theo, chúng ta sẽ tạo file chứa thư mục và phân quyền sở hữu:
sudo mkdir /home/alex/ftp/files sudo chown alex:alex /home/alex/ftp/files
Cuối cùng, thêm một file test vào thư mục này để thử nghiệm kết quả::
echo "vsftpd sample file" | sudo tee /home/alex/ftp/files/sample.txt
Bước 4 – Cấu hình vsftpd
Bước tiếp theo là thiết lập FTP server trên Ubuntu VPS, chúng tôi sẽ cấu hình vsftpd và kết nối FTP. Trong bài hướng dẫn này, chúng tôi sẽ cho phép một người dùng duy nhất kết nối với FTP sử dụng tài khoản local shell. 2 điểm cần thiết để cấu hình đã được đặt sẵn trong file cấu hình (vsftpd.conf). Trước tiên bạn hãy xác nhận file cấu hình có cài đặt giống như chúng tôi đề cập ở trên chưa, bằng cách sử dụng nano command:
sudo nano /etc/vsftpd.conf
. . . # Allow anonymous FTP? (Disabled by default). anonymous_enable=NO # # Uncomment this to allow local users to log in. local_enable=YES . . .
Trong cùng một file, chúng tôi sẽ loại bỏ # và kích hoạt write_enable:
. . . write_enable=YES . . ..
Chroot cũng sẽ được bỏ dấu ghi chú để đảm bảo người dùng kết nối qua FTP chỉ có quyền truy cập vào thư mục cho phép:
. . . chroot_local_user=YES . . .
Một vài giá trị mới sẽ cần thêm bằng tay. Bạn có thể dễ dàng dán vào cuối file. Đầu tiên user_sub_token sẽ cần được thêm vào đường dẫn thư mục local_root. Việc này sẽ cho phép file cấu hình hoạt động được với user hiện tại và các user khác nếu được thêm sau này:
user_sub_token=$USER local_root=/home/$USER/ftp
Để đảm bảo đủ số lượng kết nối, chúng ta sẽ hạn chế số port được dùng trong file cấu hình như sau:
pasv_min_port=40000 pasv_max_port=50000
Trong bài hướng dẫn này, chúng tôi sẽ cho phép truy cập theo từng trường hợp cụ thể vì vậy chúng tôi sẽ cấu hình cho phép những user nào được gán quyền mới được truy cập trong danh sách những user có thể truy cập như sau:
userlist_enable=YES userlist_file=/etc/vsftpd.userlist userlist_deny=NO
Flag userlist_deny chịu trách nhiệm xử lý logic này; khi đặt thành “NO”, chỉ những user được chọn trong danh sách có quyền truy cập. Khi hoàn tất, click CTRL+X và xác nhận thay đổi.
Cuối cùng, chúng tôi sẽ tạo và thêm user vào file:
echo "alex" | sudo tee -a /etc/vsftpd.userlist
Kiểm tra user có đang hoạt động không bằng lệnh sau:
cat /etc/vsftpd.userlist
Kết quả sẽ là “alex”, theo hình là alex đã được thêm vào server Ubuntu:
Khởi động lại daemon bằng câu lệnh sau để tải lên thay đổi:
sudo systemctl restart vsftpd
Bước 5 – Bảo mật FTP
Mặc định, FTP sẽ không thực hiện mã hóa dữ liệu, vì vậy chúng ta sẽ thiết lập TTL/SSL để truyền dữ liệu an toàn hơn. Bước đầu tiên, chúng tôi sẽ cần tạo SSL certificate và sử dụng nó cho Ubuntu FTP server. Để tạo chứng chỉ thực hiện lệnh sau:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Flag days khiến cho chứng chỉ có hiệu lực một năm với khóa private RSA 2048-bit trong cùng một lệnh. Khi hoàn tất, điền hông tin cá nhân phù hợp trong các trường hiện ra.
Sau khi hoàn tất tạo chứng chỉ, mở lại file cấu hình lần nữa:
sudo nano /etc/vsftpd.conf
Ở cuối file sẽ bao gồm 2 dòng bắt đầu với “_rsa”. Đặt dấu ghi chú như sau:
# rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem # rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
Thay vào đó chúng ta sẽ trỏ file cấu hình tới chứng chỉ chúng ta vừa tạo, thêm những dòng sau vào:
rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem
Giờ chúng ta sẽ kích hoạt SSL và đảm bảo chỉ có khách hàng có SSL có thể liên hệ với chúng ta. Đổi giá trị ssl_enable thành YES:
ssl_enable=YES
Bây giờ hãy thêm những dòng sau vì lý do an toàn: (không cho phép kết nối nặc danh qua SSL)
allow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES
Cấu hình server sử dụng TLS:
ssl_tlsv1=YES ssl_sslv2=NO ssl_sslv3=NO
Tại đây chúng ta sẽ thêm 2 lựa chọn. Đầu tiên, tái sử dụng SSL là việc không cần thiết vì nó dẫn tới gãy kết nối FTP do quá nhiều kết nối từ FTP clients. Thứ 2, chúng ta sẽ tăng tính bảo mật cho encryption cipher suits, sẽ dẫn đến khóa dài bằng hoặc hơn 128 bits.
require_ssl_reuse=NO ssl_ciphers=HIGH
Hãy khởi động lại để áp dụng các thay đổi mới:
sudo systemctl restart vsftpd
Tốt lắm! Bây giờ bạn đã cấu hình thành công FTP trên Ubuntu VPS để hoạt động với giao thực SSL/TLS.
Bước 6 – Thử kết nối tới ftp server bằng FileZilla
Ngày nay, hầu hết các FTP clients đều hỗ trợ TLS encryptions, vì vậy hãy kiểm tra thử xem Uuntu có hoạt động hiệu quả như mong muốn không. Để kiểm thử kết nối, hãy sử dụng FileZilla FTP Client. Mở FileZilla, click vào icon Site Manager.
Click vào nút New Site và điền vào thông tin Ubuntu FTP server.
Điền toàn bộ thông tin cần thiết với thông tin Ubuntu FTP server vừa tạo. Vì chúng ta đã cấu hình sử dụng TLS, hãy đánh dấu encryption là explicit FTP over TLS. Kết quả cuối cùng sẽ như sau:
Khi sẵn sàng, hãy click vào nút Connect và màn hình sẽ hiển thị thông tin nhập pass FTP.
Cuối cùng, bạn sẽ cần xác thực SSL certificate của FTP server trên Ubuntu VPS.
Sau khi xác thực, thư mục gốc sẽ hiển thị như hình sau với file mẫu:
Vậy là xong! Bây giờ bạn đã có thể thực thi thao tác chuyển dữ liệu từ máy tính của bạn sang Ubuntu FTP server và ngược lại.
Lời kết
Trong bài hướng dẫn này, chúng tôi đã chỉ bạn từng bước một từ việc tạo một user local đến truyền dữ liệu an toàn giữa FTP client và Ubuntu FTP server với SSL/TLS. Chúng tôi cũng đã kiểm tra kết quả cuối cùng bằng FileZilla để chắc rằng mọi thứ hoạt động ổn định.
Nguồn: https://www.hostinger.vn/huong-dan/lam-nao-de-dung-ftp-server-tren-ubuntu-vps