본문 바로가기
OS/Linux

[Linux]포트 이해하기

by 알 수 없는 사용자 2023. 6. 26.

안녕하세요. 이쁜이와 멋쟁이의 "BTC_준호" 입니다.

리눅스와 같은 운영 체제에서 특정 프로세스 또는 서비스가 네트워크를 통해 다른 시스템과 통신하기 위해서는 '포트(port)'라는 개념을 이해해야 합니다. 이 글에서는 리눅스에서의 포트에 대해 쉽게 이해할 수 있도록 설명해보겠습니다.


포트는 무엇인가요?

포트(port)는 컴퓨터가 다른 컴퓨터와 네트워크 상에서 통신할 때 사용하는 '연결 지점'을 의미합니다. 포트 번호는 0에서 65535까지의 범위를 가지며, 특정 프로토콜에서 특정 서비스를 위해 예약된 번호가 있는 반면, 일부 번호는 사용자가 자유롭게 할당할 수 있습니다.

리눅스 공식 마스코트 Tux(턱스)


포트의 종류

잘 알려진 포트(Well-Known Ports): 0부터 1023까지의 포트 번호로 이 범위의 포트는 주로 중요한 표준 서비스에 사용됩니다. 예를 들어, 웹 서버에서 사용하는 HTTP 프로토콜은 포트 80을, 보안 웹 서버에서 사용하는 HTTPS는 포트 443을 사용합니다.

등록된 포트(Registered Ports): 이 범위는 1024부터 49151까지의 포트 번호를 포함합니다. 이 범위의 포트는 특정 소프트웨어를 위해 IANA(Internet Assigned Numbers Authority)에 의해 공식적으로 등록되어 사용됩니다. 예를 들어, MySQL 데이터베이스 서비스는 기본적으로 포트 3306을 사용합니다.

동적 또는 개인 포트(Dynamic or Private Ports): 이 범위는 49152부터 65535까지의 포트 번호를 포함하며, 일반적으로 짧은 시간 동안 임시적으로 사용되거나, 애플리케이션에 의해 동적으로 할당되어 사용됩니다. 이 범위의 포트는 공식적으로 등록되지 않았기 때문에, 특정 애플리케이션에서만 사용되며, 일반적으로 다른 컴퓨터에서는 다른 목적이나 애플리케이션에 이 포트 번호를 사용할 수 있습니다.


리눅스에서 포트 확인하는 방법

리눅스에서는 netstat 명령어나 ss 명령어를 사용하여 시스템에서 사용 중인 포트를 확인할 수 있습니다.

netstat은 네트워크 연결, 라우팅 테이블, 인터페이스 통계 등을 보여주는 유틸리티입니다.  최신 Linux 배포판에서는 netstat 대신 ss라는 도구를 기본으로 제공하고 있습니다. ss는 netstat보다 더 빠르고 강력한 기능을 제공합니다.

# netstat을 이용한 포트 확인
sudo netstat -tlnp 

# ss를 이용한 포트 확인
sudo ss -tlnp

예시 / apache2 프로세스가 돌아가고 있습니다. 참고로 Address : Port 컬럼에서 0.0.0.0의 의미와 * 의 의미는 AnyOpen으로 동일합니다.

위 명령에서 사용된 각 옵션의 의미는 다음과 같습니다:

-t : TCP 포트를 확인하겠다는 의미입니다.
-l : LISTEN 상태인 (즉, 연결을 기다리고 있는) 포트를 확인하겠다는 의미입니다.
-n : 서비스 이름 대신 숫자로 포트를 표시하겠다는 의미입니다.
-p : 포트를 사용하는 프로세스의 PID와 프로그램 이름을 표시하겠다는 의미입니다. 
이 옵션을 사용하려면 root 권한이 필요하므로 sudo를 사용해야 합니다.


리눅스에서 포트 열기와 닫기

리눅스에서 포트를 열거나 닫을 때는 보통 방화벽 설정을 변경합니다. 

대표적으로 iptables나 ufw(Uncomplicated Firewall) 같은 도구를 사용할 수 있습니다.

iptables는 리눅스 시스템에서 기본적으로 제공하는 강력한 방화벽 도구입니다. 
다음은 iptables를 이용해 8080 포트를 열고 닫는 예시입니다.

# 8080 포트 열기
sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT

# 8080 포트 닫기
sudo iptables -A INPUT -p tcp --dport 8080 -j DROP

 

ufw는 사용자 친화적인 방화벽 설정 도구로, 명령어 구문이 더 간단합니다. 
다음은 ufw를 이용해 8080 포트를 열고 닫는 예시입니다.

# 8080 포트 열기
sudo ufw allow 8080

# 8080 포트 닫기
sudo ufw deny 8080

끝으로...

리눅스에서의 포트 관리는 시스템 보안과 네트워크 통신의 중요한 부분입니다. 포트와 관련된 작업을 할 때는 항상 주의를 기울여야 합니다. 특히, 불필요하게 많은 포트를 열어두면 보안 위협에 노출될 수 있으므로, 필요한 포트만 열고 사용하지 않는 포트는 닫아두는 것이 좋습니다.

이해가 어려운 부분이 있거나 추가로 알아보고 싶은 내용이 있다면 댓글로 언제든 질문해주세요.

감사합니다.

'OS > Linux' 카테고리의 다른 글

Linux 시간 동기화  (0) 2023.07.14
[Linux] Swap Memory  (0) 2023.07.07
[Linux]시스템 로그와 모니터링 이해하기  (0) 2023.06.12
[Linux] Apache Nifi 사용법  (0) 2023.06.07
Web - Was Mod_jk 연동  (0) 2023.06.07

댓글