포트와 인바운드, 아웃바운드 규칙

Newon·2021년 7월 7일
5

포트(port) 란?

네트워크에서 사용되는 port 는 불어 porte = 문(door)/관문(gateway) 에서 유래된 것으로 알려져있다.
port 는 의미 그대로 문(door)이자, 논리적인 단위로서 IP를 통해 접속한 컴퓨터에서 어떤 곳으로 연결할지 구분시키는 역할을 한다.

  • 다음은 클라이언트가 IP만 가지고 접속했을 때 모습으로, 컴퓨터는 클라이언트가 자신에게 접속했다는 것은 인지하지만 어떤 응답을 해줘야 하는지 모르는 상태이다.

  • 다음은 클라이언트가 IP와 포트를 함께 사용해서 접속했을 때 모습으로, 컴퓨터는 클라이언트가 언급한 포트를 listen 해서 80번 포트에 해당하는 서버를 원한다는 것을 인지하고, 해당 서버를 제공한다.

이렇듯 클라이언트는 IP를 통해서 컴퓨터에 접속할 때, 어떤 것을 원하는지 정확하게 설명을 해줘야하고 이를 위해서 사용하는 논리적인 약속port이다.

port는 0번부터 65535 사용할 수 있으나
0 ~ 1023 : Well-known port
1024 ~ 49151 : Registered port
49151 ~ 65535 : Dynamic port
로 구분해서 사용되고 있다. 포트의 규칙을 따르지 않고, 원하는 포트를 임의대로 설정해줘도 작동은 하지만 다른 서버와 연결될 때 오류가 날 수 있기에 관습적으로 위의 포트들을 따라서 사용하고 있다.

Well-known port는 의미 그대로 정말 잘 알려진 포트들을 의미한다. 80번의 http, 22 번의 ssh와 같이 자주 사용되는 포트들에 해당한다.

Registered port는 특정 용도로 사용하기 위해서 쓰이는 포트들로, 3306 포트의 mySQL, 80번 port 를 대체하기 위한 8080 포트 (웹서버가 2개 이상인 경우) 등이 있다.

Dynamic port는 특별히 지정되지 않은 포트들로 자유롭게 사용해도 무방하다.


인바운드 규칙과 아웃바운드 규칙

포트가 서버를 통하는 문의 역할을 하는 만큼, 악성 코드나 바이러스 역시 포트를 통해서 유포된다. 그렇기 때문에 IP를 통해 접속한 클라이언트에게 언제나 모든 포트를 개방하는 것은 위험한 요소가 된다. 이를 막기 위한 규칙이 인바운드 규칙과 아웃바운드 규칙이다.

인바운드규칙

인바운드 규칙은 클라이언트가 자신의 서버 데이터에 들어올 수 있는 규칙을 의미한다. 서버에 접속하고, 해당 데이터들을 읽을 수 있으며 권한 여부에 따라서 생성, 수정, 삭제도 허용하는 규칙이다. 클라이언트가 서버의 데이터에 접속하는 권한이므로, 기본적으로 인바운드 규칙은 모든 포트를 닫는 것을 전재로 한다. 즉, 인바운드 규칙에서 설정하지 않은 포트들은 사용할 수 없는 포트이며, 해당 포트를 사용하더라도 접속 자체를 막게된다.

동그라미 클라이언트와 마름모 클라이언트의 상황을 통해서 살펴보자.

  • 동그라미 클라이언트는 인바운드 규칙에서 설정되어 있는 80번 포트를 요청했고, 서버는 인바운드 규칙에서 설정한 포트, 데이터에 접속할 수 있는 권한이 허용된 포트이므로 클라이언트에게 80번 포트에 해당하는 HTTP 서버를 흔쾌히 주고 있는 모습이다.
  • 마름모 클라이언트는 인바운드 규칙에 없는 22번 포트를 요청했고, 서버는 인바운드 규칙에 없는 포트라는 것을 인지했다. 따라서 서버는 22번에 해당하는 SSH 포트가 있다는 것을 알고 있지만, 존재 유무를 떠나서 인바운드 규칙에서 허용하지 않은 포트이므로 접속 자체를 거부했다.

아웃바운드 규칙

아웃바운드 규칙은 서버에서 나갈 수 있는 (반출할 수 있는) 데이터에 대한 규칙을 의미한다. 인바운드 규칙에서 허용된 포트로 들어왔다고 한들, 아웃바운드 규칙에서 데이터 반출이 허용되지 않은 포트라면 클라이언트는 "다운로드"를 할 수 없게 된다. 보통 아웃바운드 규칙은 기본 옵션으로 모든 포트에게 허용되어 있는 편이다.


출처
컴퓨터의 도로, 포트(port)란 무엇일까? 출처
[Windows] 윈도우 포트 열기 - 인바운드 규칙/아웃바운드 규칙 출처

profile
나만 고양이 없어

0개의 댓글