Sự khác nhau giữa Active FTP vs Passive FTP. Cấu hình Active và Passive FTP

  • Monday 03/02/2020

Giới thiệu về Active và Passive FTP

Active và Passive FTP Đây là 2 chế độ hoạt động của FTP server. Bài viết này sẽ giải thích về sự ảnh hưởng khác nhau của Firewall lên 2 chế độ Active và Passive. Bài viết này có thể không  chính xác hoàn toàn và được trình bày dưới kinh nghiệm và hiểu biết của chúng tôi trong quá trình hỗ trợ khách hàng. 

Giới thiệu cơ bản về dịch vụ FTP 

FTP sử dụng TCP ( TCP hiểu đơn giản nó là Giao thức vận chuyển gói tin đáng tin cậy), không có thành phần nào của FTP sử dụng UDP (Không tin cậy).
FTP sử dụng 2 port 21 ( Port command hay còn gọi là Control port) và Port 20 ( data Port ). Nhưng data port không hẳn luôn luôn là 20 mà nó phụ thuộc vào FTP mode. Sau khi đọc xong hết bài viết các bạn sẽ hiểu được điều này.

Tổng quan về Active FTP

Active FTP thì client sẽ random unprivileged port ( là port N > 1023 ) để connect tới port command trên server là port 21. Sau đó Client sẽ lắng nghe trên port N+1 và gửi command port “port N+1” tới server. FTP server sẽ connect tới Client bằng data port mặt định của nó là port 20.

Đứng ở gốc độ Firewall Server thì để hổ trợ cho Mode Active FTP này cần phải mở những luồng xử lý sau.

+ FTP Server phải mở port 21 để đón nhận tất cả connect tới của Client.
+ FTP Server phải mở kết nối từ port 21 đến ports > 1023 để trả lời request của Client.
+ FTP Server phải mở kết nối từ port 20 đến ports > 1023 để tạo kết nối truyền dữ liệu với Client.
+ FTP Server phải mở kết nối từ ports > 1023 đến port 20 để xác nhận kết nối với Client

Hình ví dụ minh họa cho Active FTP mode.

Active và Passive FTP

Ở bước 1, từ command port 1026 Client kết nối tới command port 21 của Server và gửi command port PORT 1027. Server gửi gói tin ACK (hiểu đơn giản là chấp nhận ) về cho Client ở bước 2. Bước 3 Server khởi tạo kết nối từ port data 20 tới port 1027 của Client ( port 1027 là port Client gửi cho Server ở bước 1 ). Và cuối cùng là Client gửi gói tin ACK về cho Server.

Vấn đề chính gặp phải khi sử dụng Active FTP là có thể bị mất kết nối ở phía Client. Client không khởi tạo kết nối tới port data của Server mà nó đơn giản chỉ nói với Server là tôi đang lắng nghe trên port 1027 và chờ Server kết nối tới. Nếu có tồn tại Firewall đứng trước Client thì đôi khi connection sẽ bị Blocked.

Tổng quan về Passive FTP 

Thay vì tập trung giải quyết vấn đề bị firewall chặn ở Active mode, thì một different method (một phương thức kết nối mới cho FTP ) for FTP connections được xây dựng. đó là Passive mode.

Trong passive mode FTP Client khởi tạo 2 connections đến Server, như vậy là giải quyết được vấn đề bên phía Client Blocked connection từ Server đến data port của Client. Passive mode hoạt động như sau.

Khi khởi tạo kết nối thì Client mở 2 ports random unprivileged port local (N > 1023 and N+1 ). Port đầu tiên Client mở connect tới port 21 của Server. Nhưng thay thì gửi PORT command như ở Active mode thì Client sẽ gửi câu lệnh PASV command. Lúc đó Server sẽ khởi tạo a random unprivileged port ( P > 1023)
và gửi P đến Client trong cái response PASV command. Lúc này Client khởi tạo connection từ port N+1 của nó tới port P trên Server và transfer data.

Ở phía Server, để support Passive mode FTP này thì cần phải mở những luồng connect như sau.

+ FTP Server phải mở port 21 nhận kết nối từ mọi Client.
+ FTP Server phải mở các kết nối từ port 21 đi tới các port > 1023 để trả lời (response) cho Client.
+ FTP Server phải mở các port > 1023 để nhận kết nối tới data port từ phía Client.
+ FTP Server phải mở các port > 1023 tới các port > 1023 để trả lời chấp nhận kết nối và truyền dữ liệu với Client.

Active và Passive FTP

Tại bước 1. Client liên lạc với Server trên command port và đưa ra câu lệnh PASV. Server trả lời ở bước 2 với PORT 1024 và nói với Client đây là port dữ liệu tối đang lắng nghe. bước 3 Client khởi tạo data connection từ port Data của nó tới port 1024 mà Server đã gửi cho nó. Cuối cùng là Server gửi lại gói tin ACK chấp nhận.

Với Passive mode ta giải quyết được nhiều vấn đề ở phía Client, nhưng nó đã mở ra một range port lớn tạo nên các lổ hỏng nguy hiểm cho phía Server. Vấn đề lớn nhất ở đây là phải chấp nhận hầu hết các kết nối port > 1023 trên Server

Vì lý do này nên hầu hết các FTP Service đều được khai báo một range port nhất định, để dễ dàng Control hơn. và tránh rũi ro.

Vấn đề lớn thứ 2 là phía Client không hổ trợ Passive Mode. Ví Dụ như nếu ai sài Solaris thì commandline FTP không hổ trợ cơ chế Passive này mà phải sử dụng FTP software client của hãng khác. ví dụ như ncftp.

Một số lượng lớn người dùng sử dụng Browser (Trình duyệt) của mình để đăng nhập vào FTP server. và trên Browser chỉ hổ trợ Passive mode.

Một lưu ý khác.

Active FTP Mode không thể hoạt động được với mô hình Client-side NAT Device. Vì thiết bị này không có khả năng thay thế thông tin IP trong FTP Packets.

Tổng hợp 

Dưới đây là một biểu đồ nhỏ để giúp chúng ta nhớ được 2 mode FTP trên.

Active FTP :
command : client >1023 –> server 21
data : client >1023 <– server 20

Passive FTP :
command : client >1023 –> server 21
data : client >1024 –> server >1023

Như vậy, với Active FTP thì có lợi cho FTP Server admin, nhưng lại ảnh hưởng tới Client side. Server tạo connetion tới random hight ports trên Client. Có thể sẽ bị Firewall Client Side Blocked. Còn với Passive FTP thì có lợi cho phía Client nhưng thiệt bên FTP Server admin. Client khởi tạo 2 kết nối tới Server với Hight Ports có thể sẽ bị Server Blocked.

Tuy vậy nhưng với kinh nghiệm và hiểu biết của mình thì nếu Support cho một hệ thống với nhiều truy cập FTP từ Client. thì Nên setup Passive mode. Việc Control trên một Server để giúp tất cả Client có thể connect tới thì dễ hơn là việc Control trên Firewall của Từng Client Side.

 

Để tham khảo các sử dụng winscp có thể clik vào link sau đây

Để tham khảo thông số và đăng ký dịch vụ hosting tại P.A có thể click vào link này

Rate this post