Passive FTP - Phân biệt những đặc điểm cơ bản của Active FTP và Passive FTP

1447
26-11-2021
Passive FTP - Phân biệt những đặc điểm cơ bản của Active FTP và Passive FTP

File Transfer Protocol (FTP) có 2 chế độ hoạt động phổ biến là Active FTP và Passive FTP. FTP hoạt động thông thường ở chế độ Active. Đầu tiên, máy khách sẽ giao tiếp với máy chủ qua cổng 21. Máy chủ sau đó sẽ mở kết nối với máy khách qua cổng 20. Tuy nhiên, tường lửa của FTP client có thể chặn các kết nối đến. Vì vậy có thể dùng chế độ Passive FTP để giải quyết vấn đề trên. Passive FTP là chế độ thay thế để thiết lập các kết nối FTP và PASV là lệnh mà FTP client dùng để giải thích cho server rằng nó đang ở chế độ Passive Mode.

Trong bài viết này, BizFly Cloud sẽ giúp bạn hiểu rõ những đặc điểm cơ bản của Active FTP và Passive FTP để bạn có thể theo dõi và đưa ra quyết định tốt nhất nhé.

Nhắc lại một chút về FTP 

FTP là thuật ngữ viết tắt của cụm từ tiếng Anh File Transfer Protocol. Nó là 1 giao thức giúp truyền tải tập tin từ máy tính này đến máy tính khác thông qua mạng Internet hoặc mạng TCP/IP. Máy tính sử dụng FTP có thể dễ dàng tải dữ liệu như văn bản, hình ảnh, video…lên máy chủ đang đặt ở 1 nơi khác hoặc ngược lại cũng có thể tải các tập tin ở trên máy chủ về máy tính cá nhân của mình. Ngoài ra, FTP cũng hỗ trợ truyền tải dữ liệu web lên máy chủ web bất kể máy chủ ở đâu.

Ưu điểm lớn nhất của FTP là khả năng truyền tải các dữ liệu có dung lượng lớn (lên đến vài trăm MB) 1 cách nhanh chóng, rút ngắn thời gian cho người dùng. Ngoài ra nó còn hỗ trợ upload/download nhiều tập tin cùng lúc mà mà không hề gặp phải vấn đề gì.

Active FTP

FTP có 2 chế độ hoạt động chủ yếu là Active FTP và Passive FTP. Ở phần này chúng ta sẽ tìm hiểu trước về Active FTP, còn Passive FTP bạn theo dõi ở phần sau nhé. Active FTP là chế độ hoạt động mặc định của mạng máy tính sử dụng giao thức FTP.

Trong phiên làm việc của FTP, cần có 2 kết nối TCP là TCP Data connection hoạt động trên cổng 20 và TCP Control connection hoạt động trên cổng 21. Trong đó cổng 21 (Control connection) phải luôn được mở tại mọi thời điểm mà dữ liệu hoặc lệnh được gửi đi còn cổng 20 (data connection) chỉ được mở khi việc trao đổi dữ liệu thực sự xảy ra. Cụ thể như sau:

Đầu tiên, FTP client sẽ tiến hành mở Control connection để connect tới port 21 là port command trên server. Tiếp theo, client sẽ lắng nghe thông qua port N+1 và gửi command port “port N+1” tới server. Cuối cùng, FTP server sẽ tạo kết nối dữ liệu với Client trên port mặc định của nó (thường là port 20).

Cần phải mở những luồng xử lý sau để hỗ trợ cho Mode Active FTP này (ở góc độ Firewall Server).

1. Cổng 21 phải được FTP Server mở để đón nhận tất cả các connect đến từ Client.

2. Để trả lời request của Client thì FTP Server phải mở kết nối từ port 21 đến ports >1023.

3. Để tạo kết nối truyền dữ liệu với Client thì FTP server phải mở kết nối từ port 20 đến ports > 1023.

4. Cuối cùng, để xác nhận kết nối với Client thì  FTP Server phải mở kết nối từ ports > 1023 đến port 20.

Xem hình minh họa dưới đây:

Những điều cần biết về Passive FTP  - Ảnh 1.

Dựa vào thông tin mô tả của hình minh họa ở trên, có thể thấy ở bước 1 từ command port 1026 Client kết nối tới command port 21 của Server (gửi kèm theo command port 1027) . Ở bước 2, Server gửi gói tin ACK (hiểu đơn giản là chấp nhận ) về cho Client. Sau đó đến bước 3, Server sẽ khởi tạo kết nối từ port data 20 tới port 1027 của Client (đây là port Client gửi cho Server ở bước 1). Cuối cùng, Client sẽ gửi gói tin ACK về cho Server.

Vấn đề lớn nhất khi sử dụng chế độ hoạt động Active FTP là việc dễ dàng xảy ra tình trạng mất kết nối ở phía Client. Điều này là do Client có thể không khởi tạo kết nối đến port data của Server mà nó chỉ thông báo với Server là đang lắng nghe trên port 1027 và chờ server kết nối tới. Vấn đề thường gặp tiếp theo là connection sẽ bị blocked nếu có tồn tại Firewall đứng trước Client. Ngoài ra, FTP Active mode cũng không thể hoạt động được với các thiết bị sử dụng mô hình Client-side NAT vì chúng không có khả năng thay thế thông tin IP trong FTP Packets. Điều này có thể khắc phục được bằng Passive FTP sẽ được đề cập ở phần tiếp theo.

Tóm lại, biểu đồ Active FTP tóm gọn như sau:

command : client >1023 –> server 21

data : client >1023 <– server 20

Passive FTP

Passive FTP là phương thức kết nối mới cho FTP ra đời để khắc phục vấn đề firewall bị chặn ở chế độ Active mode. Nhờ vào việc khởi tạo 2 connections từ FTP Client đến Server ở chế độ passive mode mà vấn đề bên phía Client Blocked connection từ Server đến data port của Client sẽ được giải quyết. Hoạt động của Passive mode như sau:

Client sẽ mở cùng lúc 2 ports random unprivileged port local (N > 1023 and N+1 ) khi bắt đầu khởi tạo kết nối tới FTP server. Port đầu tiên, Client sẽ mở connect tới Port 21. Sau đó, Client sẽ gửi câu lệnh PASV command thay vì gửi Port command như ở chế độ Active đến server. Tiếp đó, server sẽ tạo ra một random unprivileged port (P> 1023) và gửi nó đến Client trong response PASV command (tạm gọi là port P).

Cuối cùng, Client sẽ khởi tạo connection từ port N+1 của nó tới port P vừa mới được tạo trên server và tiến hành transfer data.

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

1. Để nhận kết nối từ mọi Client thì FTP server phải luôn mở cổng 21.

2. Để response cho các Client thì FTP server phải luôn mở các kết nối từ port 21 tới các port >1023.

3. Để nhận các kết nối tới data port từ phía Client thì FTP server phải mở các port > 1023

4. Cuối cùng để chấp nhận các kết nối và truyền dữ liệu tới Client thì FTP server phải mở các port> 1023 tới các port> 1023.

Xem hình minh họa dưới đây.

Những điều cần biết về Passive FTP  - Ảnh 2.

Căn cứ vào hình minh họa ở trên, có thể thấy ở bước 1, Client từ command port 1026 liên lạc với FTP server trên command port 21 và đưa ra câu lệnh PASV. Ở bước 2, server trả lời với Client thông qua Port 1024 là tôi đang lắng nghe. Ở bước 3, Client sẽ khởi tạo data connection từ port data của nó (1027) tới port 1024 mà server đã gửi cho nó ở bước 2. Cuối cùng ở bước 4, server sẽ gửi các gói tin ACK chấp nhận từ port 1024 đến Client qua port 1027.

Có thể thấy rằng Passive mode giải quyết được rất nhiều vấn đề phát sinh ở phía Client mà Active mode gặp phải trước đây. Tuy nhiên khi sử dụng chế độ hoạt động Passive mode sẽ mở ra một range port rất lớn (phải chấp nhận hầu hết các kết nối port> 1023) và có khả năng tạo ra nhiều lỗ hổng nguy hiểm cho phía FTP server. Vì vậy nên các FTP Service đều được khai báo một range port nhất định để tránh rủi ro và dễ dàng control hơn. Ngoài ra, một số nhà cung cấp FTP client có thể không hỗ trợ chế độ Passive mode.

Tóm lại, biểu đồ Passive FTP tóm gọn như sau:

command : client >1023 –> server 21

data : client >1024 –> server >1023

Trên đây là toàn bộ những thông tin cơ bản về FTP là gì và những đặc điểm cơ bản của 2 chế độ hoạt động phổ biến của FTP là Active FTP và Passive FTP. Hy vọng bài viết có thể mang đến cho bạn những thông tin bổ ích và giúp bạn đưa ra được lựa chọn tốt nhất khi support cho hệ thống FTP của doanh nghiệp mình. 

SHARE