본문 바로가기
가상화 기술과 관리/LINUX

[Linux] 포트/방화벽 확인 및 포트 열기

by so5663 2024. 8. 23.

리눅스 포트/방화벽 확인 및 포트 열기 명령어 정리

1. 포트 상태 확인

netstat -option

 

1-1. 연결 상태 관련 옵션

  • -a: 모든 소켓의 상태를 표시합니다. 기본적으로는 연결이 설정된 소켓만 표시되지만, 이 옵션을 사용하면 리스닝 중인 소켓도 포함하여 모두 표시됩니다.
  • -t: TCP 연결만 표시합니다.
  • -u: UDP 연결만 표시합니다.
  • -w: Raw 소켓을 표시합니다.
  • -x: UNIX 도메인 소켓을 표시합니다.

1-2. 주소 표시 관련 옵션

  • -n: 호스트 이름, 포트 번호, 프로토콜 등의 이름을 숫자로 표시합니다. DNS 조회 없이 IP 주소 및 포트 번호를 그대로 보여줍니다.
  • -N: IP와 포트 번호의 심볼릭 네임을 보여줍니다.

1-3. 리스닝 상태 관련 옵션

  • -l: 현재 리스닝(대기) 중인 소켓만 표시합니다.
  • -a: 리스닝 중이 아닌 소켓을 포함하여 모든 소켓을 표시합니다.

1-4. 통계 정보 관련 옵션

  • -s: 프로토콜별 통계를 요약하여 보여줍니다. (TCP, UDP 등)
  • -e: 확장된 상태 정보를 표시합니다. 일반적인 정보 외에도 추가적인 통계와 정보를 제공합니다.
  • -c: 주기적으로 netstat 명령을 실행하여 실시간으로 네트워크 상태를 모니터링합니다.

1-5. 프로세스 및 사용자 관련 옵션

  • -p: 각 연결에 사용된 프로그램과 프로세스 ID를 표시합니다. (루트 권한 필요)
  • -o: 각 연결에 대한 타이머 정보를 보여줍니다.
  • -A: 특정 주소 패밀리를 지정하여 필터링합니다. 예를 들어, netstat -A inet는 IPv4 연결만을 표시합니다.
  • -Z: SELinux 컨텍스트를 표시합니다.

1-6. 필터링 관련 옵션

  • -r: 라우팅 테이블을 표시합니다. 현재 시스템의 라우팅 경로 정보를 보여줍니다.
  • -i: 네트워크 인터페이스 통계를 표시합니다.
  • -I [인터페이스 이름]: 특정 네트워크 인터페이스에 대한 통계를 표시합니다.
  • -M: 멀티캐스트 그룹 멤버십을 표시합니다.

1-7. 기타 옵션

  • -C: 콘넥스션 추적 통계를 표시합니다.
  • -g: 멀티캐스트 그룹 정보 표시합니다.
  • -W: 와이드 모드. 열 폭이 좁은 터미널에서도 모든 정보를 보여줍니다.
  • -v: 실행 중인 명령에 대한 상세한 정보를 제공합니다.

예제

모든 TCP 및 UDP 연결을 숫자로 표시

netstat -atun

 

프로세스 정보와 함께 현재 리스닝 상태의 소켓을 표시

netstat -pln

 

이런식으로 여러 정보를 조회 할 수 있다.

그중에서도 내가 실무에서 제일 많이 쓰는 명령어는 netstat -tnlp 다.

 

각 열의 의미

  • Proto: 사용 중인 프로토콜 (TCP 또는 TCP6)
  • Recv-Q: 수신 대기 중인 데이터의 양 (바이트 단위)
  • Send-Q: 송신 대기 중인 데이터의 양 (바이트 단위)
  • Local Address: 로컬 IP 주소와 포트 번호
  • Foreign Address: 원격 IP 주소와 포트 번호
  • State: 연결 상태 (예: LISTEN, ESTABLISHED, CLOSE_WAIT 등)
  • PID/Program name: 연결을 소유한 프로세스의 ID와 이름

한 눈에 내가 원하는 tcp 포트 정보를 알수가 있다.

2. 방화벽

리눅스 시스템에서 일반적으로 사용하는 방화벽 도구는 iptables, firewalld, 그리고 ufw입니다. 

그중에서도 현재 회사에서 사용하고 있는 firewalld을 사용하겠습니다.

firewalld는 최신 리눅스 배포판에서 기본적으로 제공되는 동적 방화벽 관리 도구라고 합니다.

 

현재 활성화된 방화벽 상태를 확인

현재 방화벽 규칙을 확인

방화벽에서 열려 있는 모든 포트 확인

sudo firewall-cmd --state
sudo firewall-cmd --list-all
sudo firewall-cmd --list-ports

 

특정 포트 허용

sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent

 

변경 사항 적용

sudo firewall-cmd --reload

 

firewalld 서비스 시작/중지/재시작

sudo systemctl start firewalld
sudo systemctl stop firewalld
sudo systemctl restart firewalld