728x90
반응형
FTP(File Transfer Protocol)


◆ 원격 서버에 파일을 주고 받을 때 사용하는 인터넷 통신 규약


◆ FTP 프로그램은 그 원격 서버에 접속하여 파일을 업로드/다운로드하기 위하여 사용하는 프로그램


◆ FTP 계정에 접속할 때는 FTP 주소, FTP ID, FTP 암호의 세 가지 정보가 필요


  20TCP FTP (파일 전송 프로토콜) - 데이터 포트공식


21TCP FTP - 제어 포트


FTP Mode

Active 모드: FTP 클라이언트가 FTP 서버로 접속을 시도할 때 TCP 21번 포트를 이용하여 접속이 이루어지고, 데이터를 수신하는 경우에는 TCP 20번 포트를 이용 (기본 설정)

Passive 모드: 클라이언트가 서버로 접속을 시도할 때 PASV 명령어로 표준 포트인 TCP 21번 포트를 이용하여 접속이 이루어지지만 데이터를 수신하기 위해
                       1024-5000번 포트 중 하나를 새롭게 열어서 클라이언트가 수신한다. 방화벽을 사용하는 경우 기본 FTP 포트(20, 21) 외 다른 포트를 사용하여
                       FTP 사이트를 서비스할 때FTP 클라이언트는 접속 시 Passive 모드로 접속







FTP 설치 및 설정


1. # yum -y install vsftpd ftp

  •  vsftpd는 리눅스 운영체제에서 사용하는 ftp 데몬


2. # vi /etc/vsftpd/vsftpd.conf
  • anoymous_enable=NO
    -> 익명의 사용자 접속 허용 여부
  • local_enble=YES
    -> 로컬 계정 사용자의 접속 허용 여부
  • write_enable=YES
    -> write 명령어 허용 여부
  • local_umask=022
    -> 로컬 계정 사용자용 umask
  • xferlog_enable=YES
    -> 파일 전송 로그를 남길것인지 여부
  • xferlog_file=/var/log/xgerlog (기본경로로 이미 설정되어 있음)
    -> 파일 전송 로그 경로 및 파일명
  • xferlog_std_format=YES (선택, 안해도 상관 없음)
    -> xferlogㅍ 표준 포멧으로 로그를 남길지 여부
  • chroot_local_user=YES
    -> 홈 폴더에서 벗어날수 없도록 할지 여부
  • chroot_list_enable=YES
    -> 사용자 홈 디렉토리에서 상위로 접근하지 못하도록 하기위한 설정
  • chroot_list_file=/etc/vsftpd/chroot_list (기본값으로 설정이나 사용은 선택)
    -> 해당파일의 사용여부를 설정하고 사용시 파일의 경로를 설정
  • pam_serivce_name=vsftpd
    ->  PAM 파일명을 지정
  • pasv_enable=YES   (passive mode 사용시에만 설정)
    -> 액티브 모드로 사용할시 no & 삭제
3. ftp 계정 설정 및 패스워드 설정
 
# useradd -d /ftp_data/data (ftp계정이 사용할 home 폴더 설정) ftp_test (계정명)
-> /ftp_data/data 로 지정하려면 미리 디렉토리가 생성되어 있어함
# passwd ftp_test
  
4. 방화벽 (선택) -> 네트워크 단에서 방화벽을 사용하면 설정할 필요가 없다. 대부분 이 부분은 패스한다.
  •  centos에서의 방화벽의 기본 정책은 모두 막아버리기 때문에 ftp서버에 사용되는 포트 20, 21 open
 # vi /etc/sysconfig/iptables
  -A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT
  -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
  • 만약 방화벽이 설정을 하였다면 서비스를 재시작 해주어야 적용
 
5. 서비스 시작
# systemctl start vsftpd (rhel 7)
# service vsftpd start (rhel 6)
6. 부팅 서비스 데몬 등록
# systemctl enable vsftpd (rhel 7)
# chkconfig —level 2345 vsftpd on (rhel 6)
  
7. 네트워크 포트 확인
  •  vsftpd ::21 포트확인
    # netstat -nbtlp |   grep -i vsftp
  
8. ftp 실행
 방법 1.
 
 ①  [root@localhost ~]# ftp            // ftp 실행
 ②  ftp> open                               // ftp open
 ③  (to) 해당 IP                            // open 하고자 하는 ip 입력
  
방법 2.
 
 ①  [root@localhost ~]# ftp
 ②  ftp> open 해당 IP                    //open 과 IP를 같이 써줌.





 기타 오류 및 정보확인


1. 500 OOPS: could not open chroot() list file:/etc/vsftpd/chroot_list

참조 : http://uiandwe.tistory.com/160

vi /etc/vsftpd/chroot_list (FTP 로그인할 계정을 등록)


2. ftp: connect: No route to host 

참조 : http://vstu77.blog.me/120050132415

리눅스에서 ftp를 사용할 때에 ftp: connect: No route to host 는 메시지가 나올 때가 있다.

이럴 경우에는 host server 의 iptable을 살펴 보아야 한다. 사용 하지 않을 거면 iptables 를 stop 한다
#/etc/init.d/iptables stop
그 후
500 OOPS : cannot change directory:/root
500 OOPS : child died
라고 나오는 경우 아래와 같이 입력한다.
# setsebool -P ftp_home_dir=1


3. vsftp에서 500 OOPS: cannot change directory 오류가 나올 때
참조 : http://opencode.co.kr/bbs/board.php?bo_table=linux_tips&wr_id=27
/etc/vsftpd/vsftp.conf를 수정했는데도 불구하고 500 애러가 나오면서 접속이 안될때는 SELinux 때문이라고 합니다. 

# setsebool -P ftp_home_dir=1
이렇게 하면, ftp directory에 대한 접근을 허가 하게된다. "-P"는 Rebooting 될더라도 값을 저장하여, 정상적으로 동작 하도록 한다. 

vsftpd(vsftp 데몬)의 상태를 보기

# service vsftpd status

iptables(방화벽)의 상태를 보기

# service iptables status


4. vsftpd.conf 파일의 정보
참조 : http://kch1183.blog.me/50099324984


5. CentOS. FTP 총정리
참조 : http://blog.naver.com/newkyh00?Redirect=Log&logNo=30111155337


6. 발생 가능한 오류 
- OOPS: cannot change directory:/home/ueco
-> # setsebool -P ftp_home_dir=1 명령으로 해결

- OOPS: could not read chroot() list file:/home/ueco
-> vsftp.conf설정에서 chroot관련 설정을 모두 주석처리함

- OOPS: 500 OOPS: child died
디렉터리 목록을 획득할 수 없습니다.
Entering Passive Mode (10,250,114,243,21,35).

->컴퓨터의 FTP툴에서 Passive 모드를 비활성화해서 접속함

500 OOPS: vsftpd: refusing to run with writable root inside chroot()

vsftpd.conf에서
chroot_local_user=NO
allow_writeable_chroot=YES 
로 변경한다


반응형

'Linux' 카테고리의 다른 글

Linux xargs  (0) 2018.08.08
Linux Multipath Error  (0) 2018.08.08
Linux ipmitool (openimpi)  (0) 2018.08.08
Linux VLAN Create  (0) 2018.08.08
Linux ethtool  (0) 2018.08.08

+ Recent posts