원격 호스트 / 포트가 열려 있는지 확인-GNU Netcat 또는 NMap을 사용할 수 없음-RHEL 7


17

현재 인프라 팀은 RHEL7이 기본 OS로 설치된 새로운 VM을 출시하고 있습니다. 이 특정 이미지는 nmap-ncatNetcat 버전 과 함께 제공되며 NMap이 설치되어 있지 않습니다. 우리는 기계에 아무것도 설치할 수 없습니다.

이전 -z에는 원격 호스트 / 포트를 스캔하여 열려 있는지 확인 하는 옵션 이있는 GNU Netcat을 사용 했습니다. 이 같은:

nc -z -v -w 3 remote.host.name 1234

설치할 수없는 시스템에 옵션 ncat이없는 새로운 것과 동일한 검사를 어떻게 수행 할 수 있습니까?-znmap


1
포트가 열려 있는지 / 닫혀 있는지 확인하는 이유는 무엇입니까? 이것이 모니터링 솔루션의 일부입니까?
ewwhite

1
우리는 -zNcat 에 들어가기 위해 노력하고 있지만 한동안 Red Hat에 있지 않을 것입니다. github.com/nmap/nmap/pull/444
bonsaiviking

@ewwhite 포인트 A와 포인트 B 사이에 네트워크 ACL이 열려 있는지 확인해야합니다. 예를 들어, 응용 프로그램 서버가 포트 1521에서 DB 서버와 TCP를 통신 할 수
있습니까?

답변:


16

Bash를 사용하면 특수 파일로 리디렉션하여 TCP 및 / 또는 UDP 포트에 연결할 수 있습니다.

/dev/tcp/host/port host가 유효한 호스트 이름 또는 인터넷 주소이고 port가 정수 포트 번호 또는 서비스 이름 인 경우 Bash는 해당 TCP 소켓을 열려고 시도합니다.

/dev/udp/host/port host가 유효한 호스트 이름 또는 인터넷 주소이고 port가 정수 포트 번호 또는 서비스 이름 인 경우 Bash는 해당 UDP 소켓을 열려고 시도합니다.

파일을 열거 나 만들지 못하면 리디렉션이 실패합니다.

www.example.com에서 포트 80에 연결할 수 있는지 테스트하려면 다음이 작동합니다.

echo -n > /dev/tcp/www.example.com/80

포트가 차단되면 "연결 거부"메시지가 표시되거나 시간 초과됩니다.


1
포트에 telnet도 가능
Ryan Babchishin

예. 그러나 RHEL 7의 최소 설치에는 bash가 항상 존재하는 텔넷 RPM이 포함되어 있지 않습니다.
HBruijn

2
정말? 상황이 어떻게 변했는지
Ryan Babchishin

1
@RyanBabchishin과 많은 보안 지침은 텔넷 클라이언트를 제거하여 다른 것에 로그인하는 것이 안전하지 않다는 사실을 근거로합니다. 방대한 문제 해결 용도를 무시합니다.
Jason Martin

@JasonMartin Pfft
라이언 밥 치신

9

Ncat은 아직을 지원하지 않지만 -z쉘 리디렉션에서도 동일한 동작을 얻을 수 있습니다.

$ ncat google.com 80 </dev/null >/dev/null && echo "yes"
yes
$ ncat google.com 81 </dev/null >/dev/null && echo "yes"
Ncat: Connection timed out.
$ ncat scanme.nmap.org 1234 </dev/null >/dev/null && echo "yes"
Ncat: Connection refused.

-w옵션 으로 연결 시간 초과를 조정할 수 있습니다 .

편집 : Ncat 7.25BETA2-zGNU netcat과 마찬가지로 작동하지만 단일 포트에서만 작동 하는 옵션을 도입했습니다 . 포트 범위를 스캔해야하는 경우 Nmap을 사용해야합니다.


2

netcat, telnet 또는 nmap이 필요하지 않습니다. 배시는 더 간단하고 휴대 가능하며 더 효율적입니다.

오픈 체크

(>/dev/tcp/example.com/80) &>/dev/null && echo "Open" 

열림 / 닫힘 확인

(>/dev/tcp/example.com/80) &>/dev/null && echo "Open" || echo "Closed"

포트 범위 확인

for i in $(seq 80 88); do (>/dev/tcp/example.com/80/$i) &>/dev/null && echo $i Open|| echo $i Closed; done
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.