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 |