참고: https://www.cloudflare.com/learning/network-layer/what-is-a-computer-port/
포트는 네트워크 연결이 시작되고 끝나는 가상의 지점입니다. 이는 소프트웨어 기반이고 컴퓨터의 운영체제에서 관리합니다. 각 포트는 특정 프로세스 또는 서비스와 연결됩니다. 이 포트를 사용하면 컴퓨터가 서로 다른 종류의 트래픽을 구분할 수 있습니다. 예를 들어 이메일과 웹 페이지가 동일한 인터넷을 통해 컴퓨터에 도착하더라도 이메일과 웹 페이지는 다른 포트로 이동됩니다.
포트 번호(port number)란?
포트는 네트워크에 연결되는 모든 장치에 표준화되어 있으며 각 포트는 번호를 할당받습니다. 대부분의 포트는 특정 프로토콜 용도로 예약되어 있습니다. 예를 들어, 모든 Hypertext Transfer Protocol (HTTP) 메시지는 포트 80으로 이동합니다. IP 주소를 사용하면 메시지를 특정 장치와 주고받을 수 있지만 포트 번호는 해당 장치 내의 특정 서비스나 응용 프로그램을 대상으로 지정할 수 있습니다.
포트가 네트워크 효율성에 미치는 영향
동일한 네트워크를 통해 서로 다른 타입의 데이터가 컴퓨터 사이에 흐르고 있을 때 포트를 사용하면 수신한 데이터로 컴퓨터가 어떤 작업을 수행할지 알아낼 수 있습니다.
Bob이 File Transfer Protocol (FTP)을 사용하여 MP3 파일을 Alice에게 전송한다고 가정해 보겠습니다. Alice의 컴퓨터가 MP3 파일 데이터를 이메일 프로그램에 전달한다면 이메일 프로그램은 이를 해석할 수 없습니다. 하지만 Bob은 FTP 용으로 지정된 포트(포트 21)로 파일을 전송했기 때문에 Alice의 컴퓨터는 FTP로 파일을 수신하고 저장할 수 있습니다.
이 때 Alice의 컴퓨터에 웹 페이지 파일과 MP3 파일이 동일한 WiFi로 흐르더라도 웹 페이지 파일은 포트 80을 사용하여 HTTP 웹 페이지를 로드하므로 두 개의 파일을 동시에 로드할 수 있습니다.
네트워크 계층의 포트
OSI 모델은 인터넷의 작동 방식에 대한 개념적인 모델입니다. 서로 다른 인터넷 서비스와 프로세스를 7개의 계층으로 나누고 이러한 계층을 OSI 7 Layer라고 합니다. 이 레이어는 다음과 같습니다:
포트는 transport layer (layer 4) 입니다. Transmission Control Protocol (TCP) 또는 User Datagram Protocol (UDP)과 같은 전송 프로토콜이 패킷의 목적지인 포트를 나타낼 수 있습니다. TCP 및 UDP 헤더에는 포트 번호를 나타내는 섹션이 있습니다. 예를 들어 인터넷 Internet Protocol (IP)과 같은 network layer 프로토콜은 주어진 네트워크 연결에서 사용 중인 포트를 인식하지 못합니다. 표준 IP 헤더에는 데이터 패킷이 어느 포트로 가야 하는지 표시할 위치가 없습니다. IP 헤더는 해당 IP 주소의 포트 번호가 아닌 대상 IP 주소만 나타냅니다.
일반적으로 network layer 프로토콜은 거의 항상 transport layer 프로토콜과 함께 사용되기 때문에 network layer에서 포트를 표시할 수 없는 것은 네트워킹 프로세스에 영향을 미치지 않습니다. 그러나 이는 Internet Control Message Protocol (ICMP) 패킷을 사용하여 IP 주소를 "ping"하는 테스트 소프트웨어의 기능에 영향을 미칩니다. ICMP는 네트워크 장치를 ping할 수 있는 network layer 프로토콜이지만 특정 포트를 ping할 수 있는 기능이 없으면 네트워크 관리자는 해당 장치 내에서 특정 서비스를 테스트할 수 없습니다.
방화벽이 특정 포트를 차단하는 이유
방화벽은 일련의 보안 규칙에 따라 네트워크 트래픽을 차단하거나 허용하는 보안 시스템입니다. 방화벽은 일반적으로 신뢰할 수 있는 네트워크와 신뢰할 수 없는 네트워크 사이에 존재합니다. 여기서 신뢰할 수 없는 네트워크란 인터넷을 가르킵니다. 예를 들어, 사무실 네트워크는 방화벽을 사용하여 온라인의 위협으로부터 네트워크를 보호하는 경우가 많습니다.
일부 공격자는 어떤 포트가 "open" 으로 남겨져서 트래픽을 수신하기를 바라며 임의의 포트로 악성 트래픽을 보내려고 합니다. 이 행동은 자동차 도둑이 길을 가다가 주차된 차량의 문이 열려 있기를 바라고 문을 노리는 것과 비슷합니다. 이러한 이유로 임의의 포트로 향하는 네트워크 트래픽을 차단하도록 방화벽을 구성해야 합니다. 대부분의 포트는 트래픽을 수신해야할 마땅한 이유가 없습니다.
적절하게 구성된 방화벽은 미리 정의된 포트를 제외하고 모든 포트에 대한 트래픽을 차단합니다. 예를 들어 기업 방화벽은 25(이메일), 80(웹 트래픽), 443(웹 트래픽) 및 기타 몇 개의 포트만 열어두어 내부 직원이 이러한 필수 서비스를 사용하도록 허용한 다음 나머지 65000개 이상의 포트를 차단합니다.
좀 더 구체적인 예로, 공격자는 공격 트래픽을 포트 3389로 전송하여 RDP 프로토콜의 취약성을 악용해 보려는 시도를 합니다. 이러한 공격을 피하기 위해 방화벽은 기본적으로 포트 3389를 차단합니다. 이 포트는 원격 데스크톱 연결에만 사용되므로 이러한 규칙은 직원이 원격으로 작업해야 하는 경우가 아니면 일상적인 비즈니스 운영에 거의 영향을 미치지 않습니다.
미리 정의된 포트 번호는 어떤 것이 있을까
모두 사용하는 것은 아니지만 포트는 65535 개가 사용 가능합니다. 네트워크 프로토콜과 함께 가장 일반적으로 사용하는 포트는 다음과 같습니다:
port 20, port 21: File Transfer Protocol (FTP), FTP는 클라이언트와 서버간 파일을 전송합니다.
port 22: Secure Shell (SSH), SSH는 터널링 프로토콜 중 하나로 보안 네트워크 연결을 만듭니다.
port 25: Simple Mail Transfer Protocol (SMTP), SMTP는 이메일에 사용됩니다.
port 53: Domain Name System (DNS), DNS는 인터넷의 필수 프로토콜입니다. 사람이 읽을 수 있는 형태인 도메인 이름을 기계가 읽을 수 있는 IP 주소와 매치시켜 사용자가 긴 IP 주소를 기억하지 않아도 웹 사이트를 로드할 수 있게 합니다.
port 80: HyperText Transfer Protocol (HTTP), HTTP는 World Wide Web을 가능하게 해주는 프로토콜 입니다.
port 443: HTTP Secure (HTTPS), HTTPS는 안전하고 암호화된 HTTP 입니다. 모든 HTTPS 웹 트레픽은 포트 443으로 이동합니다. HTTPS를 통한 DNS와 같이 암호화에 HTTPS를 사용하는 네트워크 서비스도 이 포트에 연결됩니다.
port 3389: Remote Desktop Protocol (RDP), RDP는 사용자가 다른 장치에서 데스크톱 컴퓨터에 원격으로 연결할 수 있게 해줍니다.
Internet Assigned Numbers Authority (IANA)는 할당된 포트 번호 및 프로토콜의 전체 목록을 유지 관리합니다.
관련 글
'cs' 카테고리의 다른 글
[네트워크] 포트 스캔 이란? (port scanning) (7) | 2023.06.19 |
---|---|
[알고리즘] HMAC (Hash-based Message Authentication Codes) 이란? (2) | 2023.03.19 |
[알고리즘] MD5 해시 알고리즘 이란? (7) | 2023.03.13 |
[알고리즘] 해시(hash) 알고리즘 이란? (3) | 2023.03.12 |
[정보보안] JSON Web Token(JWT) 설명 (3) | 2023.03.02 |
댓글