Nmap은 훌륭한 포트 스캐너이지만 때로는 더 권위있는 것을 원할 수도 있습니다. netstat
유틸리티 를 사용하여 커널에 어떤 프로세스가 어떤 포트를 열 었는지 커널에 요청할 수 있습니다 .
me @ myhost : ~ $ sudo netstat -tlnp
활성 인터넷 연결 (서버 만)
프로토 Recv-Q Send-Q 로컬 주소 외부 주소 상태 PID / 프로그램 이름
tcp 00 127.0.0.1:53 0.0.0.0:* 듣기 1004 / dnsmasq
tcp 0 0.0.0.0:22 0.0.0.0:* 듣기 380 / sshd
tcp 00 127.0.0.1:631 0.0.0.0:* 듣기 822 / cupsd
tcp600 ::: 22 ::: * 듣기 380 / sshd
tcp600 :: 1 : 631 ::: * 듣기 822 / cupsd
내가 제공 한 옵션은 다음과 같습니다.
-t
TCP 만
-l
청취 포트만
-n
서비스 및 호스트 이름을 찾지 말고 숫자 만 표시하십시오.
-p
프로세스 정보 표시 (루트 권한 필요)
이 경우 sshd
인터페이스 ( 0.0.0.0
) 포트 22에서 cupsd
수신 127.0.0.1
중이고 루프백 ( ) 포트 631 에서 수신 중임을 알 수 있습니다. 출력 telnetd
에 로컬 주소가 이라고 표시 될 수 있습니다 192.168.1.1:23
. 즉, 루프백 어댑터의 연결에 응답하지 않습니다. (예 : 할 수 없음 telnet 127.0.0.1
).
유사한 정보를 표시하는 다른 도구 (예 : lsof
또는 /proc
)가 있지만 netstat가 가장 널리 사용됩니다. 심지어 Windows ( netstat -anb
) 에서도 작동합니다 . BSD netstat는 약간 다릅니다. 대신에 프로세스 정보를 얻으려면 sockstat (1) 을 사용해야 합니다.
프로세스 ID와 프로그램 이름이 있으면 포트를 닫으려면 프로세스를 찾아서 종료 할 수 있습니다. 보다 세밀한 제어를 위해 방화벽 (Linux의 iptables)을 사용하여 특정 주소로의 액세스를 제한 할 수 있습니다. 서비스 시작을 비활성화해야 할 수도 있습니다. Linux에서 PID가 "-"인 경우 아마도 커널 프로세스 일 수 있습니다 (예를 들어 NFS에서 일반적 임). 이것이 무엇인지 알아내는 것이 좋습니다.
참고 : 네트워크 상태와 방화벽에 방해받지 않기 때문에 "정식"이라고했습니다. 컴퓨터를 믿으면 좋습니다. 그러나 해킹 당했다고 의심되면 컴퓨터의 도구를 신뢰하지 못할 수 있습니다. 표준 유틸리티 (및 때때로 시스템 호출)를 특정 프로세스 나 포트 (일명 루트킷)를 숨기는 유틸리티로 대체하는 것은 공격자에게 표준 관행입니다. 이 시점에서 가장 좋은 방법은 디스크의 법 의학적 사본을 만들고 백업에서 복원하는 것입니다. 그런 다음 사본을 사용하여 들어온 방법을 결정하고 닫습니다.
localhost
액세스하고lo
있습니다. IP 주소는 아마 실제 인터페이스를 accesing있다eth0
거나wlan0
또는 somesuch.