웹사이트 검색

15 FreeBSD에서 열린 포트를 찾는 데 유용한 'Sockstat 명령 예제'


Sockstat은 FreeBSD에서 네트워크 및 시스템 개방형 소켓을 표시하는 데 사용되는 다목적 명령줄 유틸리티입니다. 주로, FreeBSD에는 sockstat 명령이 기본적으로 설치되어 있으며 일반적으로 FreeBSD 시스템에서 특정 네트워크 포트를 연 프로세스의 이름을 표시하는 데 사용됩니다.

그러나 sockstat은 프로토콜 버전(두 IP 버전 모두), 연결 상태 및 데몬이나 프로그램이 바인딩하고 수신하는 포트에 따라 열린 소켓을 나열할 수도 있습니다.

더 읽기: 네트워크 연결을 확인하는 데 유용한 'netstat' 명령 예 20개

또한 일반적으로 Unix 도메인 소켓 또는 IPC로 알려진 프로세스 간 통신 소켓을 표시할 수도 있습니다. grep 필터와 결합되거나 awk 유틸리티를 통해 연결되는 Socksstat 명령은 로컬 네트워킹 스택을 위한 강력한 도구임이 입증되었습니다.

소켓을 소유한 사용자, 네트워크 소켓의 파일 설명자 또는 소켓을 연 프로세스의 PID를 기반으로 열린 연결에 대한 결과를 축소할 수 있습니다.

이 가이드에서는 FreeBSD의 매우 강력한 sockstat 명령줄 네트워킹 유틸리티의 몇 가지 일반적인 활용 사례를 나열합니다.

요구사항

  1. FreeBSD 11.1 설치 안내서

1. FreeBSD에서 열린 모든 포트 나열

옵션이나 스위치 없이 간단히 실행하면, 양말 스타트 명령은 아래 스크린샷에 표시된 대로 FreeBSD 시스템에 열려 있는 모든 소켓을 표시합니다.

sockstat

sockstat 출력에 표시되는 값은 다음과 같이 설명됩니다.

  • USER : 소켓의 소유자(사용자 계정)입니다.
  • COMMAND : 소켓을 연 명령입니다.
  • PID : 소켓을 소유한 명령의 프로세스 ID입니다.
  • FD : 소켓의 파일 설명자 번호입니다.
  • PROTO : UNIX 소켓용 Unix 도메인 소켓(데이터그램, 스트림 또는 seqpac)의 경우 열린 소켓 또는 소켓 유형과 연관된 전송 프로토콜(일반적으로 TCP/UDP)입니다.
  • LOCAL ADDRESS : IP 기반 소켓의 로컬 IP 주소를 나타냅니다. Unix 소켓의 경우 소켓에 연결된 엔드포인트 파일 이름을 나타냅니다. <코드>“?? ” 표기법은 소켓 끝점을 인식하거나 설정할 수 없음을 의미합니다.
  • 외국 주소 : 소켓이 연결된 원격 IP 주소입니다.

2. FreeBSD에서 수신 또는 열린 포트 나열

-l 플래그를 사용하여 실행하면 sockstat 명령은 네트워킹 스택에 열려 있는 모든 수신 소켓과 시스템의 일종의 로컬 데이터 처리와 관련된 모든 열려 있는 Unix 도메인 소켓 또는 명명된 파이프를 표시합니다.

sockstat -l

3. FreeBSD에서 IPv4 개방 포트 나열

IPv4 프로토콜에 대해서만 열려 있는 모든 소켓을 표시하려면 아래 예에 제안된 대로 -4 플래그와 함께 명령을 실행하십시오.

sockstat -4

4. FreeBSD에서 IPv6 열린 포트 나열

IPv4 버전과 마찬가지로 아래와 같이 명령을 실행하여 IPv6 전용으로 열린 네트워크 소켓을 표시할 수도 있습니다.

sockstat -6

5. FreeBSD에서 TCP 또는 UDP 열린 포트 나열

TCP 또는 UDP와 같은 지정된 네트워크 프로토콜만을 기반으로 하는 네트워크 소켓을 표시하려면 -P 플래그를 사용하고 그 뒤에 프로토콜의 인수 이름입니다.

프로토콜 이름은 /etc/protocols 파일의 내용을 검사하여 찾을 수 있습니다. 현재 ICMP 프로토콜은 sockstat 도구에서 지원되지 않습니다.

TCP 소켓만 표시
sockstat -P tcp

UDP 소켓만 표시
sockstat -P udp

두 프로토콜을 모두 연결합니다.

sockstat –P tcp,udp

6. TCP 및 UDP 특정 포트 번호 나열

로컬 또는 원격 포트 번호를 기반으로 모든 TCP 또는 UDP IP 열린 소켓을 표시하려면 아래 스크린샷에 표시된 대로 아래 명령 플래그와 구문을 사용하십시오.

sockstat -P tcp -p 443             [Show TCP HTTPS Port]
sockstat -P udp -p 53              [Show UDP DNS Port] 
sockstat -P tcp -p 443,53,80,21    [Show Both TCP and UDP]

7. FreeBSD에서 열려 있고 연결된 포트 나열

열려 있고 연결된 모든 소켓을 표시하려면 -c 플래그를 사용하십시오. 아래 샘플에 표시된 것처럼 명령을 실행하여 모든 HTTPS 연결된 소켓 또는 모든 TCP 연결된 소켓을 나열할 수 있습니다.

sockstat -P tcp -p 443 -c
sockstat -P tcp -c

8. FreeBSD의 네트워크 수신 포트 나열

수신 상태에서 열려 있는 모든 TCP 소켓을 나열하려면 아래 예와 같이 -l-s 플래그를 추가합니다. 비연결 프로토콜이기 때문에 UDP는 연결 상태에 대한 정보를 유지하지 않습니다.

UDP 열린 소켓은 해당 상태를 사용하여 표시할 수 없습니다. UDP 프로토콜은 데이터그램을 사용하여 데이터를 전송/수신하고 연결 상태를 결정하는 기본 제공 메커니즘이 없기 때문입니다.

sockstat -46 -l -s

9. Unix 소켓 및 명명된 파이프 나열

Unix 도메인 소켓은 물론 명명된 파이프와 같은 다른 형태의 로컬 프로세스 간 통신도 아래 이미지에 표시된 대로 -u 플래그를 사용하여 sockstat 명령으로 표시할 수 있습니다.

sockstat -u

10. FreeBSD에서 애플리케이션에 의해 열린 포트 나열

특정 응용 프로그램이나 명령에 의해 열린 포트 목록을 표시하기 위해 Socksstat 명령 출력은 grep 유틸리티를 통해 필터링될 수 있습니다.

Nginx 웹 서버와 연결된 모든 소켓을 나열하고 싶다면 다음 명령을 실행하여 작업을 수행할 수 있습니다.

sockstat -46 | grep nginx

Nginx 웹 서버와 연관된 연결된 소켓만 표시하려면 다음 명령을 실행하십시오.

sockstat -46 -c| grep nginx

11. HTTPS 연결 프로토콜 나열

아래 명령을 실행하면 각 연결 상태와 함께 HTTPS 프로토콜과 연결된 모든 연결된 소켓을 나열할 수 있습니다.

sockstat -46 -s -P TCP -p 443 -c

12. HTTP 원격 소켓 나열

HTTP 프로토콜과 연결된 모든 원격 소켓을 나열하려면 다음 명령 조합 중 하나를 실행할 수 있습니다.

sockstat -46 -c | egrep '80|443' | awk '{print $7}' | uniq -c | sort -nr
sockstat -46 -c -p 80,443 | grep -v ADDRESS|awk '{print $7}' | uniq -c | sort -nr

13. IP 주소로 가장 높은 HTTP 요청 찾기

각 원격 IP 주소에서 요청한 HTTP 연결 수를 확인하려면 아래 명령을 실행하십시오. 이 명령은 웹 서버가 일종의 DDOS 공격을 받고 있는지 확인하려는 경우 매우 유용할 수 있습니다. 의심스러운 경우 요청률이 가장 높은 IP 주소를 조사해야 합니다.

sockstat -46 -c | egrep '80|443' | awk '{print $7}' | cut -d: -f1 | uniq -c | sort –nr

14. DNS 개방형 소켓 나열

TCP 전송 프로토콜을 통해 내부 클라이언트에 서비스를 제공하기 위해 구내에 캐싱 및 전달 DNS 서버를 구성했으며 모든 소켓 목록을 표시하려는 경우
확인자에 의해 열린 소켓 연결 상태와 함께 다음 명령을 실행합니다.

sockstat -46 -P tcp –p 53 -s

15. 로컬 도메인에서 TCP DNS 쿼리

네트워크에 DNS 트래픽이 없는 경우 다음 dig 명령을 실행하여 로컬 시스템 콘솔에서 TCP 소켓에 대한 DNS 쿼리를 수동으로 트리거할 수 있습니다. 그런 다음 위 명령을 실행하여 모든 확인자 소켓을 나열합니다.

dig +tcp  www.domain.com  @127.0.0.1

그게 다야! netstat 및 lsof 명령줄 유틸리티와 함께 sockstat 명령줄은 네트워크 정보를 획득하고 FreeBSD 네트워킹 스택과 네트워킹 관련 프로세스 및 서비스의 여러 측면에 대한 문제를 해결하는 데 사용되는 강력한 유틸리티입니다.

Linux의 FreeBSD sockstat 명령 대응은 netstat 또는 새로 나온 ss 명령으로 표시됩니다. 믿거나 말거나, sockstat 유틸리티를 기반으로 Android OS용으로 개발된 SockStat – Simple Netstat GUI라는 유사한 애플리케이션을 찾을 수 있습니다.