포트에 대해 방화벽이 열렸지만 포트에서 수신 대기하지 않는지 확인하는 방법

포트에 대해 방화벽이 열렸지만 포트에서 수신 대기하지 않는지 확인하는 방법

우리는 서버에 새 애플리케이션을 배포할 예정이며 애플리케이션은 포트 8443에서 수신 대기하게 됩니다. 우리는 애플리케이션을 배포하기 전에 해당 서버에서 포트 8443에 대한 방화벽을 열도록 네트워크 팀에 요청했습니다. 현재 서버의 특정 포트를 수신하는 애플리케이션이 없습니다.

어쨌든 포트 8443에 대해 방화벽이 열려 있는지 확인할 수 있나요?

운영체제: 리눅스/윈도우

답변1

원격 시스템에서 TCP 연결을 형성할 수 있는지 확인하려면 해당 시스템과 대상 시스템에 OpenCSW를 설치하고 두 시스템 모두에 netcat을 설치하십시오. 다음은 netcat을 사용하여 TCP 연결을 테스트하는 구문입니다.

nc -vz targetServer portNum

예를 들어 "homeServer1"에서 SSH를 확인하려면 다음을 수행하세요.

nc -vz homeserver1 22

이를 통해 원격 시스템에서 TCP 수준 연결을 테스트할 수 있습니다. Netcat은 클라이언트 역할을 하지 않고 포트에서 수신하도록 구성할 수도 있습니다. TCP/8443에서 수신하도록 하려면:

애플리케이션을 수용할 서버에서:nc -l homeserver1 8443

방화벽 외부에 있는 머신에서:nc -vz homeserver.fqdn 8443

다음은 성공적인 실행의 예입니다.

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

실패한 실행:

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

답변2

방화벽~해야 한다로 답장하다ICMP 메시지요청을 차단할 때. 그러나 반드시 그런 것은 아닙니다(관심이 있으실 것입니다).이 좋은 기사).

외부에서 테스트하여 방화벽을 통해 포트에 액세스할 수 있는지, 그렇다면 포트에서 수신 대기 중인 항목이 있는지 확인할 수 있습니다. 다음 wireshark은 이나 다른 패킷 스니퍼 로 관찰할 수 있는 TCP 요청과 관련된 세 가지 시나리오와 표시되는 내용입니다 .

1) 방화벽이 요청을 거부합니다.

ICMP 메시지를 다시 받게 되면 요청하는 도구는 즉시 이 효과에 대한 내용("접근 불가능, 관리자 금지" 등)을 알려줄 것입니다. "도구"란 요청을 보내는 데 사용하는 클라이언트를 의미합니다(저는 를 사용했습니다 telnet). 메시지 1 의 세부 사항은 방화벽 구성 방법에 따라 다르지만 "포트에 연결할 수 없음"이 가장 일반적일 것입니다.

"호스트에 대한 경로 없음"은 이를 나타낼 수도 있지만 보다 미묘한 라우팅 문제를 나타낼 수도 있습니다.

2) 방화벽이 패킷을 삭제합니다.

응답이 없으므로 도구는 시간이 초과되거나 지루해질 때까지 기다립니다.

3) 방화벽이 패킷을 허용하지만(또는 방화벽이 없음) 포트에서 수신 대기 중인 항목이 없습니다.

TCP RST/ACK 메시지를 다시 받습니다. 나는 TCP 프로토콜이 이것을 요구한다고 가정합니다. 즉, 포트에서 수신 대기 중인 항목이 없으면 OS 자체가 이 응답을 보냅니다. 도구가 보고하는 내용만으로는 이를 #1과 구별하기 어려울 수 있습니다.5월두 경우 모두 같은 말을 합니다(그러나 대부분은 이것을 "연결 거부됨"과 #1, "네트워크에 연결할 수 없음"으로 구분합니다). 클라이언트 시스템의 패킷 스니퍼에서 관찰된 시나리오 #1(ICMP 거부 메시지)과 #3(TCP RST/ACK 메시지)은 명확하게 구분됩니다.

여기서 유일한 다른 옵션은 패킷이 방화벽을 통해 허용되고 무언가가 수신 대기 중이므로 성공적인 연결을 얻는 것입니다.

즉, 네트워킹이 일반적으로 제대로 작동한다고 가정할 때 1번 또는 2번이 표시되면 방화벽이 포트에 대한 액세스를 적극적으로 차단하고 있음을 의미합니다. #3은 서버가 실행되고 있지 않지만 포트에 액세스할 수 있는 경우 발생하며 물론 (암시적) #4는 성공적인 연결입니다.


  1. 예: "포트에 연결할 수 없음", "호스트 금지됨", 기타 다양한 조합호스트/포트/관리자그리고도달할 수 없음/금지됨; 이는 IP 방화벽이 작동 중임을 명시적으로 나타내므로 메시지에서 이를 찾아보십시오.

답변3

netstat이 명령을 사용하여 포트가 열려 있고 수신 대기 중인지 확인할 수 있습니다.

$ 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 

출력에는 프로세스가 표시됩니다.(가장 오른쪽 열)TCP 포트에서 수신 대기 중입니다. 포트 번호는 IP 주소 뒤의 콜론 뒤에 오는 숫자입니다(예를 들어 0.0.0.0:111은 포트 111임).

IP 주소가 표시됩니다.현지의그리고외국 주소.현지의당신의 시스템이 될 것입니다외국의TCP 포트에 연결되거나 TCP 포트 중 하나에 연결되는 모든 주소가 될 것입니다.

따라서 포트 22의 경우 이는 내 시스템에서 실행되는 SSH 데몬입니다.청취연결을 위해. 누군가 데몬에 연결을 시도하면 ssh자체 복사본을 포크하고 해당 연결을 다른 포트로 푸시하여 추가 연결이 들어올 때 TCP 포트 22를 열어 둡니다.

답변4

최근에 같은 요청을 받고 스레드에 왔습니다. 출력을 쿼리할 때 다음과 같이 nc 명령을 사용하여 FW의 열린 포트를 스캔할 수 있었습니다.

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

기본적으로 '시간 초과'가 발생하면 FW에서 포트가 열려 있지 않다는 의미입니다.

관련 정보