Proftpd

ProFTPD는 보안과 기능에 중심을 둔 FTP서버로 wu-ftpd와 함께 널리 사용된다.

Vsftpd 설치 후 로긴이 안되어서 삽질 하다가 알게된 것…

 sudo apt-get install proftpd

하면 끝

복잡한 설정 필요없슴.

 sudo nano /etc/proftpd/proftpd.conf

설정

ServerName                  "ProFTPD Default Installation-WOW" 
# 서버 네임을 적어 줍니다. 아무거나 적어도 상관 없습니다.
 
ServerType                   inetd
# Server Tyre을 가리키는 지시자입니다. 
# 서버 유형에는 inetd와 standalone 모드를 선택할 수 있습니다.  
 
DefaultServer                   on
# 주 IP address 또는 <VirtualHost> 설정 블록에서 지정되어진 address 중의 하나가 아닌 IP address로 들어오는 
# connection이 있을때 기본으로 사용되어질 서버 설정을 조절한다
 
Port                            21
# Proftpd가 사용할 기본 포트를 지정하는 지시자로 기본 포트 변경시에 "21" 을 사용하고 싶은 포트로 변경해 주면 됩니다.
# ADSL이나 케이블 같은 유동 아이피 환경에서는 ISP업체에서 21번 23번 25번 80번 포트등을 필터링 하기 떄문에 ftp 기본
# 포트를 변경해 줘야지 외부에서 접속할 수 있습니다.
 
Umask                           022
# umask를 설정해주는 지시자로 새로 생성되는 파일이나 디렉토리의 기본 퍼미션을 결정합니다. 
# umask 022는 644의 퍼미션을 가진 파일과 755의 퍼미션을 가진 디렉토리를 생성합니다. 
# umask에 대한 자세한 내용은 리눅스 기초 강좌 편을 보기 바랍니다.
 
MaxInstances                    30
# Proftpd가 standalone 모드로 작동할 때 최대로 생성할 수 있는 자식 프로세스를 정의합니다. 
# DoS 공격에 대한 보호 목적이므로 적당한 값을 설정해서 사용하기 바랍니다.
 
User                            nobody
# Proftpd가 실행 될 때 User지시자로 정의된 사용자명으로 실행됩니다.
# 보안상 절대 root로 실행되게 해서는 안됩니다.
 
Group                           nobody
# 이것 또한 User지시자와 마찬가지고 Proftpd가 실행 될 떄 Group지시자로 정의된 Group 명으로 실행됩니다.
 
UseReverseDNS                off
# 접속자의 IP 주소를 Reverse Mapping을 하지 않겠다는 설정이다.
# Reserver Mapping이란 IP  주소를 도메인으로 변경하는 것을 말한다.
 
IdentLookups                     off
# 일반적으로, 클라이언트가 proftpd로 연결했을 때, ident protocol(RFC1413)은 remote username의 확인을 시도되기 위해 
# 사용된다. 이것은 IdentLookups 지시자를 통해 조절된다 (proftpd.oops.org의 번역분)
 
AuthPAMAuthoritative            on
# PAM이 인증에 있어서 최종 단계의 권한을 가지게 합니다.
# 즉 PAM 인증이 실패할 경우 클라이언트와의 연결을 거부합니다.
 
RootLogin                        off
# ftp로의 root 로그인을 허락 또는 거부 하기 위한 지시자입니다.
 
<Directory /*>
          AllowOverwrite                on
          # 모든 디렉토리내의 파일에 대해 같은 이름의 파일을 전송할 때 
          # 덮어 쓰기를 허락 또는 거부하기 위한 지시자.
</Directory>
 
 
##################                                                 
#  anonymous 섹션                                                                           
##################
 
<Anonymous ~ftp>
# anonymous 설정을 시작합니다. 
# anonymous설정은 </Anonymous> 까지 입니다. 
          User                           ftp
          Group                          ftp
          # anonymous접속의 경우 Proftpd가 실행 할 때 사용자명 "ftp" 그룹명 "ftp"로 실행됩니다.  
 
          UserAlias                      anonymous      ftp
          # anonymous로 ftp에 접속한 사용자들에 대해 접속자명을 ftp로 alias해 줍니다.
          # 즉 anonymous로 접속한 사용자들은 사용자명 "ftp"의 권한을 가지게 됩니다.
 
          MaxClients                        10   "Sorry, maxium users %m -- try again later"
          # 동시 접속자수를 정의하는 지시자로 정의한 수를 초과할 때 " " 안의 문자열을 사용자에게 출력합니다
 
          MaxClientsPerHost             2   "Sorry, Allow only one client for host"
          # 하나의 호스트당 최대 접속수를 정의하는 지시자로 정의한 수를 초과 했을 때 
          # " " 안의  문자열을 사용자에게 출력합니다.
 
          DisplayLogin                        welcome.msg
          # ftp로그인 때 보여지는 메시지 파일 이름을 정의합니다.
 
          DisplayFirstChdir                  .message
          # 각 서브 디렉토리로 이동할 경우 보여줄 메시지 파일을 정의합니다.
 
          RequireValidShell                  off
          # /etc/shells에 없는 shell binary로그인 여부를 결정합니다..
          # 특별한 이유가 없다면 off로 설정해서 쓰기 바랍니다.
 
          HideUser                                root
          # HideUser로 설정된 유저 소유의 파일은 보이지 않는다. 
          # 하지만 anonymous에게 일긱 권한이 있으면 아무런 소용이 없다.
 
# Anonymous's Uploads Directory
# 업로드 디렉토리에 대한 설정입니다.
# 만약 업로드 디렉토리 이름을 변경하고 싶으면 아래의 uploads를 적당한 이름으로 변경해야 됩니다.
 
<Directory uploads/*>
        AllowOverwrite              on
        # 덮어 쓰기를 허용합니다.
 
        AllowRetrieveRestart        on
 
        AllowStoreRestart           on
       <Limit DELE RMD>
               DenyAll
              # 디렉토리 삭제(RMD) 권한을 주지 않습니다.
       </Limit>
 
       <Limit READ STOR MKD>
       # 파일 읽기(READ), 업로드(STOR), 디렉토리 생성(MKD)에 대한 제어를 합니다.
       # 읽기(READ)권한은 다운로드를 의미합니다.
       # 와우 리눅스 7.0에는 MKD가 MDK로 잘못 설정되어 있습니다.
 
       AllowAll
       # 읽기(READ), 업로드(STOR), 디렉토리 생성(MKD)에 대해 모두 허락합니다. 
       # 하지만 특정 권한에 DENY 설정을 하지 않는 이상 AllowAll 설정을 하지 않아도
       #  Dney 설정된 권한을 제외한 나머지 권한을 가집니다.
       </Limit>
</Directory>
 
# Anonymous's Public Directory
# pub디렉토리에 대한 설정입니다.
<Directory pub/*>
      <Limit READ>
      AllowAll
      # 읽기(READ)권한을 허락합니다.
      </Limit>
 
      <Limit  STOR  DELE  RMD   MKD>
      DenyAll
     # 업로드(STOR), 파일 삭제(DELE), 디렉토리 삭제(RMD), 디렉토리 생성(MKD)을 허락합니다. 
     </Limit>
</Directory>
</Anonymous>

1. Order를 이용한 권한 제어 위에서 다루었던 proftpd.conf는 단순히 AllowAll 과 DenyAll만을 사용해 권한 제어를 했는데 Order 명령을 이용해서 접근제어와 권한 제어를 할 수 있습니다.

특정 호스트만 로그인을 허용할 때 <Limit LOGIN> Order allow,deny Allow from 203.241.205.,.rootman.co.kr Deny from all </Limit>

Order 명령에서 Allow 와 Deny는 공백 문자가 아닌 쉼표(,)로 구분합니다. Allow 와 Deny의 대상을 입력할 때도 대상들의 구분은 공백이 아닌 쉼표(,)로 구분합니다. 위의 설정은 203.241.205의 네트워크 주소를 가지거나 rootman.co.kr을 포함해 하위 호스트들만 접근이 가능하고 그외 호스트에 대해서는 Login을 받아 들이지 않습니다.

예) 203.241.205.97 —> 로그인 가능(203.241.205의 네트워크 주소를 가진다) 203.241.202.16 —> 로그인 불가(203.241.205의 네트워크 주소를 가지지 않는다) linux.rootman.co.kr —> 접속 가능(rootman.co.kr의 하위 호스트이다) microsoft.com —> 접속 불가(rootman.co.kr의 하위 호스트가 아니다) order명령은 LOGIN외에 READ, MKD, DELE, RMD, STOR등에도 적용할 수 있습니다.

2. 그외 설정 2-1 ftp 루트( / ) 디렉토리 지정 DefaultRoot ~ 사용자가 fpt로 접속해서 자신의 홈 디렉토리 외에 다른 곳에는 접근하지 못하게 합니다. ~(물결표시)는 사용자의 홈 디렉토리를 가리킵니다. 즉 자신의 홈 디렉토리가 루트( / ) 디렉토리가 됩니다. 이 지시자를 설정 하지 않으면 기본적으로 DefaultRoot는 /로 설정되어 있기 때문에 사용자는 최상위 경로( / ) 까지 접근 할 수 있습니다.

예) DefaultRoot ~aaa,bbb,ccc –> aaa, bbb, ccc 그룹에 속하는 ftp 접속 떄 자신의 홈 디렉토리가 루트( / ) 디렉토리가 된다.

 DefaultRoot           ~ !mine

–> mine 그룹에 속하는 사용자들을 제외한 나머지 접속자들은 자신의 홈 디렉토리가 루트 ( / ) 디렉토리가 된다.

2-2 심볼릭 링크 파일 보여주기 ShowSymlinks On 또는 Off 디렉토리에서 심볼릭 링크가 된 파일을 보여 주는냐, 보여 주지 않느냐에 대한 설정입니다. 이 설정이 안 되어 있을 때에는 기본적으로 계정 사용자 접속의 경우에는 심볼릭 링크파일이 보여지고 anonymous사용자 접속의 경우는 심볼릭 링크 파일을 보여주지 않습니다. 전체 사용자에게 On 또는 Off를 설정하고 싶다면 Global 섹션에 포함 시키면 됩니다.

2-3 숨김파일 보여주기 LsDefaultOption "-a" 이 설정을 함으로써 점( . ) 으로 시작하는 파일 또는 디렉토리명을 보여 줍니다. 즉 숨김 파일에 대한 설정입니다. 하지만 요즘 사용하는 ftp클라이언트에서도 이 기능을 제공합니다.

3. welcome.msg 파일에 사용할 수 있는 유용한 것들 호스트명 : %L 남은 용량 : %f 현재 접속자 수 : %N 최대 접속자 수 : %M 리모트 호스트 : %R 사용자명 : %U 관리자 메일 : %E

누구나 수정하실 수 있습니다. 문법은 Formatting Syntax참조하세요.

역링크