4. 5 (목) - Linux (FTP)

Linux Server - FTP

◎ Linux FTP의 특징
  - 가벼움, 기능은 더 적지만 사용에 큰 지장은 없음.
  - 대용량 파일 전송 서비스에 적합 → 큰 차이는 없음
  - 주로 엔지니어들이 사용
  - xinetd 보다는 standalone 형태로 운영
미리 띄워져있는 프로그램 : 데몬
데몬을 띄우는 방법
1. standalone : Listening을 본인이 스스로
2. superdemon : super demon이 Listening 담당 (xinetd)
둘의 차이는?
요즘은 2 → 1로 가는 추세, 이유는 리소스가 풍부해졌기 때문
  - 시스템에 리소스를 많이 차지하는 서비스
  - Out of band
    21번 포트 : control connection
    20번 포트 : data connection (Active mode)
                  - Passive mode : 임의의 1024번 이후의 포트를 사용 (위험하다고 생각할 경우)
    * 이와는 무관하게 클라이언트는 모두 1024번 이후의 포트를 사용

◎ 접속 및 전송 과정
 1. FTP client는 21번 포트를 통해 서버와 control connection을 설정
 2. 이 제어연결을 통해 사용자 계정과 비밀번호를 전송
 3. client는 제어연결을 통해 원격지의 디렉토리 변경과 같은 명령을 전송.
 4. 서버는 제어연결을 통해 파일 전송을 위한 명령을 받으면 TCP data connection을 초기화
 5. 하나의 파일 전송이 끝나면 data 연결은 close 됨.
 6. 다음 파일 전송을 위해서는 새로운 TCP connection을 생성


◎ Active mode / Passive mode (클라이언트 기준)

 ▷ Active mode
   - 클라이언트가 데이터를 수신받을 임의의 포트를 서버에 알려주면 서버는 20번 포트를 통해 클라이언트에게 데이터 전송
   - 서버가 클라이언트 측으로 data connection
 ▷ Passive mode
   - 서버가 데이터를 송신할 임의의 포트를 클라이언트에 알려주어 클라이언트가 서버의 임의의 포트에 접속하여 데이터를 가져감
   - 클라이언트가 서버 측으로 data connection


◎ vsftp

 ▷ vsftp 설치 확인
   # rpm -qa | grep vsftp
   vsftpd-2.0.5-12.el5

 ▷ 관련 파일
   • 데몬 : /usr/sbin/vsftpd
   • 관리용 스크립트 : /etc/rc.d/init.d/vsftpd
   • 설정 파일 : /etc/vsftpd/vsftpd.conf
   • 접근 제한 파일 : /etc/vsftpd/ftpusers
/etc/vsftpd/user_list
     → 목록에 있으면 제한하거나 없으면 제한하는 것으로 변경 가능
     → 정책을 바꿀때는 통일하는게 좋다.
     → 둘 중 하나는 안쓰는게 좋다

 ▷ 익명 사용자 관련 설정 - 지금은 사용하지 않는 설정
   anonymous_enable=YES   // (NO라고 해야함, anonymous가 접근 불가능하게)
   #anon_upload_enable=YES (d:NO)
   #anon_mkdir_write_enable=YES (d:NO)
   #deny_email_enable=YES (d:NO banned_email_file )
      - banned 파일에 지정된 메일 계정은 접속이 불허된다.
   #banned_email_file=/etc/vsftpd.banned_emails
   #non_anon_password=NO
   #anon_root=/var/ftp (d:/var/ftp)
   #ftp_username=ftp (d:ftp)

 ▷ chroot 설정
   #chroot_local_user=YES (d:No)
     - 전체 사용자에게 홈디렉토리를 각각의 root로 인식 시킨다.
   #chroot_list_enable=YES
     - chroot_local_user가 NO일 때 chroot_list_file에 지정된 사용자만 chroot를 적용한다.
      → 맘대로 돌아다니면 안될 놈을 적음
     - chroot_local_user가 YES일 때 chroot_list_file에 지정된 사용자만 chroot를 적용하지
       않는다.
      → 맘대로 돌아다닐 놈을 적음
   #chroot_list_file=/etc/vsftpd/chroot_list
     - Default 값 : /etc/vsftpd/chroot_list

 ▷ 제한 설정
   #max_clients=30
   #max_per_ip=3 (0은 무제한)
   #ls_recurse_enable=YES (ls –R 명령은 부하가 크다)
     - YES : 명령어 사용 가능
     - NO : 사용 불가능

 ▷ standalone 방식인 경우에만 사용되는 항목
   listen=YES
   tcp_wrappers=YES
     - /etc/hosts.deny, /etc/hosts.allow 파일에 정의
     - vsftpd : 192.168.10.
        • 마지막에 .은 패턴을 지정한다.
   local_max_rate=1024 # byte/sec
   anon_max_rate=1024
   → 와치독 옵션
   → rate 옵션은 잘 안먹힌다고 함, 의미 없음.

 ▷ 등록된 사용자(/etc/passwd) 관련 설정
   local_enable=YES
   write_enable=YES
   local_umask=022
   → 파일이 생성될때 퍼미션에서 umask를 뺀 권한이 주어짐

 ▷ Passive mode 설정
   pasv_enable=YES (default : YES)
   pasv_min_port=0 (default : 0, any port)
   pasv_max_port=0 (default : 0, any port)

Active mode인 경우 서버에서 클라이언트으로 data connection
을 시도함으로 방화벽이나 공유기 내부로의 접속이 불가능한 경우가 있
지만 passive mode인 경우는 클라이언트에서 서버로 접속함으로 접
속에 문제가 없다.

◎ Super demon을 사용하는 경우
 ▷ /etc/xinetd.d/vsftpd 파일 생성
   service ftp
   {
   disable = no
   socket_type = stream
   wait = no
   user = root
   server = /usr/sbin/vsftpd
   server_args = /etc/vsftpd/vsftpd.conf
   nice = 10
   flags = IPv4
   }
   • rpm으로 설치된 vsftp는 vsftpd.xinetd 파일을 제공한다.

 ▷ vsftp.conf 편집
   • listen=NO

댓글

이 블로그의 인기 게시물

Linux Server - FTP 실습 (2 / 2) : 사용자 제한 ( ftpuser / user_list )

전자서명 개념

3.27 (화) - Network (패킷 통신 - 4가지 지연)