Hướng dẫn cài đặt máy chủ FTP với VSFTPD trên Ubuntu 20.04
Bạn không sử dụng Ubuntu 20.04?
Xem bài viết cho các distro khácGiới thiệu
FTP là chữ viết tắt của File Transfer Protocol đây là một giao thức giúp chúng ta dễ dàng trao đổi các dữ liệu giữa client với server và ngược lại. Với FTP, chúng ta sẽ có quyền quản lý toàn bộ các dữ liệu dạng tập tin và thư mục có trên server ngoại trừ database.
Trong bài viết này sẽ hướng dẫn cách cài đặt máy chủ FTP với vsftpd
trên Ubuntu 20.04 có sử dụng SSL/TLS.
Cập nhật hệ thống
Để đảm bảo rằng tất cả các phụ thuộc của vsftpd
đều được cập nhật, hãy thực thi lệnh bên dưới:
Trong quá trình cập nhật hệ thống chúng ta chờ từ 5 phút đến 15 phút.
Cài đặt vsftpd
Chúng ta thực thi lệnh bên dưới để tiến hành cài đặt vsftpd
:
Sau khi cài đặt thành công chúng ta có thể kiểm tra version của vsftpd
như sau:
Chúng ta tiến hành thực thi lệnh sau để vsftpd
có thể khởi động cùng với hệ thống.
Tiến hành kiểm tra trạng thái của vsftpd
:
Cấu hình firewall
Đối với hệ điều hành Ubuntu thì firewall UFW là firewall mặc định. Do đó, chúng ta cần phải cấu hình firewall UFW để mở port cho FTP nên trước hết bạn hãy kiểm tra trạng thái hiện tại:
Thực hiện mở các port 20 (FTP command port), 21 (FTP data port), 990 (TLS FTP data port) và dải port 39000-40000
bằng cách thực hiện các câu lệnh sau:
Tiến hành kiểm tra kết quả sau khi đã mở port:
Cấu hình vsftpd
Sau khi đã tiến hành mở các port cần thiết trên firewall chúng ta sẽ tiến hành cầu hình vsftpd
bằng cách thực hiện chỉnh 1 số giá trị trong file /etc/vsftpd.conf
bằng cách sử dụng trình soạn thảo quen thuộc.
Tiếp đến, tìm đến các dòng sau để thay đổi và chỉnh sửa như sau:
Tìm đến dòng local_enable
thay đổi giá trị thành yes
, dòng này có nghĩa là chúng ta sẽ cho phép các user nội bộ login qua ftp
Tiếp theo cần giới hạn người dùng chỉ có thể thao tác trên thư mục cụ thể.
Chúng ta có thể cho phép quyền ghi để có thể kích hoạt chức năng upload trên FTP Server.
Do vsftpd
có thể sử dụng bất kì port nào cho các kết nối passive FTP. Vì vậy nên chúng ta thực hiện cấu hình minimum port
và maximum port
với dòng cấu hình sau:
Ngoài ra chúng ta cũng có thể giới hạn những người dùng nào có thể đăng nhập vào FTP Server, thêm đoạn cấu hình sau:
Sau đó thực hiện lưu file lại và thoát ra. Ta dùng lệnh sau để khởi động lại dịch vụ vsftpd
.
Tạo và phân quyền user
Để thêm người dùng mới vào máy chủ FTP, chúng ta thao tác như sau:
Do khi nảy chúng ta có tiến hành cấu hình giới hạn người dùng được phép đăng nhập FTP server vì vậy cầm thêm người dùng mới tạo vào danh sách người dùng của FTP:
Sau khi thêm vào danh sách, chúng hãy tạo thư mục và thực hiện phân quyền cho user:
Kiểm tra lại quyền thư mục như sau:
Tạo một thư mục để có thể lưu các file tải lên và phân quyền cho user được phép truy cập thư mục này:
Kiểm tra lại kết quả như sau:
Thực hiện tạo 1 file bên trong thư mục upload.
Thực hiện thêm nội dung cho file này:
Kết nối FTP Client
Đối với hệ điều hành Linux
Chúng ta có thể thực hiện lệnh sau để thực hiện kiểm tra kết nối FTP.
Trong bài hướng dẫn này sẽ kiểm tra như sau:
Kết quả bên trên cho chúng ta thấy người dùng bất kì không thể đăng nhập vào FTP Server. Vì chúng ta đã cấu hình giới hạn những người dùng có thể đăng nhập vào FTP Server.
Chúng ta sẽ sử dụng username và password mà chúng ta đã tạo ở bước trên để tiến hành đăng nhập FTP Server:
Sau khi chúng ta đã login thành công chúng ta. Thực hiện tải xuống file 123hostdemo.txt vừa tạo:
Thực hiện đổi tên file 123hostdemo.txt để xác nhận người dùng được tạo có quyền write:
Thực thi lệnh sau để đóng kết nối FTP:
Trở về máy client chúng ta kiểm tra file 123hostdemo.txt
đã được download về thành công chưa.
Kiểm tra nội dung file:
Đây chính là file mà chúng ta đã tạo ở bước trên tại FTP Server
Quay trở lại FTP Server kiểm tra file khi nảy client upload lên xem kết quả như nào:
Như vậy là việc download và upload file ở client Linux đã thành công.
Đối với hệ điều hành Windows
Với hệ điều hành Windows chúng ta có thể sử dụng các phần mềm như là WinSCP, Cyberduck, FileZilla trong hướng dẫn này sẽ sử dụng FileZilla trên Windows để hướng dẫn việc kết nối FTP Server cũng như download file.
Chúng ta có thể thực hiện tải phần mềm FileZilla
Đây là giao diện của phần mềm FileZilla
Tiếp theo chúng ta cần thực hiện điền Host, Username, Password đây là thông tin FTP Server chúng ta cần kết nối đến:
Kết quả kết nối như trên.
Chúng ta có thể thực hiện download file từ FTP Server về máy tính như sau:
Hoặc chúng ta có thể thực hiện upload file từ máy tính cá nhân lên FTP Server
Như vậy là việc download và upload file ở client Window đã thành công.
Thiết lập LTS
Tại FTP Server
Để đảm bảo an toàn thì FTP cần thực hiện mã hoá kết nối sử dụng LTS vì vậy chúng ta cần phải có một chứng chỉ SSL và cấu hình vsftpd
sử dụng chứng chỉ SSL này.
Chúng ta sẽ sử dụng openssl để tạo chứng chỉ như sau:
Sau khi đã tạo thành công chứng chỉ SSL thì chúng ta cần tiến hành cấu hình vsftpd
sử dụng chứng chỉ SSL bằng cách chỉnh sửa file cấu hình tại /etc/vsftpd.conf
Thực hiện chỉnh sửa đường dẫn sau:
Tiếp tục thay đổi giá trị ssl_enable
thành yes
:
Chúng ta cần thêm một số cấu hình để tăng bảo mật cho SSL:
Sau đó thực hiện lưu file lại và thoát ra. Ta dùng lệnh sau để khởi động lại dịch vụ vsftpd
.
Tại FTP Client
Ở trên chúng ta đã cấu hình mã hoá FTP với SSL/TLS hiện tại chúng ta có thể sử dụng Filezilla để kiểm tra.
Mở Filezilla, chọn Site Manager bên trên:
Chọn tiếp New Site để thêm thông tin FTP Server mới:
Thực hiện điền thông tin FTP Server. Do mặc định port FTP là 21 nên chúng ta có thể để trống ô port.
Lưu ý: Chọn Require explicit FTP over TLS do FTP Server đã được mã hoá TLS.
Nếu kết nối thành công, chúng ta sẽ nhận được cửa sổ như bên dưới. Chọn Always trust this certificate in future sessions để không phải hỏi như lần sau.
Bảo mật vsftpd
Theo như mặc định thì khi tạo một người dùng FTP, nếu không cấu hình giới hạn, thì người dùng đó có thể SSH vào Server. Chính vì vậy, để đảm bảo an toàn chúng ta nên tắt SSH cho những người dùng FTP để nâng cao bảo mật.
Cách 1: Tạo shell script
Tạo một shell script thực thi /bin/ftponly
như bên dưới:
Thêm đoạn shell trên vào /etc/shells
:
Thay đổi đoạn shell của người dùng FTP:
Cách 2: Cấu hình trong dịch vụ ssh
Chúng ta có thể sử dụng trình soạn thảo quen thuộc để cấu hình file /etc/ssh/sshd_config
không cho User FTP truy cập SSH và SFTP bằng cách thực hiện thêm vào dòng sau:
Lưu ý: Không nhập tên người dùng root tại đây hoặc bất kỳ tên người dùng chúng ta sử dụng để truy cập SSH nếu không chúng ta không thể truy cập SSH
Lưu lại file cấu hình và thoát.
Khởi động lại dịch vụ SSH.
Như vậy chúng ta có thể không cho User FTP truy cập SSH và SFTP.
Bài viết trên đã hoàn tất việc cấu hình và cài đặt vsftpd
trên Ubuntu 20.04
Chúc các bạn thành công!
Tính năng đang được phát triển