Bài hướng dẫn này chỉ cách cài đặt và sử dụng FTP với ProFTPd một cách an toàn. FTP không có TLS là một giao thức không an toàn 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. Bài viết này giải thích cách thiết lập ProFTPd với TLS trên máy chủ Ubuntu 16.04, cách thêm người dùng FTP và cách sử dụng FileZilla để kết nối an toàn với TLS.
Vì chúng ta phải chạy tất cả các bước trong hướng dẫn này với quyền root, nên chúng ta có thể thêm chuỗi sudo vào đầu tất cả các lệnh trong hướng dẫn này hoặc chúng ta trở thành root ngay bây giờ bằng cách nhập
Tôi sẽ sử dụng trình chỉnh sửa nano để chỉnh sửa các tệp cấu hình trong hướng dẫn này. Nếu bạn cũng muốn sử dụng nano và chưa cài đặt, hãy chạy lệnh này để cài đặt nano.
Bạn sẽ được hỏi một câu hỏi:
Chạy proftpd: <-- standalone
Vì lý do bảo mật, bạn nên thêm các dòng sau vào /etc/proftpd/proftpd.conf:
Tùy chọn đầu tiên cho phép chroot người dùng FTP vào thư mục gốc của họ và tùy chọn thứ hai cho phép gửi thông báo ServerIdent không chứa bất kỳ thông tin nào về phần mềm, phiên bản hoặc hệ điều hành máy chủ FTP đã sử dụng để kẻ tấn công tiềm ẩn không lấy được các thông tin chi tiết này trên tấm bạc.
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 (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 thông dụng (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à bảo mật các tệp chứng chỉ đã tạo.
... và bỏ chú thích dòng Include /etc/proftpd/tls.conf:
Sau đó mở /etc/proftpd/tls.conf và làm cho nó trông như sau:
Nếu bạn sử dụng TLSRequired on, thì chỉ cho phép 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 bình luận dòng đó hoặc sử dụng TLSRequired off, cả kết nối TLS và không phải TLS đều được phép, tùy thuộc vào máy khách FTP hỗ trợ những gì.
Khởi động lại ProFTPd 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 TLSRequired on) - hãy xem chương tiếp theo để biết cách thực hiện việc này với FileZilla.
Nếu bạn gặp sự cố với TLS, bạn có thể xem tệp nhật ký TLS /var/log/proftpd/tls.log.
Sau đó, chúng ta phải tạo thư mục home của người dùng "tom" và thay đổi quyền sở hữu thư mục đó thành người dùng và nhóm "tom".
Điều này sẽ thêm người dùng "tom" bằng shell /bin/false. Shell này đảm bảo rằng người dùng có thể đăng nhập bằng FTP nhưng không phải bằng SSH. Thư mục home của người dùng là /home/[USERNAME] theo mặc định, trong trường hợp của chúng tôi là /home/tom. ProFTPD được cấu hình để giam người dùng vào thư mục home của họ, do đó họ không thể truy cập các tệp hệ thống bên ngoài /home/tom. Nếu bạn muốn thiết lập một thư mục home khác, hãy sử dụng lệnh bên dưới:
Lệnh này thiết lập một thư mục home khác, trong trường hợp ví dụ này là thư mục /srv/tomftp cho người dùng.
Bước tiếp theo là thiết lập mật khẩu cho người dùng tom, thực hiện lệnh passwd:
Và nhập mật khẩu mới hai lần khi được yêu cầu.
Trong FileZilla, hãy mở Site Quản lý:
Chọn máy chủ sử dụng ProFTPd với TLS; Chọn FTP làm giao thức và Yêu cầu TLS rõ ràng qua FTP.
Bây giờ bạn có thể kết nối với máy chủ, FileZilla sẽ yêu cầu nhập mật khẩu.
Nếu bạn thực hiện thao tác này lần đầu tiên, bạn phải chấp nhận chứng chỉ SSL mới của máy chủ:
Nếu mọi thứ diễn ra tốt đẹp, bây giờ bạn sẽ được đăng nhập vào máy chủ:
Chi tiết đăng nhập của VM
Máy ảo có người dùng SSH với tên "administrator" và mật khẩu "howtoforge". Người dùng SSH này có quyền sudo.
Mật khẩu của Người dùng FTP "tom" là "howtoforge".
Địa chỉ IP của VM là 192.168.1.100, IP có thể được thay đổi trong tệp /etc/network/interfaces.
Vui lòng thay đổi mật khẩu của tất cả người dùng trước khi bạn sử dụng VM làm hệ thống trực tiếp.
1 Lưu ý sơ bộ
Trong bài 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.Vì chúng ta phải chạy tất cả các bước trong hướng dẫn này với quyền root, nên chúng ta có thể thêm chuỗi sudo vào đầu tất cả các lệnh trong hướng dẫn này hoặc chúng ta trở thành root ngay bây giờ bằng cách nhập
Mã:
sudo -s
Mã:
apt-get -y install nano
2 Cài đặt ProFTPd và OpenSSL
TLS cần OpenSSL; để cài đặt ProFTPd và OpenSSL, chúng ta chỉ cần chạy:
Mã:
apt-get -y install proftpd openssl
Chạy proftpd: <-- standalone
Vì lý do bảo mật, bạn nên thêm các dòng sau vào /etc/proftpd/proftpd.conf:
Mã:
nano /etc/proftpd/proftpd.conf
Mã:
[...]
DefaultRoot ~
ServerIdent on "FTP Server ready."
[...]
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/proftpd/ssl, do đó tôi tạo thư mục đó trước:
Mã:
mkdir /etc/proftpd/ssl
Mã:
openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/ssl/proftpd.cert.pem -keyout /etc/proftpd/ssl/proftpd.key.pem
Tên tiểu bang hoặc tỉnh (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 thông dụng (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à bảo mật các tệp chứng chỉ đã tạo.
Mã:
chmod 600/etc/proftpd/ssl/proftpd.*
4 Bật TLS trong ProFTPd
Để bật TLS trong ProFTPd, hãy mở /etc/proftpd/proftpd.conf...
Mã:
nano /etc/proftpd/proftpd.conf
Mã:
[...]
#
# Dòng này được sử dụng cho các kết nối FTPS
#
Include /etc/proftpd/tls.conf
[...]
Mã:
nano /etc/proftpd/tls.conf
Mã:
TLSEngine on
TLSLog /var/log/proftpd/tls.log
TLSProtocol TLSv1.2
TLSCipherSuite AES128+EECDH:AES128+EDH
TLSOptions NoCertRequest AllowClientRenegotiations
TLSRSACertificateFile /etc/proftpd/ssl/proftpd.cert.pem
TLSRSACertificateKeyFile /etc/proftpd/ssl/proftpd.key.pem
TLSVerifyClient tắt
TLSRequired bật
RequireValidShell không
Khởi động lại ProFTPd sau đó:
Mã:
systemctl restart proftpd.service
Nếu bạn gặp sự cố với TLS, bạn có thể xem tệp nhật ký TLS /var/log/proftpd/tls.log.
5 Thêm người dùng FTP
Cấu hình ProFTPD được sử dụng trong hướng dẫn này xác thực người dùng với cơ sở dữ liệu người dùng hệ thống Linux (/etc/passwd và /etc/shadow). Trong bước này, tôi sẽ thêm người dùng "tom" để chỉ sử dụng cho đăng nhập FTP.
Mã:
useradd--shell /bin/false tom
Mã:
mkdir /home/tom
chown tom:tom /home/tom/
Mã:
useradd--home /srv/tomftp --create-home --shell /bin/false tom
Bước tiếp theo là thiết lập mật khẩu cho người dùng tom, thực hiện lệnh passwd:
Mã:
passwd tom
6 Cấu hình FileZilla cho TLS
Để sử dụng FTP với TLS, bạn cần một máy khách FTP hỗ trợ TLS, chẳng hạn như FileZilla.Trong FileZilla, hãy mở Site Quản lý:
Chọn máy chủ sử dụng ProFTPd với TLS; Chọn FTP làm giao thức và Yêu cầu TLS rõ ràng qua FTP.
Bây giờ bạn có thể kết nối với máy chủ, FileZilla sẽ yêu cầu nhập mật khẩu.
Nếu bạn thực hiện thao tác này lần đầu tiên, bạn phải chấp nhận chứng chỉ SSL mới của máy chủ:
Nếu mọi thứ diễn ra tốt đẹp, bây giờ bạn sẽ được đăng nhập vào máy chủ:
7 Tải xuống thiết lập này dưới dạng VM
Thiết lập được mô tả trong hướng dẫn này có sẵn để tải xuống cho những người đăng ký HowtoForge. Máy ảo định dạng OVA / OVF sẵn sàng sử dụng tương thích với VMWare và Virtualbox.Chi tiết đăng nhập của VM
Máy ảo có người dùng SSH với tên "administrator" và mật khẩu "howtoforge". Người dùng SSH này có quyền sudo.
Mật khẩu của Người dùng FTP "tom" là "howtoforge".
Địa chỉ IP của VM là 192.168.1.100, IP có thể được thay đổi trong tệp /etc/network/interfaces.
Vui lòng thay đổi mật khẩu của tất cả người dùng trước khi bạn sử dụng VM làm hệ thống trực tiếp.
8 Liên kết
- ProFTPd: http://www.proftpd.org/
- FileZilla: http://filezilla-project.org/
- Ubuntu: http://www.ubuntu.com/