SharedIT | 묻고 답하기(AMP)

[방화벽 설정] FTP 접속시 포트 지정은 어떻게 해야 하나요?

직원 한명이 협력사 파일질라 FTP 서버에 접속하기 위해 방화벽 요청을 했습니다


해당 서버의 IP의 FTP(21), SSH(22) 포트를 오픈했는데도 접속이 되지 않더군요

우리 직원 -> FTP 서버의 로그를 봤더니 (포티게이트-100D 제품)

FTP는 통과하는데, 저렇게 65409, 65259, 62223 이런 포트는 열지 않았으니 당연히 디나이 때립니다

FTP 포트야 21번 고정 포트니 문제 없는데, 저렇게 유동적인 포트는 어떻게 제어를 해야 하나요 ??

4개의 답변이 있습니다.

wansoo
  0 추천 | 3년 이상 전

기본적인 FTP 통신은 상식을 조금 벗어난 방식으로 작동되는데요.

클라이언트가 서버쪽에 접속 요청(21번 포트 사용)을 하면, 서버가 요청 받은 포트를 통해서 바로 응답해서 데이터를 주고 받는다면 통신에 문제가 없게 되는데...

서버가 연결 요청 받은 포트가 아닌, 새로운 포트(20번 포트)를 열고 다시 클라이언트에게 접속을 시도하기 때문에 여기서 문제가 생기게 됩니다. ( 능동모드 - Active Mode )

일반적인 대부분 통신은 클라이언트가 서버에 연결해서 통신을 이어가는 방식인데...

FTP는 클라이언트가 서버에 연결요청하면 서버가 다시 클라이언트로 접속을 하게 되는 방식으로 통신이 되는 것이죠.

서버가 클라이언트쪽 접속을 시도하는 포트가 클라이언트쪽 방화벽에 의해 열려 있지 않으면 통신이 실패하게 되죠.

그래서, 이런 문제를 피하기 위해서 기본적인 FTP 통신 방식( Active-Mode)이 아닌 수동 모드(|Passive-Mode) 통신 방식을 사용하게 되고요.

지금과 같은 문제일 경우에는 Passive mode로 FTP 서버에 연결한다면 해결될 걸로 보여 지네요.

그리고, FTP 서버에 접속하기 위해 서버 쪽에서는 21번 포트만 열려 있으면 FTP 통신이 가능합니다.

FTP 서버에서 21번 포트가 아닌  20번 포트를 통해서 다시 클라이언트로 접속을 시도하는데, 이때 클라이언트쪽에 접속시도하는 포트가 다이나믹하게 변하게 되기 때문에 액티브 모드로 FTP 접속할때는 클라이언트 쪽 방화벽에서 inbound 포트를 열어 주기가 쉽지 않게 되는 어려움을 겪게 되겠고요. 

redhairadol | 3년 이상 전

FTP는 보내는 포트와 받는 포트가 달라서 연결이 안되었군요...

오늘도 하나 알아갑니다 !

wansoo | 3년 이상 전

보내는 포트와 받는 포트가 다르다기 보다는...

제어 포트와 data 송수신을 하는 포트가 따로 있고, 서버에서 클라이언트로 새로운 연결을 시도한다는게 특이한 점이 되겠네요.

FTP 통신을 정상적으로 이어가려면 Data port를 새로 열어서 서버에서 클라이언트 쪽으로 접속을 시도하는데 ( 일시적으로 서버와 클라이언트의 역할이 바뀐다고 할 수 있겠네요 ), 접속을 시도하는 포트가 동적 포트라는 것이죠.

서버와 클라이언트가 소켓 통신을 할때 서버만 포트를 가지고 있는 것이 아니라 클라이언트도 포트를 가지고서 통신을 하게 되고요.


FTP 통신에서 제일 먼저 클라이언트가 임의의 동적 포트를 열고 서버쪽 21번 포트로 접속을 시도해서 연결하게되고, 그런 후에 클라이언트와 서버가 Data를 송수신하기 위한 포트를 협의한 후에 서버가 클라이언트쪽의 협의한 포트로 데이터 송수신을 위한 접속을 시도하게 되는 것입니다.

일반적으로 이때 서버가 클라이언트에 접속을 시도하는 포트는 클라이언트가 서버의 21번 포트에 접속하기 위해 사용했던 포트 값보다 1 큰 포트 번호를 사용하게 되고요.

아래 링크의 내용을 참조하면 도움이 될 수 있을 거라 보여 지네요.

http://songic.egloos.com/10439253

빨간신발
  0 추천 | 3년 이상 전

ftp는 액티브모드 패시브모드가 있는데

보통 방화벽이 있으면 패시브모드로 하죠

ftp는 보안에 매우 취약해서 사용을 않는게 좋습닌아

ssh를 사용하시고 있으니 sftp로 사용하세요

Genghis Khan
  0 추천 | 3년 이상 전

ftp포트를 방화벽에서 직접 열면  안됩니다

보안에 취약하니 해당서버에서 6721나 다른 포트로 변경하여야합니다

그리고 출발지와 목적지에 대해 명확해야 통신이 가능합니다

정책을 다시 설정해야 되겠네요

redhairadol | 3년 이상 전

21번 직접 오픈하지 않고 고정포트가 아닌 유동포트 (1024~65000)으로 설정하니 접속은 되는데...

초기 목적이었던 유동 포트를 '지정'은 아직 못했습니다.

예를들면 1024 이후 포트를 모두 열어주기엔 범위가 너무 넓으니 TCP 54001 ~ 54010 범위의 포트로만 연결하게 하고 싶은데, 이건 서버 (협력사측 FTP서버)에서 따로 지정을 해야 하는 부분인가요?

아니면 로그 틈틈이 봐서 자주 보이는 포트 범위만 지정해서 오픈을 해야 하는건가요?

Genghis Khan | 3년 이상 전

보통 0~1023은 well-known port 잘 알려진 포트입니다 

그리고 54001-54010 범위 지정을 하는데 있어 방화벽에서 1:1로만 하면 문제 없습니다

협력사와 협의하고 둘만의 정책만 세워주면 됩니다

redhairadol | 3년 이상 전

마지막으로 궁금한 것이, FTP (21)을 직접 오픈하면 보안 취약점 발생이라고 말씀해 주셨는데,

SFTP (22)는 오픈해도 되는 것인지 질문 드립니다

Genghis Khan | 3년 이상 전

일단 보안에선 ftp건 sftp건 차단이 목적입니다

그러나 ftp보단 보안측면에서 좋다는거죠

이 또한 포트를 6000번대로 변경해서 사용하세요

얌전한놈
  0 추천 | 3년 이상 전

https://madplay.github.io/post/ftp-active-passive


위 링크 참고해 보세요~


아마 이 문제일듯합니다.