ftp 의 active mode 와 passive mode 의 구별 리눅스

참조
요약해보면 

active mode로 접속을 하면 ftp server에 유리하고 
passive mode로 접속을 하면 ftp client에 유리하다

여기서 유리함은 보안의 유리함이다 

액티브는 능동적이다는 뜻이고 피시브는 수동적이다는 뜻이다.
클라이언트가 아니라 서버의 입장에서 능동적이냐 수동적이냐를 판단한다.
액티브모드에서는 서버가 능동적으로 포트를 선택하고 패시브모드에서는 서버가 수동적으로 포트선택을 당한다. 다시 말하면,

액티브모드에서는 서버가 클라이언트의 포트를 선택하고 
패시브모드에서는 클라이언트가 서버의 포트를 선택한다.

서버의 21번 포트는 ftp접속과 제어를 위해서 액티브이든 패시브이든 무조건 사용되지만
서버의 20번 포트는 다르다.
액티브모드에서는 이 20번 포트와 클라이언트와 임의의 포트가 데이타 교환을 한다.
서버입장에서는 인바운드로 21번 이외의 열어야 할 포트가 따로 없다.

그러나 패시브모드에서는 포트의 선택을 클라이언트가 하기 때문에 1024번 이후의 어떤 포트가 선택될 지 알수가 없다.
이게 보안의 불리함이다.

물론 ftp서버에서 데이타교환용 포트의 선택범위를 지정해 줄 수는 있다.
예를 들어 vsftpd의 경우 vsftpd.conf 파일에 이렇게 최소값과 최대값을 적어주면 

pasv_min_port=51234
pasv_max_port=51250

어떤 포트가 선택될지 알 수 없는 불리함에서 최소한 범위는 아니까 조금 불리함이 줄어 들기는 하지는 여전히 그 범위의 포트를 서버의 방화벽에서 열어둬야 하기 때문에 불리하다.

** vsftpd 3.0.2 에서는 디폴트로 패시브모드를 허용하고 패시브포트는 어떤 포트도 허용한다.

그대서 따로 패시브관련해서는 vsftpd.conf를 건드릴 필요가 없다.

한가지 이해안 되는 것은 방화벽에서 따로 데이타교환용 포트를 열어주지 않아도 동작을 하는 것이다.

원래대로 라면.[우분투 14.04.1-Server 기준]

/etc/vsftpd.conf 에 이렇게 적어두고 

pasv_min_port=51234
pasv_max_port=51250

방화벽인 ufw에서 다음과 적어야 하는데

sudo ufw allow 51234:51250/tcp

방화벽에 위 문장을 적지 않아도 정상동작을 했다.


액티브모드로 접속을 시도하면 

서버측 방화벽은 괜찮은데 클라이언트의 방화벽에서 걸린다.

클라이언트 방화벽에서 ftp사용을 허용해야 된다.



덧글

댓글 입력 영역