카테고리 없음

[Network] ss 명령어로 열린 포트와 서비스 상태 확인하기

강_토발즈 2025. 4. 11. 12:01

 

<< 주제 선정 이유 >>

 

서버든, 클라이언트든 어떤 포트에서 어떤 프로그램이 통신 중인지 확인하는 것은 매우 중요하다. 특정 포트가 열려있는지 닫혀있는지, 또 만약 포트는 열려있는데 프로세스와 통신이 안되는 장애가 발생한다면, ss 명령어를 통해 문제 포트와 프로세스의 상태를 확인하여 점검하는 것이 매우 유용하다.


1. ss 명령어 

socket state 의 줄임말로, 내 시스템에서 어떤 포트가 열려있고, 어떤 서비스가(프로세스) 동작 중인지 확인할 수 있는 명령어이다. netstat 명령어도 비슷한 역할을 할 수 있지만, ss 가 더 빠르고 정확해서 최근엔 표준 도구처럼 자리 잡았다고 한다.
참고로 소켓과 포트의 의미상 차이와, ss 명령어에 대한 공부는 리눅스 마스터 2급 공부를 하며 개념을 포스팅 한 적이 있다. 오늘은 개념보다 실제 사용과 netstat 명령어와의 차이에 좀 더 초점을 맞추고자 한다.

https://cs-study1.tistory.com/86

 

[리눅스 명령어] ss 명령어

1. 명령어의 정의1ss 명령어는 리눅스에서 소켓과 네트워크 연결을 확인하는 데 사용되는 명령어이다.ss는 "socket statistics"의 약자로, 네트워크 소켓에 대한 정보를 빠르고 효율적으로 출력하고, ne

cs-study1.tistory.com

 

 

 

2. 리스닝(대기) 중인 포트와 서비스(프로세스) 확인하기

sudo ss -tulnp

 

사용할 ss 명령어에 대한 옵션은 위의 예전 포스팅에서 공부했기 때문에 간략히 언급하자면, TCP, UDP, 포트를 확인할 것이고,
LISTEN 중인 포트를 숫자로 보여주며, 어떤 프로세스가 해당 포트를 사용 중인지 출력하려는 명령어와 옵션 조합이다.

 

 

 

출력문의 세부 항목 역시 이전 포스팅을 통해 알아봤기 때문에, 어느정도 파악할 수 있었고, 현재 Chrome 으로 포스팅 작성만 하고 있기 때문에, 프로세스가 한 개만 나오는 것 같았다. 네트워크 통신이 필요한 메신저 프로그램인 디스코드를 실행해서, 어떤 포트를 사용하고 process 항목에 실제로 프로세스 정보가 업데이트 되는지 확인하였다. 

 

 

Discord 를 실행한 결과 6463 포트를 사용하는 pid 16730 프로세스가 생성되었다. 

참고로 Local Address 와 Peer Address 에 해당하는 주소들의 의미를 살펴보면

  • 127.0.0.1 : 오직 자기 자신 (local host) 에서만 접근 가능
  • 0.0.0.0 : 모든 IPv4 인터페이스에서 들어오는 요청을 허용하는 상태(외부 접근 허용)
  • [ : : ] : 모든 IPv6 인터페이스에서 들어오는 요청을 허용하는 상태
  • 192.168.x.x : 내 컴퓨터의 사설 IP 이며, 다른 장비에서 접근이 가능
  • * : 아무도 접속 안됐음을 의미 ( 수신 대기 상태)

그리고 프로세스 항목 중 fd 는 file discriptor 라는 것으로 해당 프로세스가 사용중인 소켓의 파일 디스크립터 번호이다. 이는 커널 레벨이서 리소스 누수, 열린포트 추적, 이상 프로세스 분석에 사용되는 것으로, 아래 명령어를 통해 해당 프로세스가 열고 있는 모든 파일, 소켓, 파이프를 확인할 수 있다.

 

ls -l /proc/16730/fd/

 

 

추가로 grep 명령어를 활용하여 특정 포트번호를 입력하여, 해당 포트만 필터링 하여 볼 수 도 있고, -ap 옵션으로 검색하여 모든 연결된 소켓과 프로세스도 확인하는 것이 가능하다.

 

ss -ap
ss -uap | grep "포트번호"

 

 

3. 명령어의 사용 시점

  • SSH 같은 프로토콜 접속이 안 될 때:
    → ss -tuln으로 22번 포트가 열려 있는지 확인

  • 웹서버를 설치했는데 안 뜰 때:
    → Nginx/Apache가 80, 443 포트를 점유 중인지 확인

  • 포트 충돌 문제가 발생했을 때 :
    → 두 서비스가 같은 포트를 쓰고 있을 수 있음 → ss -tulnp로 확인 가능

  • 보안 점검시 :
    → 외부에 열려 있으면 안 되는 포트가 열린 경우 탐지 가능 (예: 3306 MySQL)

 

4. netstat 명령어와의 차이는? 

명령어 ss netstat
속도 빠름 (커널 데이터 직접 조회) 상대적으로 느림
정확성 신뢰도 높음 오래된 커널 정보와 오차 있을 수 있음
기본설치 기본 리눅스에 대부분 포함 최신 리눅스에 종종 빠진 경우도 있음
추천도 실무에더 더 많이 쓰임  

 

 

 

5. 마무리

 

ss 명령어에 -tulnp 옵션을 주어 검색하면 이 조합 하나만으로 시스탬 내에 어떤 포트가 열려있고, 어떤 프로세스가 해당 포트를 점유하고 있는지 쉽게 확인할 수 있다. 이는 네트워크 접속 문제나 포트의 충돌, 보안 점검 등의 실무에서 점검의 출발점이 되는 명령어라고 생각된다.