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.
Sau đó, chúng ta có thể tạo chứng chỉ SSL như sau:
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.
... và thêm hoặc thay đổi các tùy chọn sau:
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:
Khởi động lại vsftpd sau đó:
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.
Sau đó thêm người dùng bằng lệnh:
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
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
Mã:
openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
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
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[...]
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[...]
Mã:
service vsftpd restart
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
Mã:
adduser --home /var/ftproot/till till
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: