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


29

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

Câu trả lời:


16

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 hay 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 các kết nối TCP:

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:

[jadavis6@ditirlns01 ~]$ 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:

[jadavis6@ditirlns01 ~]$ nc -vz ditirlns01.ncat.edu 8443
nc: connect to ditirlns01.ncat.edu port 8443 (tcp) failed: Connection refused

Điều này không (hoàn toàn) giải quyết câu hỏi liệu tường lửa có chặn cổng không. Có vẻ như nccác báo cáo "Kết nối bị từ chối" khi cổng có thể truy cập được, nhưng không có người nghe và "Mạng không thể truy cập được" khi yêu cầu bị tường lửa gửi qua icmp (có nghĩa là có thể có hoặc không có dịch vụ trên cổng ). Nếu tường lửa làm rơi gói tin thay vì thực sự từ chối nó, ncsẽ chỉ bị treo trong một thời gian.
goldilocks

Mục tiêu của tôi với lệnh netcat cuối cùng chỉ là cung cấp một ví dụ về việc thực hiện thành công và thực hiện không thành công để giúp họ giải thích bất kỳ kết quả nào về phía họ nếu không rõ ràng vì lý do nào đó. Phần trả lời câu hỏi của họ là phần "Trên máy" / "Trên máy chủ" đầu tiên.
Bratchley

Tôi biết câu hỏi liên quan đến Solaris 10, nhưng là một FYI, v11 có sẵn netcat trong repo.
buồn ngủ ngày

15

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 wiresharkhoặ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.). "Công cụ" Tôi có nghĩa là khách hàng 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 thông báo 1 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 đường đế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ệ điều hành sẽ tự trả lời. 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ó có thể 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" ). Được 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ênkhô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.

4

Bạn có thể sử dụng lệnh netstat để xem nếu một cổng được mở và lắng nghe.

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 chỉ địa phươngnước ngoài . Địa phương 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 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 sshdaemon, 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 22 mở cho các kết nối bổ sung khi chúng đến.


Chỉ là một FYI mà cú pháp netstat rất đặc trưng cho GNU, đây là tương đương gần nhất hoạt động trên Solaris: netstat -a -P tcp -f inet | awk '/LISTEN$/ {print $0}'
Bratchley

Phương châm của Solaris nên là "Không có gì là dễ dàng cả."
Bratchley

1

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

Cảm ơn bạn đã giúp đỡ. Thật không may, lệnh này không có trong Solaris (hoặc chưa được cài đặt). Tôi đang nhận được "nmap: lệnh không tìm thấy"
yottabrain

@ user1734143 có thể nằm trong "kho" hoặc tương đương Solaris, nhưng dù sao bạn cũng có thể tải xuống và thậm chí biên dịch nó từ đây
RSFalcon7

@ user1734143 nó có sẵn thông qua OpenCSW, mà bạn có thể nên cài đặt bằng mọi cách, giúp trải nghiệm quản trị của bạn RẤT NHIỀU.
Bratchley

1

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.


0

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.

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.