VSFTP 에서 사용하는 port를 변경하기
FTP Server는 기본적으로 아래와 같은 2개의 Port를 사용합니다.
- FTP Port : 기본 21 port / tcp (FTP 명령어 송수신)
- FTP-Data Port : 기본 20 port / tcp (FTP 데이터 송수신)
[ CentOS 6.x ]
ftp는 Active Mode 또는 Passive Mode에 따라 설정 방법이 다르며,
Active Mode 에서 포트 변경하는 방법을 설명 합니다.
1. Active Mode에서 FTP를 위한 Port 변경 방법
Active Mode는 정해진 포트를 사용하여 송수신 합니다.(Default port: 21, 20)
포트 변경은 아래와 같은 예제로 설명 합니다.
* FTP 포트로 20021을 사용하고, FTP-Data 포트로는 20020을 사용하도록 설정.
* 먼저 서버 방화벽에서는 20021, 20020 port가 열려 있어야 합니다.
[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf
# 20번 포트의 데이터전송 연결을 허용 한다.
connect_from_port_20=YES
# inetd 모드가 아닌 독립 모드로 vsftp 실행
listen=YES
# FTP를 위한 Listen Port를 지정 함.
listen_port=20021 # 추가
# 데이터 전송을 위해서 Active Mode를 사용도록 설정 한다.
# Active Mode에서 FTP 데이터 전송을 위한 디폴트 포트는 20 port 이다
port_enable=YES # 추가
# 데이터 전송을 위해서 Passive Mode를 사용하지 못하도록 한다
pasv_enable=NO # 추가
# Active Mode에서 사용할 FTP-Data 포트를 강제로 20020 port로 변경 한다
ftp_data_port=20020 # 추가
2. vsftpd.conf 수정후 vsftp 데몬을 재시작 합니다.
[root@localhost ~]# /etc/init.d/vsftpd restart ( )
관련자료
http://faq.hostway.co.kr/?mid=Linux_ETC&page=9&document_srl=1438
[ CenOS 7 ]
vsftpd 포트변경 및 passive mode 설정
1. 설정파일을 열어 포트 변경
ftp의 기본 포트는 21 이고, 설정파일에는 포트 설정이 없습니다.
listen=NO 부분을 찾아 변경. 변경할 포트가 20021 이라면
독립모드 ftp 는 IPV6 지원하지 않기 때문에 listen_ipv6=YES 를 찾아 NO로 변경합니다.
[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf
# 20번 포트의 데이터전송 연결을 허용
connect_from_port_20=YES
# inetd 모드가 아닌 독립 모드로 vsftp 실행
listen=YES
# FTP를 위한 Listen Port를 지정
listen_port=20021
# 데이터 전송을 위해서 Active Mode를 사용도록 설정. 디폴트 포트는 20 port
port_enable=YES
# 데이터 전송을 위해서 Passive Mode를 사용
pasv_enable=YES
# Active Mode에서 사용할 FTP-Data 포트를 강제로 20020 port로 변경
ftp_data_port=20020
# psssive 포트범위 설정 : filezilla 등의 ftp 프로그램은 최대 10개 동시 전송 가능
pasv_min_port=20030
pasv_max_port=20040
# ipv6 정지
listen_ipv6=NO
2. vsftpd를 재시작한다.
[root@localhost ~]# systemctl restart vsftpd.service
3. 지정한 포트가 대기중인지 확인
[root@localhost ~]# lsof -i tcp:20021
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
vsftpd 31763 root 3u IPv6 61187 0t0 TCP *:20021 (LISTEN)
lsof 명령어가 먹지 않는 경우. 아래와 같이 설치 후 다시 해 봅니다.
[root@localhost ~]# yum install lsof
4. 방화벽 firewall 설정 : 포트 추가 및 예외처리
[root@localhost ~]# firewall-cmd --zone=public --permanent --add-port=20021/tcp
[root@localhost ~]# firewall-cmd --zone=public --permanent --add-port=20020/tcp
[root@localhost ~]# firewall-cmd --zone=public --permanent --add-port=20030-20040/tcp
5. 방화벽 재실행 및 열린 포트 확인
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]# firewall-cmd --list-ports
80/tcp 20021/tcp 20030-20040/tcp 22/tcp 21/tcp 3306/tcp 20020/tcp
6. selinux 설정 변경
6-1. selinux 정지
[root@localhost ~]# vi /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
6-2. selinux 설정변경이 작동되도록 서버를 재부팅을 합니다.
[root@localhost ~]# reboot
7. FileZilla 등 FTP 프로그램으로 접속해봅니다.
port 는 21 을 20021 로 변경해서 접속합니다.
수십개의 파일을 서버에 전송해서 오류가 없는지 확인합니다.
참고자료
http://faq.hostway.co.kr/?mid=Linux_ETC&page=9&document_srl=1438
http://ellordnet.tistory.com/108
http://sangchul.kr/67
https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-7