나는 원격 컴퓨터의 특정 포트(예: http/ftp/ssh)에서 어떤 서비스가 실행되고 있는지 확인할 수 있는 명령줄 유틸리티를 찾고 있습니다.
이와 같은 프로그램이 실행될 것이라고 상상하는 예는 다음과 같습니다.
kess@KG-PC:~$ portcheck google.com:80
Port 80 of google.com is running a(n) "http" server
답변1
이러한 식별을 수행하는 가장 쉬운 방법은 이 포트에 연결을 설정하고 배너를 잡는 것입니다. 배너는 (일반적으로) 이것이 Apache httpd, openssh 등인지 알려줄 수 있습니다. 배너 목록은 상당히 클 수 있습니다. GET / HTTP/1
서비스가 응답하는지 확인하는 것과 같은 일부 명령을 시도해 볼 수도 있습니다 . 일반 텍스트 명령에는 telnet
충분합니다 . 암호화(SSL/TLS)의 경우 openssl s_client
.
AFAIK nmap
이와 같은 작업이 가능하므로 소스 코드를 다운로드하고 거기에서 어떻게 수행되는지 확인할 수 있습니다.
하나의 도구만 사용하려는 경우 다음을 테스트할 수 있습니다.
nmap -A google.com -p 80
답변2
ss
필터와 함께 이 -p
옵션을 사용하여 특정 포트를 사용하는 프로세스를 표시할 수 있습니다.
대상 포트별로 필터링:
ss -p dst = :<port>
소스 포트별로 필터링:
ss -p src = :<port>
프로세스를 얻으려면 루트 권한이 필요할 수 있습니다.
원격 컴퓨터에 액세스할 수 없는 경우 를 사용하여 포트 검색을 수행할 수 있습니다 nmap
. 여기에는 열려 있는 포트와 포트와 관련된 일반 서비스가 나열되지만 포트가 임의로 변경될 수 있으므로 해당 서비스가 컴퓨터에서 실제로 사용되는 서비스라는 보장은 없습니다.
특정 포트 범위를 사용한 기본 스캔:
nmap -p <first-port>-<last-port> <host>