Bắt tay TCP không thành công trên Cisco ASA


7

Tôi đang sử dụng Trình tạo lưu lượng để thiết lập kết nối TCP sẽ vượt qua tường lửa Cisco ASA.

Cấu trúc liên kết của tôi trông như thế này:

                     +------------------+                      
                     |  CISCO ASA       |                      
+------------+       |                  |                      
|  Client    +-------+Outside           |                      
|  10.1.202.1|       |10.1.202.254      |                      
|            |       |                  |        +------------+
+------------+       |            Inside|        |Server      |
                     |      10.1.102.254+--------+10.1.102.19 |
                     |                  |        |            |
                     +------------------+        +------------+

Kết nối phải được thiết lập từ một máy chủ trong mạng bên ngoài (10.1.202.1/24) đến máy chủ trong mạng bên trong (10.1.102.19/24).

Tôi nhìn thấy trong Wireshark rằng SYNvượt qua tường lửa (. 10,1 (1/2) 02,254), SYN-ACK không vượt qua và bị loại bỏ (xem ảnh chụp: bên trong giao diệnbên ngoài giao diện ).

Từ show asp droptôi được thông báo rằng các khung bị bỏ do lý do sau:

TCP failed 3 way handshake (tcp-3whs-failed)

Tôi không sử dụng ARP, nhưng sử dụng địa chỉ MAC của giao diện tường lửa, là cổng mặc định.

Tôi tạo ra SYN, SYN-ACKACKnhư sau:

SYN: (Máy khách (bên ngoài) đến máy chủ (bên trong))

**Ethernet**
Destination MAC: <Mac Address of the Firewall-Interface>
Source MAC: <Mac Address of the Sending Device-Interface>

**IP**
Source IP: 10.1.202.1
Destination IP: 10.1.102.19
Default Gateway: 10.1.202.254

**TCP**
Source Port: 9000
Destination Port: 8000
Sequence number: 0
Acknowledgement number: 0
Synchronize: 1
Acknowledgement: 0

SYN-ACK: (Máy chủ (bên trong) đến máy khách (bên ngoài)) (điều này không vượt qua tường lửa)

**Ethernet**
Destination MAC: <Mac Address of the Firewall-Interface>
Source MAC: <Mac Address of the Sending Device-Interface>

**IP**
Source IP: 10.1.102.19
Destination IP: 10.1.202.1
Default Gateway: 10.1.102.254

**TCP**
Source Port: 8000
Destination Port: 9000
Sequence number: 0
Acknowledgement number: 1
Synchronize: 1
Acknowledgement: 1

ACK: (Máy khách (bên ngoài) đến máy chủ (bên trong))

**Ethernet**
Destination MAC: <Mac Address of the Firewall-Interface>
Source MAC: <Mac Address of the Sending Device-Interface>

**IP**
Source IP: 10.1.202.1
Destination IP: 10.1.102.19
Default Gateway: 10.1.202.254

**TCP**
Source Port: 9000
Destination Port: 8000
Sequence number: 1
Acknowledgement number: 1
Synchronize: 0
Acknowledgement: 1

Hơn nữa, cấu trúc liên kết của tôi giống như sau:

Máy khách tạo lưu lượng truy cập (mạng bên ngoài) được kết nối với một công tắc có thêm Vlan. Công tắc được kết nối với giao diện tường lửa bên ngoài. Trên mạng bên trong, trình tạo lưu lượng được kết nối với công tắc nơi các thẻ Vlan được thêm vào và công tắc được kết nối với giao diện bên trong của tường lửa.

Bất cứ ai có thể cho tôi biết tại sao ASA giảm SYN-ACK?

Cảm ơn trước!

BIÊN TẬP:

  • Theo đề xuất của Ron Trunk, tôi đã vô hiệu hóa ngẫu nhiên các số thứ tự bằng cách sử dụng:

    vô hiệu hóa số thứ tự ngẫu nhiên

  • Thêm chụp của bên giao diệnbên ngoài giao diện .

  • Cập nhật các tập tin chụp


Lệnh gói-tracer hiển thị gì?
Smithers

Bạn có ý nghĩa gì bởi lệnh gói-tracer? Tôi đang làm việc trên một mô-đun dịch vụ ASA.
muehsi

Ah, không bao giờ sử dụng nó. Thiết bị ASA có lệnh "gói theo dõi" mô phỏng gói chạy theo quy tắc. Tôi tin rằng nó chủ yếu dành cho lưu lượng truy cập ở lớp 3 trở lên, nhưng có lẽ đó chỉ là vì tôi không bao giờ cần nó ở bất kỳ lớp thấp hơn nào. Câu hỏi đánh dấu theo cách của bạn, nhưng việc sử dụng về cơ bản là "đầu vào theo dõi gói INCOMING-IFNAME tcp SOURCE.IP.ADDRESS.HERE SRC-PORT DST.IP.ADDRESS.HERE DST-PORT"
Smithers

Vâng, điều này cũng có sẵn trong ASDM. Tôi đã kiểm tra và gói tin sẽ được chuyển qua. Nhưng tôi không thể chọn gói cho thiết lập kết nối. Tôi chỉ có thể kiểm tra IP và Cổng. Vấn đề là, bắt tay TCP thất bại.
muehsi

Vâng, SUGGESTS lớp 3 của bạn là tốt, đó là tốt đẹp. Bạn sẽ muốn nắm bắt TẤT CẢ lưu lượng truy cập ở bên ngoài và bên trong các giao diện của ASA, bao gồm ARP. Trước tiên, bạn có thể xác nhận xem lưu lượng truy cập có thực sự đến giao diện xâm nhập hay không, và sau đó xác nhận rằng nó không rời khỏi đó - bởi vì nếu nó rời khỏi đầu ra của bạn, hoặc không đến được đường vào của bạn, có lẽ bạn đã gặp sự cố chuyển đổi.
Smithers

Câu trả lời:


3

Theo mặc định, ASA chọn ngẫu nhiên các số thứ tự trong bắt tay (để ngăn chặn các vụ cướp phiên). Vì vậy, số thứ tự của bạn không thực sự khớp. Bạn có thể tắt tính năng đó.

random-sequence-number disable

Tôi đã thêm lệnh này, không biết nó tồn tại. Thật không may, nó không giải quyết được vấn đề của tôi. Wireshark nói rằng SYN ACK của tôi có 'ACK = 3200214167', điều này thật kỳ lạ vì nó đã bị bắt trên giao diện trước khi vượt qua tường lửa. Win = 4096 trong gói syn có nghĩa là gì cho thiết lập kết nối không?
muehsi

Win về cơ bản chỉ có nghĩa là có 4kb dung lượng trống trong bộ đệm mạng của thiết bị đã gửi gói đó.
Smithers

1
Tôi nhận thấy rằng trước khi khách hàng gửi syn-ack, nó sẽ gửi rst-ack. Tôi nghĩ rằng bạn cần phải tìm ra điều đó đầu tiên.
Ron Trunk

Nó không hoạt động khi tôi làm theo lời giải thích này . Tôi cũng đã phải áp dụng chính sách dịch vụ cho các giao diện ( service-policy <name> interface <interface>). Cảm ơn gợi ý của bạn.
muehsi

3

Trong bản chụp bên trong của bạn , có hai gói đi từ Máy chủ (10.1.102.19) đến Máy khách (10.1.202.1), nhưng chúng đến từ các địa chỉ MAC khác nhau.

#23 Ethernet II, Src: 00:10:94:00:00:01 (00:10:94:00:00:01), Dst: 00:19:55:07:12:ca (00:19:55:07:12:ca)
    Internet Protocol Version 4, Src: 10.1.102.19 (10.1.102.19), Dst: 10.1.202.1 (10.1.202.1)
    Transmission Control Protocol, Src Port: 8000 (8000), Dst Port: 9000 (9000), Seq: 0, Ack: 19112639, Len: 0

#25 Ethernet II, Src: 00:10:94:00:00:02 (00:10:94:00:00:02), Dst: 00:19:55:07:12:ca (00:19:55:07:12:ca)
    Internet Protocol Version 4, Src: 10.1.102.19 (10.1.102.19), Dst: 10.1.202.1 (10.1.202.1)
    Transmission Control Protocol, Src Port: 8000 (8000), Dst Port: 9000 (9000), Seq: 0, Ack: 1, Len: 0

Điều đó có vẻ kỳ lạ, nhưng có lẽ không phải là vấn đề của bạn. Theo như tôi có thể giải thích nó, vấn đề của bạn là như sau:

Có vẻ như chính máy chủ phản hồi tự nhiên với gói SYN được tạo thủ công của bạn với RST-ACK trong gói số 23 (của nắp bên trong, xem ở trên) - có thể do cổng 8000 đã bị đóng. Điều này sẽ nhắc Tường lửa chuyển tiếp RST ra bên ngoài (Gói số 23 ở nắp ngoài) và lọc kết nối này khỏi bảng trạng thái của nó.

Nhưng gói SYN-ACK được chế tạo của bạn sẽ tắt ở # 25 (của nắp bên trong), nhắc RST từ Tường lửa (# 26) vì không có mục nào trong bảng kết nối liên quan đến luồng này.


Cảm ơn ý kiến ​​của bạn. Tôi đã kiểm tra các địa chỉ Ethernet và sửa chúng. Như bạn nghi ngờ, điều này không thay đổi gì cả. Tôi cũng đã kiểm tra vấn đề liên quan đến RST-ACK và đã khắc phục nó. Đã có một cấu hình sai tạm thời tại máy chủ. Tuy nhiên, vấn đề nguồn gốc của tôi vẫn xảy ra: Việc SYN-ACKkhông vượt qua tường lửa. Tôi đã cập nhật các tập tin chụp của các giao diện bên trong / bên ngoài về trạng thái hiện tại.
muehsi

Làm thế nào bạn 'sửa chữa' RST-ACK? Đó là hành vi bình thường / dự kiến ​​của máy chủ. Tôi đã không nhìn vào các ảnh chụp mới, tôi sẽ cố gắng khi tôi tìm thấy nhiều thời gian hơn.
Eddie

1
@muehsi, có vẻ như tôi vẫn có vấn đề. AFAIK, Cloudshark (như mặc định của Wireshark) điều chỉnh các số thứ tự được hiển thị so với 0 để dễ đọc hơn. Tuy nhiên, SYN-ACK của bạn từ máy chủ đến máy khách đang hiển thị rằng đó là ACKing 2644561697 chứ không phải 1. Vì ACK không khớp với những gì tường lửa mong muốn nhìn thấy, nên nó sẽ bỏ nó.
YLearn

Về "hành vi bình thường", v.v. Chúng tôi đang sử dụng Trình kiểm tra tinh thần làm trình tạo lưu lượng truy cập (cho cả phía máy khách và máy chủ). Vì vậy, phản ứng, tức là liên quan đến hành vi khi không có ứng dụng nào nghe cổng có thể khác với HĐH bình thường. Nhưng đó là lý do tại sao chúng tôi muốn bắt tay 3 bước thủ công này (giống như thông tin cơ bản).
StephenKing

1

Bạn có thể chạy như sau trên ASA của bạn xin vui lòng:

// Kích hoạt tất cả chụp cho tất cả các giọt asp

ASA# capture asp-drop type asp-drop all

// Hiển thị bộ đệm chụp sẽ xác định lý do tại sao bắt tay không thành công

ASA# sh capture asp-drop

Sẽ hiển thị một cái gì đó tương tự như sau nhưng đối với loại thả cụ thể của bạn:

   2 packets captured
   1: 15:15:00.682154 197.2.1.29.2616 > 87.200.42.101.443: S 1239395083:1239395083(0) win 65535 <mss 1260,nop,nop,sackOK> Drop-reason: (acl-drop) Flow is denied by configured rule
   4: 15:15:00.750830 10.70.0.162.3812 > 168.252.3.41.15: S 3523756300:3523756300(0) win 65535 <mss 1360,nop,nop,sackOK> Drop-reason: (rpf-violated) Reverse-path verify failed

Hãy nhớ rằng một quy tắc cơ bản cho ASA là để bắt đầu lưu lượng truy cập từ giao diện bảo mật thấp hơn (Bên ngoài) sang giao diện bảo mật cao hơn (Bên trong) phải có mục nhập ACL rõ ràng để cho phép lưu lượng truy cập này đi qua. Không thấy cấu hình ASA của bạn, thật khó để nói điều gì có thể gây ra vấn đề.


-1

Bạn đang mô tả hoạt động bình thường / mặc định của ASA. Chỉ các kết nối TCP được thiết lập mới được phép từ NGOÀI TRỜI đến bên trong. Bạn có thể vô hiệu hóa điều này bằng cách cấu hình TCP State Bypass .

Step 1 Choose Configuration > Firewall > Service Policy.

Step 2 Click Add > Add Service Policy Rule.

Alternatively, if you already have a rule for the hosts, edit the rule.

Step 3 Select whether to apply the rule to a specific interface or globally to all interfaces, and click Next.

Step 4 For Traffic Classification, select Source and Destination IP Addresses (uses ACL) and click Next.

Step 5 For the ACL rule, enter the IP addresses of the hosts on each end of the route in Source and Destination, and specify the protocol as TCP. Click Next when finished.

For example, if you want to bypass TCP state checking between 10.1.1.1 and 10.2.2.2, enter:

Source = 10.1.1.1
Destination = 10.2.2.2
Destination Protocol = tcp
Step 6 On the Rule Actions page, click the Connection Settings tab and select TCP State Bypass.

Step 7 Click Finish to save the rule, and Apply to update the device.

(đồng nghiệp của @muehsi nói) Cảm ơn câu trả lời của bạn. Tuy nhiên, tôi nghĩ rằng đây không thể là lý do, vì lưu lượng khác (TCP trạng thái) không được tạo bởi các gói TCP thủ công từ trình tạo lưu lượng có thể truyền ASA từ ngoài vào trong. Nó bằng cách nào đó có bản chất của các gói mà Trafficgen đang gửi.
StephenKing
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.