tra-loi-cau-hoi-phat-trien-web.com

Cách kiểm tra xem tường lửa có mở cổng không nhưng không nghe trên cổng

Chúng tôi sẽ triển khai một ứng dụng mới cho Máy chủ và ứng dụng sẽ lắng nghe trên cổng 8443. Chúng tôi đã yêu cầu nhóm Mạng mở tường lửa cho cổng 8443 trên máy chủ đó trước khi triển khai ứng dụng. Hiện tại không có ứng dụng nào nghe trên cổng cụ thể đó trên máy chủ.

Có dù sao tôi có thể chắc chắn rằng tường lửa được mở cho cổng 8443

HĐH: Linux/Windows

31
yottabrain

Nếu bạn muốn xem liệu bạn có thể tạo kết nối TCP từ một máy từ xa không, hãy cài đặt OpenCSW trên máy đó và máy đích và cài đặt netcat trên cả hai. Đây là cú pháp sử dụng netcat để kiểm tra TCP kết nối:

nc -vz targetServer portNum

Ví dụ: để kiểm tra SSH trên "homeServer1":

nc -vz homeserver1 22

Điều đó cho phép bạn kiểm tra kết nối cấp TCP từ hệ thống từ xa. Netcat cũng có thể được cấu hình để nghe trên một cổng chứ không phải hoạt động như một máy khách. Để nghe nó trên TCP/8443:

Trên máy chủ sẽ chứa ứng dụng: nc -l homeserver1 8443

Trên một máy nằm ngoài tường lửa: nc -vz homeserver.fqdn 8443

Đây là một ví dụ về thực thi thành công:

[[email protected] ~]$ nc -vz ditirlns01.ncat.edu 8443
Connection to ditirlns01.ncat.edu 8443 port [tcp/pcsync-https] succeeded!

Một thực thi thất bại:

[[email protected] ~]$ nc -vz ditirlns01.ncat.edu 8443
nc: connect to ditirlns01.ncat.edu port 8443 (tcp) failed: Connection refused
18
Bratchley

Tường lửa nên trả lời bằng tin nhắn ICMP khi họ chặn yêu cầu. Tuy nhiên, điều này không nhất thiết phải như vậy (bạn sẽ quan tâm đến bài viết hay này ).

Bạn có thể kiểm tra từ bên ngoài để xem liệu một cổng có thể truy cập thông qua tường lửa hay không và nếu có thì có nghe thấy gì không. Đây là ba kịch bản khác nhau liên quan đến yêu cầu tcp mà bạn có thể quan sát với wireshark hoặc một số gói sniffer khác và những gì bạn sẽ thấy:

1) Tường lửa từ chối yêu cầu

Bạn nhận được tin nhắn ICMP trở lại và công cụ thực hiện yêu cầu sẽ ngay lập tức cho bạn biết điều gì đó về hiệu ứng này ("không thể truy cập, quản trị viên bị cấm", v.v.). Theo "công cụ", ý tôi là ứng dụng khách bạn đang sử dụng để gửi yêu cầu (Tôi đã sử dụng telnet). Các chi tiết của tin nhắn1 phụ thuộc vào cách cấu hình tường lửa, nhưng "cổng không thể truy cập" có lẽ là phổ biến nhất.

"Không có tuyến đến máy chủ" có thể chỉ ra điều này, nhưng nó cũng có thể chỉ ra các vấn đề định tuyến tinh tế hơn.

2) Tường lửa làm rơi gói

Không có trả lời, vì vậy công cụ sẽ đợi cho đến khi hết thời gian hoặc bạn cảm thấy buồn chán.

3) Tường lửa cho phép gói (hoặc không có tường lửa), nhưng không có gì nghe trên cổng.

Bạn nhận được thông báo TCP RST/ACK. Tôi đoán giao thức TCP yêu cầu điều này. Nói cách khác, nếu không có gì nghe trên cổng, HĐH chính nó gửi trả lời này. Có thể khó phân biệt điều này với # 1 chỉ dựa trên những gì một công cụ báo cáo, bởi vì nó may nói điều tương tự trong cả hai trường hợp (tuy nhiên, hầu hết có thể phân biệt điều này là "kết nối bị từ chối" so với # 1, "không thể truy cập mạng"). Quan sát trong gói sniffer trên máy khách, kịch bản # 1 (tin nhắn từ chối ICMP) và # 3 (tin nhắn TCP RST/ACK) rõ ràng rõ ràng.

Tùy chọn duy nhất khác ở đây là gói được tường lửa cho phép và một cái gì đó đang lắng nghe, do đó bạn có được kết nối thành công.

Nói cách khác: giả sử mạng của bạn nói chung hoạt động bình thường, nếu bạn nhận được số 1 hoặc số 2, điều đó có nghĩa là tường lửa đang chủ động ngăn chặn truy cập vào cổng. # 3 sẽ xảy ra nếu máy chủ của bạn không chạy nhưng cổng có thể truy cập được và tất nhiên (ẩn) # 4 là một kết nối thành công.


  1. Ví dụ: "cổng không thể truy cập", "Máy chủ bị cấm", nhiều kết hợp khác của Máy chủ/cổng/quản trị viên không thể truy cập/bị cấm; hãy tìm những thứ này trong tin nhắn vì chúng là một dấu hiệu rõ ràng của tường lửa IP đang phát.
16
goldilocks

Bạn có thể sử dụng lệnh netstat để xem cổng có mở và nghe không.

Thí dụ

$ netstat -anp | less
Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:41716               0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      -                   
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:17500               0.0.0.0:*                   LISTEN      3034/dropbox        
tcp        0      0 0.0.0.0:17501               0.0.0.0:*                   LISTEN      3033/dropbox        
tcp        0      0 127.0.0.1:2143              0.0.0.0:*                   LISTEN      3191/ssh                       
tcp        0      0 127.0.0.1:2025              0.0.0.0:*                   LISTEN      3191/ssh 

Đầu ra hiển thị các quy trình (cột xa nhất bên phải) đang lắng nghe trên các cổng TCP. Số cổng là số theo dấu hai chấm sau địa chỉ IP (ví dụ 0,0.0.0:111 sẽ là cổng 111).

Các địa chỉ IP hiển thị Địa phươngĐịa chỉ nước ngoài. Cục bộ sẽ là hệ thống của bạn trong khi Nước ngoài sẽ là bất kỳ địa chỉ nào kết nối với cổng TCP của bạn hoặc bạn kết nối với một trong các cổng TCP của họ.

Vì vậy, trong trường hợp của cổng 22, đó là ssh daemon đang chạy trên hệ thống của tôi, đó là LẮNG NGHE cho các kết nối. Khi ai đó cố gắng kết nối với ssh daemon, nó sẽ tạo một bản sao của chính nó và đẩy kết nối đó sang một cổng khác, giữ cho cổng TCP mở cho các kết nối bổ sung khi chúng đến.

5
slm

Cấu hình và trạng thái của cấu hình tường lửa là tường lửa/HĐH cụ thể.

Những gì bạn có thể làm là thử nó từ server2:

nmap server1
1
RSFalcon7

Gần đây tôi đã có cùng một yêu cầu và đến với chủ đề. Tôi đã có thể quét các cổng mở trên FW bằng lệnh nc, như thế này khi tôi truy vấn đầu ra của nó:

nc -v -w 1 -z -s *srcIP destIP port* 2>&1 | grep timed > /dev/null && echo closed || echo open

Về cơ bản, nếu tôi bị 'hết thời gian' thì có nghĩa là cổng không mở trên FW.

1
Ross

Bạn có thể sử dụng một công cụ trực tuyến như www.firewallruletest.com để xem các máy chủ bên ngoài có thể thiết lập kết nối tcp hay không.

0
Curt