FTP (File Transfer Protocol) có hai chế độ chính: Active Mode (PORT Mode) và Passive Mode (PASV Mode). Cả hai chế độ này đều được sử dụng để thiết lập kết nối và truyền file giữa máy chủ FTP và máy khách FTP, nhưng chúng hoạt động theo cách khác nhau. Dưới đây là sự phân biệt giữa chúng:
1. Active Mode (PORT Mode):
Hoạt động của máy chủ: Trong chế độ Active, máy chủ FTP lắng nghe trên cổng điều khiển (control port) mặc định là cổng 21 để thiết lập kết nối từ máy khách.
Hoạt động của máy khách: Máy khách FTP sẽ tạo một kết nối điều khiển với máy chủ trên cổng 21 nhưng sau đó sẽ sử dụng cổng dữ liệu (data port) ngẫu nhiên từ khoảng 1024 đến 65535 để gửi và nhận dữ liệu.
Vấn đề về tường lửa: Active Mode có thể gây khó khăn khi bạn đang sử dụng tường lửa vì máy chủ FTP cố gắng kết nối vào máy khách trên cổng dữ liệu ngẫu nhiên. Điều này có thể dẫn đến việc tường lửa phải cho phép tất cả các cổng dữ liệu này hoặc dùng các quy tắc phức tạp để xác định cổng cụ thể.
2. Passive Mode (PASV Mode):
Hoạt động của máy chủ: Trong chế độ Passive, máy chủ FTP không cố gắng thiết lập kết nối trực tiếp đến máy khách. Thay vào đó, nó mở một cổng dữ liệu mặc định (thường là một cổng cao hơn, ví dụ: 1024) để lắng nghe máy khách.
Hoạt động của máy khách: Máy khách FTP tạo một kết nối điều khiển với máy chủ trên cổng 21 và sau đó gửi một yêu cầu PASV để lấy địa chỉ IP và cổng dữ liệu từ máy chủ.
Vấn đề về tường lửa: Passive Mode thường dễ dàng hơn cho việc đi qua tường lửa vì máy chủ FTP chỉ mở một cổng dữ liệu và máy khách đã biết trước địa chỉ IP và cổng này. Bạn chỉ cần cho phép máy khách truy cập cổng dữ liệu được chỉ định.
Sự chọn lựa giữa Active Mode và Passive Mode phụ thuộc vào môi trường mạng và cấu hình tường lửa của bạn. Trong nhiều trường hợp, Passive Mode là lựa chọn an toàn hơn vì nó giảm thiểu rủi ro liên quan đến tường lửa. Tuy nhiên, cần lưu ý rằng cả hai chế độ này đều có thể được hỗ trợ bởi các máy chủ FTP và phần mềm FTP client, và bạn nên cấu hình tùy thuộc vào nhu cầu và môi trường cụ thể của bạn.
3. Data port trong FTP.
Data port trong FTP (File Transfer Protocol) luôn sử dụng giao thức TCP (Transmission Control Protocol). FTP sử dụng giao thức TCP để truyền tải dữ liệu vì TCP cung cấp các tính năng đáng tin cậy và kiểm soát kết nối, điều này quan trọng để đảm bảo rằng dữ liệu được truyền tải một cách đáng tin cậy và không bị mất trong quá trình truyền.
Mặc dù FTP sử dụng giao thức TCP cho cổng dữ liệu, cổng điều khiển (control port) của FTP, thường là cổng 21, cũng sử dụng giao thức TCP để thiết lập và duy trì kết nối điều khiển giữa máy khách FTP và máy chủ FTP. Cổng điều khiển đóng vai trò trong việc quản lý và điều khiển các truyền tải dữ liệu trên cổng dữ liệu sử dụng TCP.
4. Port Forwarding giao thức FTP.
Để cấu hình Port Forwarding cho giao thức FTP và cho phép truy cập vào máy chủ FTP từ bên ngoài mạng, bạn cần thực hiện các bước sau:
- Cấu hình Port Forwarding trong Router hoặc Tường lửa:
- Đăng nhập vào bộ định tuyến (router) hoặc tường lửa mạng.
- Tạo một luật Port Forwarding mới hoặc Virtual Server (có thể có tên khác nhau tùy theo thiết bị).
- Trong luật này, bạn cần chỉ định cổng ngoài (cổng trên mạng Internet) mà bạn muốn mở để truy cập máy chủ FTP (thông thường cổng 21 cho điều khiển FTP).
- Chỉ định máy chủ FTP trong mạng nội bộ của bạn (địa chỉ IP riêng tư của máy chủ).
- Chỉ định cổng trong mạng nội bộ của máy chủ FTP (thông thường cổng 21 cho điều khiển FTP).
- Lưu và kích hoạt cài đặt Port Forwarding.
- Chọn FTP Mode (Active hoặc Passive):
- Tùy thuộc vào cách bạn đã cấu hình máy chủ FTP của mình, bạn có thể cần chọn chế độ FTP là Active hoặc Passive. Nếu máy chủ FTP sử dụng Passive Mode, bạn cần mở một phạm vi cổng cho Passive Mode trong cấu hình của máy chủ và ánh xạ chúng trong luật Port Forwarding.
- Điều chỉnh Tường lửa trên Máy Chủ FTP:
- Nếu máy chủ FTP của bạn đang chạy trên một máy tính có tường lửa, bạn cần đảm bảo rằng tường lửa này cho phép kết nối trên cổng FTP (thường là cổng 21) và các cổng dữ liệu (nếu bạn sử dụng Passive Mode).
- Mở cổng dữ liệu trong Router hoặc Tường lửa (nếu sử dụng Passive Mode):
- Nếu bạn đang sử dụng Passive Mode, bạn cần ánh xạ một phạm vi cổng dữ liệu (thường là một dải cổng lớn như 49152-65535) trong luật Port Forwarding để cho phép máy chủ FTP sử dụng các cổng này để truyền dữ liệu.
- Kiểm tra và Điều chỉnh Cài đặt FTP:
- Đảm bảo rằng bạn đã cài đặt máy chủ FTP của bạn để sử dụng các cài đặt đúng cho Port Forwarding và chế độ FTP mà bạn đã cấu hình.
Dưới đây là hình ảnh ví dụ Forwarding trên OPNSense.
Với Port điều khiển TCP/21.
Với port truyền nhận Data Transfer.
Chúng ta sẽ có 2 rule như dưới.
Khi bạn hoàn thành các bước trên, bạn sẽ có thể truy cập máy chủ FTP từ bên ngoài mạng thông qua địa chỉ IP công cộng của bạn trên cổng FTP đã được ánh xạ. Lưu ý rằng việc cấu hình FTP và Port Forwarding cụ thể có thể khác nhau tùy thuộc vào thiết bị tường lửa, tài khoản quản trị, và cách bạn đã cấu hình máy chủ FTP của mình.
5. Sử dụng nó như thế nào?
FTP đã trở thành một trong những tiêu chuẩn cho việc truyền file hàng loạt không cần sự hỗ trợ trong các hoạt động trung tâm dữ liệu thông thường trên toàn thế giới. Do đó, FTP có các tùy chọn để sử dụng các mã hóa file khác nhau (nhị phân, ASCII và EBCDIC), chế độ truyền dữ liệu (dòng, khối và nén – khá hạn chế) và chế độ hoạt động (active và passive). Nó cho phép thậm chí cả một máy khách ra lệnh truyền tải giữa hai máy chủ khác nhau hoặc thực thi các quy trình cụ thể trên máy chủ. Tùy chọn chỉ có sẵn trong các ứng dụng FTP đầy đủ tính năng. Cú pháp URL FTP tiêu chuẩn có cú pháp sau:
ftp://[user[:password]@]<host><.domain>/<path>/<file>
FTP hoạt động bằng cách sử dụng nhiều kết nối:
- Kết nối Điều khiển: Đây là kết nối đầu tiên mở ra, mặc định sử dụng cổng TCP 21, nơi máy khách gửi các lệnh đến máy chủ.
- Kết nối Dữ liệu: Mỗi truyền dữ liệu, bao gồm cả danh sách thư mục, mở ra một kết nối Dữ liệu riêng của nó, được đóng sau khi luồng kết thúc.
Vì vậy, sự khác biệt chính giữa chế độ active và passive nằm ở cách thiết lập kết nối dữ liệu:
- Trong Chế độ Active, máy chủ tự mở các kết nối dữ liệu (mặc định, sử dụng cổng TCP 20 làm nguồn) và gọi lại máy khách.
- Trái lại, trong Chế độ Passive, tất cả các kết nối đều được khởi tạo từ máy khách đến máy chủ. Chế độ này thường được sử dụng để vượt qua các vấn đề liên quan đến tường lửa và NAT, vì nó tránh cần phải máy chủ phải mở các kết nối một cách tích cực.