MỤC LỤC
Trong mô hình FTP Client-Server, có một loạt các mã thông điệp đáp trả mà máy chủ FTP có thể gửi lại cho máy khách FTP sau khi nhận các yêu cầu từ máy khách. - Thông điệp và phản hồi khác: Ngoài các mã trạng thái, máy chủ FTP cũng có thể gửi các thông điệp và phản hồi khác như thông tin về trạng thái kết nối, yêu cầu bổ sung, hoặc thông tin chi tiết về lỗi nếu có. Mã trạng thái và các thông điệp đáp trả trong FTP rất quan trọng để máy khách FTP hiểu được trạng.
Điều này giúp cải thiện trải nghiệm người dùng và đảm bảo rằng việc truyền tải dữ liệu được thực hiện một cách hiệu quả và đáng tin cậy.
Hàm này sẽ thực hiện kết nối đến máy chủ FTP, thực hiện đăng nhập bằng tài khoản client, tạo một handle file cho file trên máy client từ local_file_path sau đó sử dụng phương thức ftp.storbinary(f'STOR {remote_file_path}', file) để tiến hành truyền file từ máy cục bộ vào đường dẫn đích ở remote_file_path (là đường dẫn file đích. trên server FTP), tải xong thì đóng kết nối FTP server. Toàn bộ quá trình trên được đặt trong try-exception để xử lý những ngoại lệ nếu có (file không tồn tại, đường dẫn sai, không kết nối được đến máy chủ ftp, …). Bằng cách sử dụng các phương thức có sẵn trong module này, người lập trình có thể dễ dàng thực hiện các hoạt động như tải lên, tải xuống và quản lý các tệp tin trên máy chủ FTP một cách hiệu quả.
Giao thức truyền tệp ẩn danh là một phương pháp cho phép người dùng truy cập các tệp công khai từ một máy chủ hoặc trang lưu trữ từ xa mà không yêu cầu họ xác thực với máy chủ hoặc trang lưu trữ. Vì vậy, kẻ tấn công có thể truy cập vào máy chủ hoặc trang lưu trữ có thể download các file và upload các file có chứa mã độc nhằm đánh lừa người dùng tải file đó về máy tính của mình. Kẻ tấn công có thể sử dụng module ftplib để viết một script đơn giản kiểm tra xem liệu server FTP có cho phép người dùng ẩn danh đăng nhập hay không, bằng cách đơn giản là sử dụng lệnh ftplib.FTP(host, user="anonymous") để đăng nhập thử vào server.
Tấn công Brute force trên máy chủ FTP là một trong những kiểu tấn công phổ biến nhất, nơi kẻ tấn công cố gắng bẻ khóa mật khẩu bằng cách liên tục đoán mật khẩu. Trước khi tấn công bất kỳ hệ thống hoặc dịch vụ nào, kẻ tấn công cần kiểm tra giao thức FTP có bị chặn trên một số tường lửa giữa máy của kẻ tấn công và hệ thống đích hay không sau đó thu thập tất cả các danh sách các tài khoản và mật khẩu khả thi. Đôi khi muốn tấn công một tên người dùng cụ thể như quản trị viên hoặc người dùng root thì chỉ cần một danh sách mật khẩu để sử dụng đối với những tờn người dựng cụ thể này.
Một dịch vụ FTP dễ bị tấn công brute force phần lớn là do người dùng có thói quen đặt mật khẩu đơn giản, phổ biến hay sử dụng mật khẩu liên quan đến bản thân có thể dễ dàng lấy được trên các mạng xã hội như ngày sinh, tên,…Từ phía server, việc không giới hạn số lần nhập sai mật khẩu có thể tạo cơ hội cho kẻ tấn công có thể thực hiện tấn công brute force. Mô-đun ftplib cũng có thể được sử dụng để tạo các tập lệnh tự động hóa một số tác vụ nhất định hoặc thực hiện các cuộc tấn công brute force chống lại máy chủ FTP. Dựa trên ý tưởng là kiểm tra xem máy chủ FTP có dễ bị tấn công brute-force bằng từ điển hay không bằng cách sử dụng hai “từ điển” là hai file chứa tên những users và passwords có thể có, sau đó tiến hành ghép cặp và đăng nhập thử từng cặp user và password trong cả hai file.
Đầu tiên cần phải tiến hành “ghép cặp” từng users và passwords trong hai từ điển và đẩy vào một hàng đợi q, sau đó ở đây tiến hành sử dụng phương thức ‘Thread’ để thực thi hàm connect_ftp(), đây là hàm sẽ tiến hành việc brute-force FTP server. Trong một số trường hợp, kẻ tấn công có thể ghi vào các tệp tùy ý trên máy chủ, cho phép chúng sửa đổi dữ liệu hoặc hành vi của ứng dụng và cuối cùng kiểm soát hoàn toàn máy chủ. Lỗ hổng Directory Traversal phát sinh khi máy chủ FTP không quét được đầu vào của người dùng để tìm các chuỗi nguy hiểm tiềm ẩn trước khi sử dụng đầu vào để truy cập hệ thống.
FTPS giữ lại tất cả các chức năng được tìm thấy trong FTP nhưng được hỗ trợ thêm các giao thức mã hóa như: Transport Layer Security (TLS) và Secure Sockets Layer (SSL). SSL/TLS (Secure Sockets Layer/Transport Layer Security) là một bộ các giao thức hoặc quy tắc giao tiếp được sử dụng để đảm bảo tính bảo mật trong việc truyền tải dữ liệu qua mạng internet. Chứng chỉ kỹ thuật số SSL/TLS có khả năng mã hóa dữ liệu được truyền giữa máy khách FTPS và máy chủ FTPS bằng cách mã hóa khóa công khai, sử dụng hai khóa khác nhau để mã hóa và giải mã một thông điệp.
PKI (Public Key Infrastructure) cung cấp phương thức để một bên thiết lập nhận dạng của một bên khác bằng cách sử dụng các chứng chỉ nếu cả hai đều tin tưởng bên thứ ba - được gọi là cơ quan cấp chứng chỉ. Khi đã xác thực thành công, cả hai sẽ bắt đầu quá trình thiết lập kết nối an toàn sử dụng SSL/TLS bao gồm việc thiết lập các thông số bảo mật như cơ chế mã hóa và chứng thực. Sau khi xác thực người dùng thành công, các lệnh FTP (ví dụ: LIST, RETR, STOR) và dữ liệu kể cả thông tin xác thực được truyền giữa client và server sẽ được mã hóa và bảo vệ bởi SSL/TLS.
FTPS ẩn thực sự nghiêm ngặt khi toàn bộ phiên của kênh điều khiển và kênh dữ liệu được mã hóa mọi lúc do đó làm cho FTPS ẩn rất tốn tài nguyên khi cả dữ liệu không nhạy cảm cũng được mã hóa và làm mất đi tính linh hoạt. Đõy là một yờu cầu tựy chọn, nếu client không yêu cầu bảo mật, FTP server có thể cho tiếp tục ở chế độ không an toàn hoặc từ chối hoặc giới hạn kết nối. Nếu client là lần đầu tiên truy cập vào server thì client phải xác minh thủ công khóa công khai của server, ngược lại không phải là lần đầu tiên truy cập server thì danh tính của server đã được ghi lại trước đó và có thể được xác minh mà không cần sự tham gia của client.
Người dùng sử dụng khóa SSH để xác thực, mỗi cặp khóa SSH bao gồm hai phần: khóa công khai (public key) và khóa riêng tư (private key), họ sẽ sử dụng cặp khóa SSH này để tự động hóa quyền truy cập vào máy chủ SFTP. Nếu người dùng đăng nhập vào máy chủ SFTP, máy chủ sẽ yêu cầu người dùng cung cấp khóa riêng tư (private key) tương ứng với khóa công khai (public key) đã lưu trữ trên máy chủ. Nếu khóa riêng tư (private key) khớp với khóa công khai (public key) trên máy chủ, người dùng được xác thực thành công và có quyền truy cập vào máy chủ SFTP.
- Dữ liệu có thể được gửi bằng cách sử dụng đồng thời giao thức SFTP và công nghệ VPN để gia tăng tính bảo mật cho dữ liệu bằng cách mã hóa dữ liệu trên cả hai mặt trước khi truyền đi qua mạng công cộng. - SFTP cung cấp tính năng bảo mật cao bằng cách sử dụng mã hóa và xác thực khóa công khai (public key authentication), giúp bảo vệ dữ liệu trong quá trình truyền tải. - Khóa riêng tư (private keys) của SFTP phải được lưu trữ trên thiết bị mà người dùng muốn truyền tệp tin từ đó, và thiết bị này cũng phải được bảo vệ.