답변:
원격 시스템에서 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
방화벽 은 요청을 차단할 때 ICMP 메시지로 응답 해야합니다 . 그러나 이것은 반드시 그런 것은 아닙니다 ( 이 좋은 기사에 관심 이 있을 것입니다 ).
외부에서 테스트하여 방화벽을 통해 포트에 액세스 할 수 있는지 여부와 포트가 수신 중인지 여부를 확인할 수 있습니다. 다음은 tcp 요청 wireshark
이나 다른 패킷 스니퍼로 관찰 할 수있는 세 가지 시나리오와 다음과 같은 시나리오입니다 .
1) 방화벽이 요청을 거부 함
ICMP 메시지가 다시 나타나고 요청하는 도구는 즉시이 효과에 대한 정보를 알려야합니다 ( "도달 불가능, 관리자 금지"등). "도구"는 요청을 보내는 데 사용하는 클라이언트를 의미합니다 (사용했습니다 telnet
). 메시지 1 의 세부 사항은 방화벽 구성 방법에 따라 다르지만 "포트 도달 불가능"이 가장 일반적 일 수 있습니다.
"호스트에 대한 경로 없음"은이를 나타낼 수 있지만 더 미묘한 라우팅 문제를 나타낼 수도 있습니다.
2) 방화벽이 패킷을 삭제함
응답이 없으므로 도구가 시간 초과되거나 지루해질 때까지 기다립니다.
3) 방화벽은 패킷을 허용하지만 방화벽이 없으면 포트에서 수신 대기하는 것이 없습니다.
TCP RST / ACK 메시지가 다시 나타납니다. TCP 프로토콜에 이것이 필요하다고 가정합니다. 다시 말해, 포트에서 수신 대기하는 것이 없으면 OS 자체가이 응답을 보냅니다. 도구가보고하는 내용에 따라 두 가지 경우에 모두 동일한 내용을 말할 수 있기 때문에이를 # 1과 구별하기가 어려울 수 있습니다. ). 클라이언트 시스템의 패킷 스니퍼에서 관찰되는 시나리오 # 1 (ICMP 거부 메시지)과 # 3 (TCP RST / ACK 메시지)은 명확합니다.
여기에서 유일한 다른 옵션은 방화벽이 패킷을 통과하고 무언가가 수신 중이므로 성공적으로 연결되는 것입니다.
다시 말해, 일반적으로 네트워킹이 제대로 작동한다고 가정하면 # 1 또는 # 2를 얻는 경우 방화벽이 포트에 대한 액세스를 적극적으로 차단하고 있음을 의미합니다. # 3은 서버가 실행되고 있지 않지만 포트에 액세스 할 수 있고 물론 (암시 적) # 4가 성공적으로 연결되면 발생합니다.
명령 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를 열어 둡니다.
netstat -a -P tcp -f inet | awk '/LISTEN$/ {print $0}'
방화벽 구성의 구성 및 상태는 방화벽 / OS에 따라 다릅니다.
당신이 할 수있는 일은 server2에서 시도하는 것입니다.
nmap server1
nc
요청이 방화벽을 통해 ICMP (또는 포트에서 서비스가되지 않을 수 있습니다 의미로 반송 된 경우 "네트워크에 연결할 수없는"포트가 액세스 할 수 있지만 더 리스너가 없을 때, 그리고 보고서 "연결이 거부" ). 방화벽이 실제로 거부하지 않고 패킷을 삭제하면nc
잠시 동안 중단됩니다.