Gooday Note Scrap Source Android login
 
작성일 : 11-05-04 12:44
[Linux] Proftp 소개
 글쓴이 : 기리 (123.♡.195.24)
조회 : 2,387  
   http://www.smbw.net/79 [491]
1. Proftp 소개 
Proftpd는 파일전송 프로토콜인 FTP의 일종으로서 보안적이고 신뢰적인 FTP서버가 되기를 
희망하며 발전을 하며 Apache 설정파일과 같은 설정 방식을 따른다. 
Proftpd는 다음 기능을 제공한다. 
☞ Apache 웹 서버를 사용해 본 관리자라면 누구나 직관적으로 이해할 수 있는 지시자와 
  지시그룹으로 된 단 하나의 설정 화일. 
☞ Apache의 ".htaccess"와 비슷한 각 디렉토리의 ".ftpaccess" 설정. 
☞ 쉽게 설정할 수 있는 다중 가상 FTP 서버와 anonymous FTP 서비스. 
☞ 시스템 부하에 따라 stand-alone 또는 inetd 중에서 골라서 운영되도록 만들어짐. 
☞ anonymous FTP의 root 디렉토리에는 특별한 디렉토리 구조나 시스템 화일이 없어도 됨. 
☞ SITE EXEC 명령이 없다. 현대의 인터넷 환경에서 그런 명령은 보안면에서 악몽이다. 
  ProFTPD는 어떠한 경우에도 어떤 외부 명령도 실행하지 않는다. 검사를 위해 관리자에게 
  소스가 제공된다 (항상 제공될 것이다). 
☞ 유닉스 스타일 퍼미션에 기초한 숨겨지는 디렉토리나 화일들 또는 유저/그룹 소유권. 
☞ "root" 권한을 따낼 수 있는 공격의 기회를 줄이기 위해 stand-alone 모드에서는 특권이 
없는 유저도 운영을 할 수 있도록 설정가능. 주의: 이 기능은 Unix 시스템의 능력에 기초한다. 
☞ 기록하기, utmp/wtmp 지원. 기록하기는 wu-ftpd 표준과 호환이며 확장된 기록하기도 가능하다. 
☞ shadow 암호 지원, 만료된 계정들 지원 포함. 
                                                             <자료출처 : proftpd.oops.org> 


2. Proftp 설치파일 확인   


1. 패키지 확인 및 파일설명 
]# rpm -qa | grep proftp [Enter] 
proftpd-1.2.1-2wl 

]# rpm -ql proftpd-1.2.1-2wl  [Enter] 
/etc/pam.d/ftp  #ftp사용자 인증할때 사용한다. 
/etc/proftpd/conf/ftpusers # ftp접속을 제한하는 사용자를 등록한다. 
/etc/proftpd/conf/proftpd.conf #ftp설정파일이다. 
/etc/proftpd/conf/proftpd.xinetd #ftp를 xinetd에 넣을때 사용되는 파일이다. 
/etc/proftpd/document 
/etc/rc.d/init.d/proftpd   #proftpd 대몬파일이다. 
/usr/sbin/ftpshut    # proftp대몬을 죽일때 사용한다. 
/usr/sbin/in.ftpd 
/usr/sbin/in.proftpd  # xinetd에 넣을때 사용되는 대몬 
/usr/sbin/proftpd 
/usr/sbin/xferstats  #ftp상태를 보여준다. 
............. 
/var/ftp/incoming   # 디렉토리생성 
/var/ftp/pub        # 디렉토리생성 
/var/run/proftpd    # 디렉토리생성 




3 Proftpd.conf   


1. 설정 파일 분석 
]# cat /etc/proftpd/conf/proftpd.conf [Enter] 
# ProFTPD configuration file. Need more information of configuration, 
# See the References in '/usr/share/doc/proftpd-core-{version}/' directory 
# If u have any question, visit our Web Site. http://www.wowlinux.com 
# or http://proftpd.oops.org 
# Thank you - WOWLINUX.COM 


######################### 
#    Global start       #    ## Global Section 
######################### 

ServerName "canux.pe.kr FTP Server" 
# ftp서버네임을 지정해준다. 

ServerType standalone 
# 서버타입을 적어주는 곳으로 standalone,xinetd두가지 방법이 있습니다. 

DefaultServer on 
# ftp서버가 여러개일경우 기본ftp로 설정하는 부분이다. 

Port 21 
# ftp가 사용할 포트 

Umask 022 
# 파일생성시 퍼미션 지정 

MaxInstances 30 
# 최대 자식프로세스 수 지정 

User nobody 
# ftp가 실행되는 사용자명을 지정한다. 

Group nobody 
# ftp가 실행되는 그룹명을 지정한다. 

DefaultRoot                  ~ 
# 계정사용자가 ftp로긴시 홈디렉토리외의 상위디렉토리 접근금지 

UseReverseDNS off 
# 호스트 이름으로 기록할 건지를 설정 

ServerAdmin canux@canux.pe.kr 
# 서버관리자메일주소지정한다. 문제발생시 관리자한테 메일을 발송한다. 

IdentLookups off 

AuthPAMAuthoritative on 
# ftpusers를 사용하여 인증여부 설정 

RootLogin off 
# root관리자 로긴허용 여부 설정 만약 허용하고 싶을때는 ftpusers파일에서 root 각주처리 

DenyFilter \*.*/ 
# 특수문자에 대해서 거부설정 

DeferWelcome off 
# 인증전 서버 이름이 화면에 뿌려지는 것인지 허용여부 

TimesGMT off 
# 타임아웃을 설정안함 

#RateReadBPS 256 
# 초당 전송 대역폭(BPS) 

#RateReadFreeBytes 5120 
#RateReadHardBPS on 

TimeoutIdle 0 
# client에서 아무런 작업을 하지 않을때 연결을 끊는 것을설정 0이면 연결제한을 안한다 

TimeoutNoTransfer 0 
# TimeoutIdle,TimeoutNoTransfer는 User가 접속 후 아무 작업도 하지 않을 경우 접속 종료 시간 설정 

TimeoutLogin 300 
# client가 인증을 유지할수 있는 시간을 초단위로 지정 

DisplayLogin /etc/proftpd/conf/welcome.msg 
# 로그인시 뿌려지는 메세지의 경로 

DisplayFirstChdir .message 
# 각 디렉토리별로 접근시 뿌려지는 메세지 파일 이름 

<Directory /*> 
 AllowOverwrite on 
 # ftp / 디렉토리내에서 같은 이름의 파일이 전송받을때 덮어쓰기를 허용할지 거부할지 설정 
</Directory*> 

######################### 
#    Global   END       # 
######################### 

######################### 
#   Anonymous   start   #    ## Anonymous Section 
######################### 

<Anonymous ~ftp> 

 User ftp 
 #Anonymous로 접속할경우 사용자를 ftp로 인식한다. 
  
 Group ftp 
 #Anonymous로 접속할경우 그룹명을 ftp로 인식한다. 

 UserAlias anonymous ftp 
 #Anonymous접속한 사죵자의 접속자명을 ftp로 별칭 
  
 MaxClients 10 "Sorry, maxium users %m -- try again later" 
 #동시접속자수를 제한하는것으로 10이 초과시 " "안의 메시지를 출력한다. 
  
 MaxClientsPerHost 2 "Sorry, Over 2 connection not allow" 
 #한 호스트당 접속할수있는 최대 사용자수로 초과시 " "안의 메시지를 출력한다. 
  
 DisplayLogin welcome.msg 
 # ftp로 로긴할때 출력해지는 파일지정 
  
 DisplayFirstChdir .message 
 # 각 디렉토리별로 접근시 뿌려지는 메세지 파일 이름 
  
 RequireValidShell off 
 # Anonymous로 접속가능하게 할려면 off로 설정 

#  HideUser root 
# 지정한 사용자권한의 화일을 안보이도록 설정 

#  HideGroup root 
# 지정한 그룹권한의 화일을 안보이도록 설정 

# Anonymous/'s Uploads Directory 
 <Directory incoming/*> 
   AllowOverwrite on 
   # 같은이름의 파일을 덮어쓰기를 설정 
    
   AllowRetrieveRestart on 
   # FTP REST 명령을 통하여 file을 재전송 하는 것을 허용 
    
   AllowStoreRestart on 
   # client로 부터 server로 보내지는 store file 전송을 client가 "restarting" 하는 것을 허락하거나 거부 
    
   <Limit DELE RMD> 
   # 디렉토리삭제,삭제에 대한설정 
    
     DenyAll 
     # 디렉토리삭제,삭제에 전부 거부한다. 
      
   </Limit> 
   <Limit READ STOR MDK> 
   # 읽기,저장디렉토리생성에 대한 설정 
    
     AllowAll 
     # 읽기,저장,디렉토리생성을 허락한다. 
      
   </Limit> 
    
   <Limit LOGIN> 
   # 사용자로긴에 관한 설정 
    
   Order deny, allow 

   Deny from 203.249.73.2, 211.203.178.5, 211.112.37., .deny.com 
   # 위의 아이피나 도메인명에서는 접속을 거부한다. 

   Allow from all 
   # 위의 거부목록을 제외한 나머지 머신에서는 접속이 가능하다. 

   </Limit> 
    
 </Directory> 

# Anonymous\'s Public Directory 
 <Directory pub/*> 
 # pub/*아래파일에 대한 설정 
  
   <Limit READ> 
   # 읽기권한에 대한 설정 
    
     AllowAll 
     # 읽기권한 허락한다. 
      
   </Limit> 
   <Limit STOR DELE RMD MKD> 
   # 저장,삭제,디렉토리생성,삭제에 대한 설정 
    
     DenyAll 
     # 저장,삭제,디렉토리생성,삭제를 거부한다. 
   </Limit> 
 </Directory> 

</Anonymous> 
######################### 
#   Anonymous    end    #    ## Anonymous Section 
######################### 


4. /etc/proftpd/conf/welcome.msg   


1. welcome.msg설정 
ftp사용자가 접속했을때 보여주는 메세지내용이다. 
]# cat /etc/proftpd/conf/welcome.msg 
ftp://%L/ 
Available Disk Space : %F 
Now Login Users : %N/%M 
Remote Host : %R Remote User : %u 
Uptime : %T 
Admin-Mail : %E 

ftp접속후 나온결과 
ftp://canux.pe.kr/ 
Available Disk Space : 408516 
Now Login Users : 1/unlimited 
Remote Host : 127.0.0.1 Remote User : UNKNOWN 
Uptime : Wed Mar 27 05:55:03 2002 
Admin-Mail : canux@canux.pe.kr 


여기서 쓰이는 변수는 다음과 같은 뜻을 나타냅니다. 
변수 설명 
%L 서버명 
%u 접속 계정명 
%F 남은 용량 
%T 접속 시간 
%N 현 사용자 
%E 관리자 e-mail 
%M 최대 사용자 
&C 현재 디렉토리 
%R 리모트 호스트명 


5. Xinetd Deamon 합류   


1. xinetd에 끼워넣기 
rpm버젼을 설치했을경우 /etc/xinetd.d/에 proftpd설정파일은 /etc/proftpd/conf/proftpd.xinetd파일이다. 
이파일을 이름을 proftpd로 바꾸어서 복사하면 된다. 
만약 화일이 없다면 패키지 검사를 해보면된다. 
]# rpm -ql proftpd | grep proftpd.xinetd [Enter] 
/etc/proftpd/conf/proftpd.xinetd 

]# service proftpd stop [Enter] 
Shutting down proftpd: No way to suspend [  OK  ] 

]# cat /etc/proftpd/conf/proftpd.conf | grep ServerType [Enter] 
ServerType                      inetd    # 7.x대라고 xinetd를 적어주면 안된다. 

]# vi /etc/xinetd.d/proftpd [Enter] 
service ftp 

       disable                 = no    #사용가능하도록 no로 설정 
flags                   = REUSE 
       protocol                = tcp 
       socket_type             = stream 
       instances               = 50 
wait                    = no 
       user                    = root 
       server                  = /usr/sbin/in.proftpd 
       log_on_success          = HOST PID 
       log_on_failure          = HOST RECORD 
nice = 10 

위에서 바꿀내용은 사용여부만을 바꾸어주면 된다. 만약 소스로 설치했다면 server의 대몬경로를 수정해야 한다. 

]# service xinetd restart [Enter] 
Stopping xinetd:                                           [  OK  ] 
Starting xinetd:                                           [  OK  ] 

]# ftp 0 [Enter] 
Connected to 0. 
220 BCB1COOL Server (Proftpd FTP Server) [test.ilinuxbay.com] 
500 AUTH not understood. 
500 AUTH not understood. 
KERBEROS_V4 rejected as an authentication type 
Name (0:root): canux 
331 Password required for canux. 
Password: 
230-ftp://test.ilinuxbay.com/ 
Available Disk Space : 408508 
Now Login Users : 1/unlimited 
Remote Host : 127.0.0.1 Remote User : UNKNOWN 
Uptime : Wed Mar 27 14:05:51 2002 
Admin-Mail : canux@canux.pe.kr 
230 User canux logged in. 
Remote system type is UNIX. 
Using binary mode to transfer files. 
ftp> quit 
21 Goodbye 
]# 


6. ftp 관련 명령어   


1. proftp관련 명령어 
- ftpusers 
ftp접근사용자를 제한하는것으로 이파일안에 있는사용자는 ftp를 사용할수 없다. 
]  # cat /etc/pam.d/ftp [Enter] 
 auth       required     /lib/security/pam_listfile.so item=user sense=deny \ 
                         file=/etc/proftpd/conf/ftpusers onerr=succeed 

 ]# cat /etc/proftpd/conf/ftpusers [Enter] 
 # ftp로긴을 거부하는 사용자 목록 
 root 
 bin 
 daemon 
 adm 
 lp 
 sync 
 shutdown 
 halt 
 mail 
 news 
 uucp 
 operator 
 games 
 nobody 
 gdm 
 mysql 
 canux 
 ]# 

- ftpshut 
 지정한 시간에 모든 proftd server들을 shutdown 한다. 이 명령은 자동으로 shtudown 진행을 
 준비하고, 자동으로 현재 proftpd connection을 끊을 수 있으며, 새로운 연결을 거부하도록 
 할 수 있다. 명령은 suhtdown이 임박함을 proftpd process에 알리기 위하여 /etc/shutmsg와 
 같은 control file을 이용하여 사용할 수 있다. 

ftpshut [ -l min ] [ -d min ] time [ warning-message ] 

 옵션 설명 
 time time은 ftp server를 down시킬 시간을 말한다. now'라는 단어는 즉시 shutdown을 
 지시하며 +number 또는 HHMM. 이라는 두 개의 형식 중 하나는 미래의 시간에 shut down을 지시한다. 
 첫번째 형식은 number 분 후에 server를 down 하며 두번째 지시자는 하루 중 정확한 시간을 
 지시하며 24시간 clock 형식을 사용한다. (예 오후3시 30분 : 1530 ) 

 -l min shutdown 전에 새로운 ftp access를 거부하는 것을 분단위의 숫자로 지정한다. 
 만약 -l 옵션을 지정하지 않으면, 기본으로 10분이 적용된다. 
 (만약 shutdown 까지 10분이 채 남지 않는다면 즉시 적용된다.) 

 -d min shutdown 전에 현재 ftp connection들을 종료하는 것을 분 단위의 숫자로 지정한다. 
 -d 옵션을 지정하지 않으면 기본으로 5분이 적용된다. shutdown이 5분 이내로 남았다면 즉시 
 접속이 종료된다. 


 warning-message(경고 메세지) 

 새로운 접속을 거부하거나 현재 연결되어 있는 session을 종료시킬 때 부가적으로 메세지를 
 준비할 수 있다. 메시지는 아래와 같은 변수를 이용해서 작성할 수 있다. 

 %s proftpd가 종료하는 시간 

 %r 새로운 접속이 거부되기 시작하는 시간 

 %d 현재 접속이 종료되는 시간 

 %C 현재 작업중인 directory (where applicable) 

 %L local host name (of virtualhost name) 

 %R remote host name 

 %T local time (형식 : Thu Nov 15 17:12:42 1990) 

 %U login time 시에 주어진 username 

 ]# ftpshut -l 5 -d 5 /etc/proftpd/conf/warn.conf  [Enter] 

기리 11-05-04 13:43
 123.♡.195.24  
기리 11-05-04 13:45
 123.♡.195.24  
 
 

Total 121
번호 제   목 글쓴이 날짜 조회
46 [MySql] MySQL to PostgreSQL 기리 06-20 3450
45 [Test] 테스트 시나리오 템플릿 및 예제 최고관… 05-31 6865
44 [Linux] SVN(Subvision) 간단히 사용하기 기리 05-27 4018
43 [Linux] Subversion 사용법 (2) 기리 05-26 6701
42 [PHP] Ajax <--> PHP 한글 깨지는 현상 해결 기리 05-26 3662
41 [JavaScript] 영어,숫자,한글,이메일 확인 (1) 기리 05-23 2894
40 [Linux] find,rm (특정위치의 특정파일을 모두 찾아서 … 기리 05-23 2547
39 [Linux] readonly 에러로 파일 수정 안될때 기리 05-17 3654
38 [Linux] linux svn client 사용법 (1) 기리 05-16 5066
37 [Linux] 리눅스 마운트(mount) 명령어 기리 05-12 16777
36 [Linux] 리눅스 마운트강좌 mount 2편 기리 05-12 4050
35 [Linux] 리눅스 마운트강좌 mount 편 기리 05-12 4046
34 [JavaScript] Screen 객체 기리 05-09 2240
33 [Linux] Proftp 소개 (2) 기리 05-04 2388
32 [MySql] Mysql Error 기리 05-02 4099
 1  2  3  4  5  6  7  8  9