차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
tech:proftpd [2012/10/03 20:26] 14.32.18.124tech:proftpd [2016/07/12 09:26] (현재) – 바깥 편집 127.0.0.1
줄 1: 줄 1:
 +{{tag>proftpd}}
 +======Proftpd======
 +
 +ProFTPD는 보안과 기능에 중심을 둔 FTP서버로 wu-ftpd와 함께 널리 사용된다.
 +
 +[[vsftpd]] 설치 후 로긴이 안되어서 삽질 하다가 알게된 것...
 +
 +
 +
 +
 +   sudo apt-get install proftpd
 +
 +
 +하면 끝
 +
 +복잡한 설정 필요없슴.
 +
 +   sudo nano /etc/proftpd/proftpd.conf
 +
 +=====설정=====
 +
 +<code bash>
 +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               "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></code>
 +
 +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
 +
 + 
 +
 +
 +
 +
 +  * 
 +
 +
 +^  누구나 수정하실 수 있습니다.  문법은 [[wiki:syntax]]참조하세요. ^
 +