[파일] FTP 에서 Active 와 Passive 모드

요즘 해킹을 많이 당해서 시스템에 Firewall을 걸면서 몇가지 문제점이 발

생했습니다.

System자체에 Firewall을 경우는 LINUX인 경우는 ipchain을 사용하고

FreeBSD는 ipfw를 사용

합니다. (FreeBSD인 경우는 차후에 문서를 만들어서 배포예정)

그럼.. Active와 Passive차이가 뭐냐….

Active,Passive를 결정하는 것은 Server쪽이아니구 Client Program에서 합

니다.(주의)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~

Active는 Client에서 Data 전송 Port를 정하는 거구 Passive는 Server에

서 Port를 정하는

겁니다.

FTP Client와 FTP Server간의 통신할 때, 보통 21번Port만 알고 있는 데,

실제로는 20번Port도

사용합니다.

21번 Port는 Command Port라고 해서, 보통 명령어를 보내는 Port입니다.

예를 들면,

ftp> ls

ftp> cd /pub

20번 Port는 Data Port라고 해서, 명령어를 21번 Port를 통해서 서버에 보

내면 20번 Port를

통해서 보통 Client에게 전달됩니다.(Active Mode인 경우)

ftp>ls <—- Server에게 21번 Port를 통해서 전달

>200 PORT command successful.

서버로 부터 >150 Opening ASCII mode data connection for file list.

전달된 >system

메시지 >welcome.msg

(20번 Port >pub

통해서) >226 Transfer complete.

ftp>

Active Mode인 경우만 20번 Port를 통해서 Client에게 Data를 전송합니

다.

그림으로 보면,

1> Client ———————–> Server

Port: 2000 Port : 21

2> Client ———————–> Server

Port: 2000 Port: 21 <- Command Port

Port: 2001 ——————-> Port: 21

Port: 2001 <——————- Port: 20 <- Data Port

Connection

위 그림을 보면 Client는 Server의 Command Port인 21번 Port로 접속하고

Client의 Data Port가 2001번 Port라는 것을 Server의 Command Port를 통

해알려

주면 Server의 Data Port인 20번 Port와 Client의 Data Port인 2001번

Port와

연결한 후 Data를 전송한다.

Passive Mode인 경우는..

1> Client ———————–> Server

Port: 2000 Port : 21

2> Client <———————- Server

Port: 2000 Port: 21 <- Command Port

Port: 2000 <——————- Port: 3000 <- Data Port

Port: 2001 ——————-> Port: 3000

Connection

Port: 2001 <——————- Port: 3000 <- Data Flow

위 그림을 보면 Server에서 3000번 Port를 생성해서 Client에게 3000번

Port에서

Data를 전송한다고 Client 2000번 Port를 통해 알려주면 Client는 2001번

Port를

생성해서 Server의 3000번 Port에 연결한다. 연결이 성공하면 Server는

Client에

게 Data를 전송한다.

일반 FTP Client프로그램은 Active Mode로 되어있으므로 문제가 없는 데,

FreeBSD에서 접속을

하는 경우 Default가 PASSIVE MODE로 되어있어 문제가 있습니다..

FreeBSD에서 Default값을 바꾸시려면,

Bash인 경우 : export FTP_PASSIVE_MODE=’NO’

Csh인 경우 : setenv FTP_PASSIVE_MODE NO

위 내용은 .bashrc나 .cshrc에 넣어 두시면 되겠네요.

서진우

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.