Mặc định nhiều công ty thường bật chế độ Deep Inspection SSL để tối ưu hóa năng lực lọc, chặn của firewall (ví dụ như Fortigate)
Tuy nhiên điều này cũng dẫn đến nhiều chuyện dở khóc dở cười.
Nay user nhờ mở kết nối tới FTP của khách hàng.
Chuyện cũng chả có gì, đơn giản chỉ là mở port kèm theo IP trong rule đi ra ngoài với IP tương ứng.
(Chắc nhiều công ty cũng giới hạn Port kết nối ra ngoài để tăng cường bảo mật)
Đầu tiên, lỗi listing directory xuất hiện:
Status: Connecting to 133.xx.xx.170:21…
Status: Connection established, waiting for welcome message…
Status: Initializing TLS…
Status: TLS connection established.
Status: Logged in
Status: Retrieving directory listing…
Command: PWD
Response: 257 “/” is the current directory
Command: TYPE I
Response: 200 Type set to I
Command: PASV
Response: 227 Entering Passive Mode (133,130,34,170,46,82).
Command: MLSD
Response: 150 Opening BINARY mode data connection for MLSD
Error: GnuTLS error -18: An error was encountered at the TLS Finished packet calculation.
Error: The data connection could not be established: ECONNABORTED – Connection aborted
Response: 226 Transfer complete
Error: Failed to retrieve directory listing
Một cái mới biết trong passive mode là tính port thế này:
Response: 227 Entering Passive Mode (133,xx,xx,170,46,82).
thì nó tương ứng với:
133.xx.xx.170: (46 * 256 + 82) = 11858 (TCP port)
Cẩn thận, còn excempt cả domain server FTP đó trong profile ssl nhưng mà không được => lạ nhỉ.
Sau khi tìm hiểu thêm thì thấy thật dị khi add IP vào excempt thì nó lại được. Sau khi tìm hiểu thì lý giải nó thế này:
Câu trả lời ngắn: Có thể không đủ hoặc không hoạt động đúng nếu FortiGate không phân giải FQDN đúng lúc hoặc policy chạy trước khi DNS resolved.
📌 Vì sao FQDN trong exemption có thể không hoạt động đúng?
-
FQDN chỉ được resolve khi FortiGate cần
-
FortiGate sẽ dùng DNS để chuyển FQDN → IP
-
Nếu IP của FTP server không được resolve đúng lúc hoặc chưa được resolve, exemption sẽ không có hiệu lực
-
Đặc biệt là khi IP của FTP server là tĩnh nhưng FortiGate chưa cache hoặc chưa tra DNS
-
-
Không áp dụng cho tất cả các port passive
-
Một số phiên bản FortiOS không áp dụng exemption FQDN cho kết nối phụ (passive port) nếu connection là ephemeral (không theo control channel ban đầu)
-
-
Không thấy IP trong debug logs → khó xác định có exempt hay không
