[FTP (File Transfer Protocol)]
- client가 FTP server에 접속하여 자신의 파일을 server에 넘겨주거나(upload)
server에 있는 파일을 내 컴퓨터로 전송(download)
- 정보
패키지 : vsftpd-*
데몬 : vsftpd
방화벽 : port=21 and 20 or random/tcp, service=ftp
설정파일 : /etc/vsftpd/vsftpd.conf
Passive Mode
- 데이터 전송 포트를 서버가 결정
- 데이터 전송 포트만 서버에서 방화벽을 Open
- Client가 서버쪽에서 데이터를 가져옴
- 동작 방식
server는 21번 port를 command port로 사용하고 random port를 data port로 사용
client는 random port 2개를 각각 command port와 data port로 사용
client가 FTP server에 접속을 하면 자신의 command port를 이용하여
server의 command port(21/tcp)로 연결하여 명령어를 주고 받음
client가 data 전송을 요청하면 server가 자신의 data port를 client에게 알려주고
client는 자신의 random port를 이용하여 server의 data port로 연결
왼쪽 그림이 active mode, 오른쪽 그림이 passive mode이다
active mode로 연결했을 때 server의 data port(20)에서 client의 data port(random)로 연결하기 위해
client의 방화벽 또한 열 필요성이 있었고, 이때 client가 어떤 포트를 사용하는지가 random이기 때문에
client에서 ftp 프로그램에 한해서 모든 포트의 방화벽을 여는 작업을 했다
하지만 이는 보안상 문제가 있는 행동이고 그렇기 때문에 active mode 보단 passive mode를 사용을 한다
설정파일에 passive mode 활성화 및 server의 data port로 사용할 port의 범위(최소, 최대)를 작성 해준다
client에서 server의 21번 port로 ftp를 접속하면 server는 자신의 data port(50000 ~ 50002)을 client에 알려주고
client는 자신의 data port(random)에서 server가 알려준 data port(50000 ~ 50002)로 연결한다
이것이 active mode와 passive mode의 차이점이다
server data port -> client data port 가 아닌 client data port -> server data port 로 연결이 이루어지는 것이다
그렇기 때문에 방화벽 또한 client는 작업할 필요 없이 server에서만 data port에 대해 방화벽을 열어주면 된다
현재 윈도우(client) 방화벽에는 active mode 때와 다르게 어떤 작업도 하지 않은 상태이다
테스트 계정 하나를 생성 후 client에서 ftp 접속을 해본다, 이때 계정명은 RWJ며 chroot를 설정 해줬다
설정파일에 관한 내용은 이전글인 active mode를 참고 한다
(윈도우 cmd로는 passive mode가 잘 동작하지 않기 때문에 filezilla를 사용해 접속 한다)
client에 어떠한 방화벽 작업도 하지 않았음에도 ftp가 잘 연결되는 것을 확인 할 수 있다
client의 command port(random)가 열려있는 ftp 세션(LISTEN) 21번 port로 성공적으로 연결한 것을 확인 할 수 있고
client의 data port(random)가 server의 data port로 연결해서 데이터를 받은 것을 확인 할 수 있다
'Linux' 카테고리의 다른 글
DNS + HTTP (0) | 2022.10.09 |
---|---|
DNS 이론 정리 (0) | 2022.10.06 |
firewall 정리 (0) | 2022.10.04 |
FTP-active mode (0) | 2022.10.04 |
DHCP(2) (0) | 2022.09.27 |