FTP là dịch vụ cung cấp cơ chế truyền tin dưới dạng file thông qua mạng tcp. Có nhiều chương trình ftp server sử dụng trên Linux như: Vsftpd, Wu-ftpd, PureFTPd, ProFTPD,... Trong bài viết này HOSTVN sẽ hướng dẫn cài đặt PureFTPD
I/ Cài đặt
Trước tiên, cần kiểm tra xem pure-ftpd đã được cài đặt hay chưa bằng câu lệnh:
rpm -qa | grep pure-ftpd
Nếu chưa có thì các bạn tiến hành cài đặt bằng cách chạy các lệnh sau:
yum -y install epel-release
yum -y install pure-ftpd
Sau khi quá trình cài đặt kết thúc sử dụng lệnh sau để khởi động dịch vụ pure-ftpd
service pure-ftpd start
Kích hoạt pure-ftpd luôn chạy khi khởi động lại hệ thống
chkconfig pure-ftpd on
Kiểm tra trạng thái hoạt động của service pure-ftpd
service pure-ftpd status
Cho phép pure-ftpd đi qua firewall của CentOS 7
firewall-cmd --add-service=ftp --permanent
firewall-cmd --reload
II/ Cấu hình cơ bản pure-ftpd
File cấu hình của dịch vụ pure-ftpd ở /etc/pure-ftpd/pure-ftpd.conf nếu muốn thay đổi cấu hình nào thì mở file này ra và chỉnh sửa
Cũng nhớ rằng mặc định nó chờ trên cổng
yum -y install epel-release
yum -y install pure-ftpd
5 nên cần đảm bảo cổng này được mở thì Client mới kết nối đến được.vi /etc/pure-ftpd/pure-ftpd.conf
Giải thích một số thiết lập cấu hình:
- Không cho phép nặc danh truy cập [cần thiết lập để an toàn]
NoAnonymous yes
- Bật chỉ cho support IP V4
IPV4Only yes
- Bật chỉ cho phép user truy cập trên các thư mục con của user đó
ChrootEveryone yes
Mỗi khi thay đổi cấu hình cần khởi động lại pure-ftpd
yum -y install epel-release
yum -y install pure-ftpd
0Quản lý user của pure-fptd
pure-fptd sử dụng user ảo để cấp quyền truy cập, công cụ làm việc là pure-pw, thông tin lưu tại /etc/pure-ftpd/pureftpd.passwd
Bài hướng dẫn này sẽ chỉ 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 hoặc 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 duy nhất và khá rõ ràng 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 thay vì web page từ máy chủ đến người truy cập, hoặc thay vì là thư điện tử trên mạng internet. 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. Bạn có thể thuê VPS Ubuntu hoặc dùng chính máy tính của bạn với hệ điều hành Ubuntu.
Ghi chú: Mặc dù là bài hướng dẫn cho Ubuntu 16.04. Nhưng bạn có thể áp dụng cùng cách này để tạo FTP server trên Ubuntu 14.04
- Bước 1 – Cài đặt Vsftpd
- Bước 2 – Cho phép FTP traffic qua tường lửa
- Bước 3 – Tạo thư mục người dùng
- Bước 4 – Cấu hình vsftpd
- Bước 5 – Bảo mật FTP
- Bước 6 – Thử kết nối tới ftp server bằng FileZilla
- Lời kết
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 apt-get install vsftpd0
Giờ hãy dùng lệnh sau để xác nhận lại phân quyền:
sudo apt-get install vsftpd1
Kết quả sẽ tương tự như sau:
sudo apt-get install vsftpd2
Ở 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 apt-get install vsftpd3
Cuối cùng, thêm một file test vào thư mục này để thử nghiệm kết quả::
sudo apt-get install vsftpd4
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 apt-get install vsftpd5
sudo apt-get install vsftpd6
Trong cùng một file, chúng tôi sẽ loại bỏ # và kích hoạt write_enable:
sudo apt-get install vsftpd7
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:
sudo apt-get install vsftpd8
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:
sudo apt-get install vsftpd9
Để đả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:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.original0
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:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.original1
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:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.original2
Kiểm tra user có đang hoạt động không bằng lệnh sau:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.original3
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 cp /etc/vsftpd.conf /etc/vsftpd.conf.original4
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 cp /etc/vsftpd.conf /etc/vsftpd.conf.original5
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 apt-get install vsftpd5
Ở cuối file sẽ bao gồm 2 dòng bắt đầu với “_rsa”. Đặt dấu ghi chú như sau:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.original7
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:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.original8
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:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.original9
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]
ufw: command not found0
Cấu hình server sử dụng TLS:
ufw: command not found1
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.
ufw: command not found2
Hãy khởi động lại để áp dụng các thay đổi mới:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.original4
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.
Tác giả
Hai G.
Hải G. là chuyên gia quản lý, vận hành các dịch vụ website. Anh có nhiều năm kinh nghiệm về VPS, Hosting, technical SEO, CMS. Đặc biệt yêu thích WordPress và đã dùng nó hơn 5 năm nay. Sở thích của anh là đọc, viết blog, đi du lịch và tư vấn cho các bạn trẻ khởi nghiệp.