정리잘된 proftp 설정

2019. 3. 5. 08:19·IT기술 관련/리눅스
반응형

출처: https://levin01.tistory.com/1624


1. Proftp 소개  


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
# orhttp://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
# 호스트 이름으로 기록할 건지를 설정

ServerAdmincanux@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]

반응형
저작자표시 (새창열림)

'IT기술 관련 > 리눅스' 카테고리의 다른 글

리눅스 CLI에서 공인 IP 확인하기  (0) 2019.06.11
CentOS php-mcrypt 설치  (0) 2019.03.20
Cron으로 초 단위 실행  (0) 2019.03.04
[FTP] proftpd 의 실행환경 설정파일 proftpd.conf 정복하기  (0) 2019.02.17
[파일] Proftpd 파일 업로드 관련 설정 사항  (0) 2019.02.15
'IT기술 관련/리눅스' 카테고리의 다른 글
  • 리눅스 CLI에서 공인 IP 확인하기
  • CentOS php-mcrypt 설치
  • Cron으로 초 단위 실행
  • [FTP] proftpd 의 실행환경 설정파일 proftpd.conf 정복하기
호레
호레
창업 / IT / 육아 / 일상 / 여행
    반응형
  • 호레
    Unique Life
    호레
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 법률
        • 기본
        • 개인정보보호법
        • 정보통신망법
        • 전자금융거래법
        • 전자금융감독규정
        • 신용정보법
        • 온라인투자연계금융업법
      • 창업
        • 외식업 관련
        • 임대업 관련
        • 유통업 관련
        • 세무 관련
        • 마케팅 관련
        • 기타 지식
        • 트렌드
        • Youtube
      • IT기술 관련
        • 모바일
        • 윈도우
        • 리눅스
        • MAC OS
        • 네트워크
        • 빅데이터 관련
        • A.I 인공지능
        • 파이썬_루비 등 언어
        • 쿠버네티스
        • 기타 기술
      • 퍼블릭 클라우드 관련
        • Azure
        • GCP
        • AWS
      • 정보보안 관련
        • QRadar
        • Splunk
        • System
        • Web
      • 기타
        • 세상 모든 정보
        • 서적
      • 게임 관련
        • 유니티
      • 부동산
      • 맛집 찾기
        • 강남역
        • 양재역
        • 판교역
        • ★★★★★
        • ★★★★
        • ★★★
        • ★★
        • ★
      • 결혼_육아 생활
        • 리얼후기
        • 일상
        • 육아
        • 사랑
        • Food
      • 영어
        • 스피킹
        • 문법
        • 팝송
        • 영화
      • K-컨텐츠
        • 드라마
        • 영화
        • 예능
      • 독서
      • 프로젝트 관련 조사
        • 시스템 구축
        • 로그 관련
        • 웹
        • APT
        • 모의 해킹
        • DB
        • 허니팟
        • 수리카타
        • 알고리즘
        • FDS
      • 기업별 구내 식당 평가
        • 한국관광공사
        • KT telecop
        • KT M&S
        • KT powertel
        • KT cs 연수원
        • 진에어
      • 대학 생활
        • 위드윈연구소
        • 진로 고민
        • 채용정보
        • 자동차
        • 주식
        • 악성코드
        • 게임 보안
      • 쉐어하우스
  • 블로그 메뉴

    • 홈
    • 게임 관련
    • IT 기술 관련
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    맛집
    점심
    무역전쟁
    AWS
    런치
    대통령
    마케팅
    상호관세
    복리후생
    판교맛집
    돈까스
    수제버거맛집
    판교역
    보안가이드
    판교
    쥬쥬랜드
    수제버거존맛
    이재곧죽습니다
    수제버거
    유니티
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
호레
정리잘된 proftp 설정
상단으로

티스토리툴바