Hướng Dẫn Cài đặt Máy Chủ FTP Với VSFTPD Trên Ubuntu 20.04
Có thể bạn quan tâm
Giớ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:
bash (root)apt-get update && apt-get upgrade _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:
bash (root)apt install vsftpd -y _Sau khi cài đặt thành công chúng ta có thể kiểm tra version của vsftpd như sau:
bash (root)vsftpd -v _ Kết quảvsftpd: version 3.0.3Chú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.
bash (root)systemctl start vsftpd && systemctl enable vsftpd _Tiến hành kiểm tra trạng thái của vsftpd:
bash (root)systemctl status vsftpd _ Kết quả● vsftpd.service - vsftpd FTP server Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2021-11-29 13:30:41 +07; 10min ago Main PID: 1221 (vsftpd) Tasks: 1 (limit: 4621) Memory: 600.0K CGroup: /system.slice/vsftpd.service └─1221 /usr/sbin/vsftpd /etc/vsftpd.conf Nov 29 13:30:41 ngocdang2 systemd[1]: Starting vsftpd FTP server... Nov 29 13:30:41 ngocdang2 systemd[1]: Started vsftpd FTP server.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:
bash (root)ufw status _ Kết quảStatus: activeThự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:
bash (root)ufw allow 20:21/tcp ufw allow 990/tcp ufw allow 39000:40000/tcp _Tiến hành kiểm tra kết quả sau khi đã mở port:
bash (root)ufw status _ Kết quảStatus: active To Action From -- ------ ---- 20:21/tcp ALLOW Anywhere 990/tcp ALLOW Anywhere 39000:40000/tcp ALLOW Anywhere 20:21/tcp (v6) ALLOW Anywhere (v6) 990/tcp (v6) ALLOW Anywhere (v6) 39000:40000/tcp (v6) ALLOW Anywhere (v6)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:
/etc/vsftpd.confanonymous_enable=YES => anonymous_enable=NOTì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
/etc/vsftpd.conflocal_enable=YESTiế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ể.
/etc/vsftpd.confchroot_local_user=YESChú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.
/etc/vsftpd.confwrite_enable=YESDo 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:
/etc/vsftpd.confpasv_min_port=39000 pasv_max_port=40000Ngoà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:
/etc/vsftpd.confuserlist_enable=YES userlist_file=/etc/vsftpd.userlist userlist_deny=NOSau đó 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.
bash (root)service vsftpd restart _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:
bash (root)adduser demoftp123host _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:
bash (root)echo "demoftp123host" >> /etc/vsftpd.userlist _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:
bash (root)mkdir /home/demoftp123host/ftp chown nobody:nogroup /home/demoftp123host/ftp/ chmod a-w /home/demoftp123host/ftp/ _Kiểm tra lại quyền thư mục như sau:
bash (root)ls -la /home/demoftp123host/ftp/ _ Kết quảtotal 8 dr-xr-xr-x 2 nobody nogroup 4096 Nov 29 15:12 . drwxr-xr-x 3 demoftp123host demoftp123host 4096 Nov 29 15:12 ..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:
bash (root)mkdir /home/demoftp123host/ftp/upload chown demoftp123host:demoftp123host /home/demoftp123host/ftp/upload _Kiểm tra lại kết quả như sau:
bash (root)ls -la /home/demoftp123host/ftp/ _ Kết quảtotal 12 dr-xr-xr-x 3 nobody nogroup 4096 Nov 29 15:17 . drwxr-xr-x 3 demoftp123host demoftp123host 4096 Nov 29 15:12 .. drwxr-xr-x 2 demoftp123host demoftp123host 4096 Nov 29 15:17 uploadThực hiện tạo 1 file bên trong thư mục upload.
bash (root)touch 123hostdemo.txt _Thực hiện thêm nội dung cho file này:
bash (root)echo Hello > 123hostdemo.txt _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.
bash (root)ftp -p IP _Trong bài hướng dẫn này sẽ kiểm tra như sau:
bash (root)ftp -p 103.97.125.162 _ Kết quả220 (vsFTPd 3.0.3) Name (103.97.125.162:root): test 530 Permission denied. Login failed.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.
bash (root)ftp -p 103.97.125.162 _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:
Kết quảConnected to 103.97.125.162. 220 (vsFTPd 3.0.3) Name (103.97.125.162:root): demoftp123host 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files.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:
Kết quảftp> ls 227 Entering Passive Mode (103,97,125,162,154,232). 150 Here comes the directory listing. dr-xr-xr-x 3 65534 65534 4096 Nov 29 15:17 ftp 226 Directory send OK. ftp> cd ftp 250 Directory successfully changed. ftp> ls 227 Entering Passive Mode (103,97,125,162,153,221). 150 Here comes the directory listing. drwxr-xr-x 2 1002 1003 4096 Nov 29 22:01 upload 226 Directory send OK. ftp> cd upload 250 Directory successfully changed. ftp> ls 227 Entering Passive Mode (103,97,125,162,154,157). 150 Here comes the directory listing. -rw-r--r-- 1 0 0 6 Nov 29 22:01 123hostdemo.txt ftp> get 123hostdemo.txt local: 123hostdemo.txt remote: 123hostdemo.txt 227 Entering Passive Mode (103,97,125,162,153,75). 150 Opening BINARY mode data connection for 123hostdemo.txt (6 bytes). 226 Transfer complete. 6 bytes received in 0.00 secs (60.4059 kB/s) ftp>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:
Kết quảput 123hostdemo.txt client123hostdemo.txt local: 123hostdemo.txt remote: client123hostdemo.txt 227 Entering Passive Mode (103,97,125,162,154,50). 150 Ok to send data. 226 Transfer complete. 6 bytes sent in 0.00 secs (41.5559 kB/s) ftp> ls 227 Entering Passive Mode (103,97,125,162,155,90). 150 Here comes the directory listing. -rw-r--r-- 1 0 0 6 Nov 29 22:01 123hostdemo.txt -rw------- 1 1002 1003 6 Nov 29 22:06 client123hostdemo.txtThực thi lệnh sau để đóng kết nối FTP:
Kết quảftp> exit 221 Goodbye.Trở về máy client chúng ta kiểm tra file 123hostdemo.txt đã được download về thành công chưa.
bash (root)ls -la _ Kết quảtotal 64 -rw-r--r-- 1 root root 6 Nov 29 22:05 123hostdemo.txtKiểm tra nội dung file:
bash (root)cat 123hostdemo.txt _ Kết quảHelloĐâ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:
bash (root)ls -la /home/demoftp123host/ftp/upload _ Kết quảtotal 16 drwxr-xr-x 2 demoftp123host demoftp123host 4096 Nov 29 22:06 . dr-xr-xr-x 3 nobody nogroup 4096 Nov 29 15:17 .. -rw-r--r-- 1 root root 6 Nov 29 22:01 123hostdemo.txt -rw------- 1 demoftp123host demoftp123host 6 Nov 29 22:06 client123hostdemo.txtNhư 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:
bash (root)openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem _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:
/etc/vsftpd.confrsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pemTiếp tục thay đổi giá trị ssl_enable thành yes:
/etc/vsftpd.confssl_enable=YESChúng ta cần thêm một số cấu hình để tăng bảo mật cho SSL:
/etc/vsftpd.confallow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES ssl_tlsv1=YES ssl_sslv2=NO ssl_sslv3=NO require_ssl_reuse=NO ssl_ciphers=HIGHSau đó 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.
bash (root)service vsftpd restart _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:
bash (root)echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' > /bin/ftponly chmod a+x /bin/ftponly _Thêm đoạn shell trên vào /etc/shells:
bash (root)echo "/bin/ftponly" >> /etc/shells _Thay đổi đoạn shell của người dùng FTP:
bash (root)usermod demoftp123host -s /bin/ftponly _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:
/etc/ssh/sshd_configDenyUsers user_nameLư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.
bash (root)service sshd restart _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ừ khóa » Cài đặt Ftp Server Trên Linux
-
Cách Cài đặt FTP Server Trên Ubuntu
-
Hướng Dẫn Cài đặt Và Cấu Hình FTP Server Trên Linux, CentOS ...
-
Cài đặt Và Cấu Hình Vsftpd Làm FTP Server Trên Ubuntu 20.04
-
Cài đặt FTP (Vsftpd) Trên Ubuntu
-
[FTP][Phần 2]Hướng Dẫn Cấu Hình FTP Server Trên CentOS-7 Với ...
-
Cài đặt FTP Server Trên CentOS 7 Với Vsftpd - Technology Diver
-
Cài Đặt Và Cấu Hình FTP Server Trên CentOS 7 | An Ninh Mạng
-
Cách để Thiết Lập Máy Chủ FTP Trên Ubuntu Linux - WikiHow
-
Cài đặt FTP Server - Tài Liệu Hướng Dẫn Sử Dụng Dịch Vụ Hosting ...
-
Hướng Dẫn Cách Cài đặt FTP Server Bằng VSFTPD Trên Centos 8
-
Hướng Dẫn Cài đặt FTP Server Trên CentOS 6 - CLOUD VIỆT
-
Hướng Dẫn Cấu Hình FTP Trên CentOS 7 Bằng VSFTPD - Vietnix
-
Hướng Dẫn Cài đặt FTP Service Trên Centos
-
Trang Chủ - BKNS.VN