Cách cài đặt và cấu hình vsftpd với TLS trên Debian 8 (Jessie)

theanh

Administrator
Nhân viên
Bài viết này giải thích cách thiết lập máy chủ vsftpd hỗ trợ TLS trên Debian 8server và cách truy cập máy chủ FTP bằng FileZilla. FTP là giao thức rất không an toàn theo mặc định vì tất cả mật khẩu và dữ liệu đều được truyền dưới dạng văn bản thuần túy. Bằng cách sử dụng TLS, toàn bộ giao tiếp có thể được mã hóa, do đó làm cho FTP an toàn hơn nhiều.


1 Lưu ý sơ bộ​

Trong hướng dẫn này, tôi sẽ sử dụng tên máy chủ server1.example.com với địa chỉ IP 192.168.1.100. Các thiết lập này có thể khác nhau đối với bạn, vì vậy bạn phải thay thế chúng khi thích hợp. Tôi sử dụng Debian 8 minimal serversetup làm cơ sở cho hướng dẫn này.


2 Cài đặt vsftpd và OpenSSL​

OpenSSL là cần thiết cho TLS; để cài đặt vsftpd và OpenSSL, chúng ta chỉ cần chạy:
Mã:
apt-get -y install vsftpd openssl

3 Tạo chứng chỉ SSL cho TLS​

Để sử dụng TLS, chúng ta phải tạo chứng chỉ SSL. Tôi tạo nó trong /etc/ssl/private - nếu thư mục không tồn tại, hãy tạo nó ngay bây giờ::
Mã:
mkdir -p /etc/ssl/private
chmod 700 /etc/ssl/private
Sau đó, chúng ta có thể tạo chứng chỉ SSL như sau:
Mã:
openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Tên quốc gia (mã gồm 2 chữ cái) [AU]: <-- Nhập tên quốc gia của bạn (ví dụ: "DE").
Tên tiểu bang hoặc tỉnh (họ và tên đầy đủ) [Some-State]:<-- Nhập Tên Tiểu bang hoặc Tỉnh của bạn.
Tên Địa phương (ví dụ: thành phố) []:<-- Nhập Thành phố của bạn.
Tên Tổ chức (ví dụ: công ty) [Internet Widgits Pty Ltd]:<-- Nhập Tên Tổ chức của bạn (ví dụ: tên công ty của bạn).
Tên Đơn vị Tổ chức (ví dụ: phần) []:<-- Nhập Tên Đơn vị Tổ chức của bạn (ví dụ: "Phòng CNTT").
Tên chung (ví dụ: TÊN CỦA BẠN) []:<-- Nhập Tên miền đủ điều kiện của hệ thống (ví dụ: "server1.example.com").
Địa chỉ email []:<-- Nhập Địa chỉ email của bạn.


4 Bật TLS trong vsftpd​

Để bật TLS trong vsftpd, hãy mở /etc/vsftpd.conf...
Mã:
nano /etc/vsftpd.conf
... và thêm hoặc thay đổi các tùy chọn sau:
Mã:
[...]
# Bật SSLssl_enable=YES# Cho phép người dùng ẩn danh để sử dụng kết nối SSL an toànallow_anon_ssl=YES# Tất cả các lần đăng nhập không ẩn danh đều bị buộc phải sử dụng kết nối SSL an toàn để# gửi và nhận dữ liệu trên các kết nối dữ liệu.force_local_data_ssl=YES# Tất cả các lần đăng nhập không ẩn danh đều bị buộc phải sử dụng kết nối SSL an toàn để gửi mật khẩu.force_local_logins_ssl=YES# Cho phép kết nối giao thức TLS v1. Kết nối TLS v1 được ưu tiênssl_tlsv1=YES# Cho phép kết nối giao thức SSL v2. Kết nối TLS v1 được ưu tiênssl_sslv2=NO# Cho phép kết nối giao thức SSL v3. Kết nối TLS v1 được ưu tiênssl_sslv3=NO# Vô hiệu hóa việc tái sử dụng phiên SSL (bắt buộc bởi WinSCP)require_ssl_reuse=NO# Chọn mã hóa SSL nào mà vsftpd sẽ cho phép đối với các kết nối SSL được mã hóa (bắt buộc bởi FileZilla)ssl_ciphers=HIGH# Tùy chọn này chỉ định vị trí của chứng chỉ RSA để sử dụng cho SSL# các kết nối được mã hóa.rsa_cert_file=/etc/ssl/private/vsftpd.pem[...]
Nếu bạn sử dụng force_local_logins_ssl=YES và force_local_data_ssl=YES, thì chỉ cho phép các kết nối TLS (điều này sẽ khóa bất kỳ người dùng nào có máy khách FTP cũ không hỗ trợ TLS); bằng cách sử dụng force_local_logins_ssl=NO và force_local_data_ssl=NO, cả kết nối TLS và không phải TLS đều được phép, tùy thuộc vào những gì máy khách FTP hỗ trợ.

Ngoài các tùy chọn TLS, hãy đảm bảo bạn cũng có các thiết lập sau trong vsftpd.conf của mình để bật đăng nhập không ẩn danh:
Mã:
[...]# Bỏ ghi chú này để cho phép người dùng cục bộ đăng nhập.local_enable=YES## Bỏ ghi chú này để bật bất kỳ hình thức lệnh ghi FTP nào.write_enable=YES## Umask mặc định cho người dùng cục bộ là 077. Bạn có thể muốn thay đổi thành 022,# nếu người dùng của bạn mong đợi điều đó (022 được sử dụng bởi hầu hết các ftpd khác)local_umask=022[...]
Khởi động lại vsftpd sau đó:
Mã:
service vsftpd restart
Vậy là xong. Bây giờ bạn có thể thử kết nối bằng máy khách FTP của mình; tuy nhiên, bạn nên cấu hình máy khách FTP của mình để sử dụng TLS (điều này là bắt buộc nếu bạn sử dụng force_local_logins_ssl=YES và force_local_data_ssl=YES) - hãy xem chương tiếp theo để biết cách thực hiện việc này bằng FileZilla.


5 vsftpd add user​

Trong bước này, chúng ta sẽ thêm một người dùng Linux cục bộ mà chúng ta có thể sử dụng để kết nối. Tôi sẽ tạo một người dùng "till" với mật khẩu "howtoforge". Tất cả người dùng FTP sẽ có thư mục home của họ trong mkdir /var/ftproot, vì vậy tôi sẽ tạo thư mục này trước.
Mã:
mkdir /var/ftproot
Sau đó thêm người dùng bằng lệnh:
Mã:
adduser --home /var/ftproot/till till
Lệnh adduser sẽ yêu cầu mật khẩu người dùng và một số thông tin chi tiết khác
Mã:
root@server1:/# adduser --home /var/ftproot/till till
Đang thêm người dùng `till' ...
Đang thêm nhóm mới `till' (1001) ...
Đang thêm người dùng mới `till' (1001) với nhóm `till' ...
Đang tạo thư mục home `/var/ftproot/till' ...
Đang sao chép tệp từ `/etc/skel' ...
Nhập mật khẩu UNIX mới:
 
Back
Bên trên