CentOS 7 proftpd 서버 구축

2016.11.28 12:12

gooddew 조회:451


① 레드햇 엔터프라이즈 패키지 저장소 추가하기


01.png


# yum -y install epel-release



② ftp 사용자 생성


02.png


# useradd centos
# passwd centos



③ 보안 설정


 ☞ selinux 사용 안함


03.png


# nano /etc/sysconfig/selinux

SELINUX=disabled 로 변경



☞ 방화벽 포트 열기 


04.png


# firewall-cmd --permanent --zone=public --add-port=21/tcp


# firewall-cmd --reload (방화벽 재 시작)



④ proftpd 설치 및 서비스 실행


06.png


☞ proftpd 설치

# yum -y install proftpd


☞  proftpd 서비스 시작

# systemctl  restart  proftpd


☞  proftpd 서비스 상시 가동

# systemctl  enable  proftpd


☞  proftpd 서비스 상태 확인

# systemctl  status  proftpd




설정 기본 값으로는 익명 접근이 차단되는데 익명 사용 접근을 허용한다면


# nano /etc/proftpd.conf


nano 에디터에서 Ctrl + W 누르고 ANONYMOUS_FTP 찾으면


356 line  <IfDefine ANONYMOUS_FTP> 앞에 #을 붙입니다. ☞ 익명 계정 설정을 시작 하는 항목


07.png


# A basic anonymous configuration, with an upload directory
# Enable this with PROFTPD_OPTIONS=-DANONYMOUS_FTP in /etc/sysconfig/proftpd
# <IfDefine ANONYMOUS_FTP>





383 line ☞ Limit WRITE 항목은 익명 계정이 쓰기 가능 여부는 설정하는 항목입니다.


DenyAll → AllowAll 변경하면 익명도 쓰기가 가능합니다.


08.png



제일 끝으로 가면 425 라인에 </IfDefine> 앞에 # 추가 ☞ 익명 계정 설정이 끝나는 항목


09.png


    # Logging for the anonymous transfers
    ExtendedLog                 /var/log/proftpd/access.log WRITE,READ default
    ExtendedLog                 /var/log/proftpd/auth.log AUTH auth

  </Anonymous>


#</IfDefine>        → 제일 앞에 # 추가




*****************************************************************************************************************

☞ /etc/proftpd.conf  설정 파일  옵션 설명

*****************************************************************************************************************


ServerName             "ProFTPD Default Installation"

#서버 네임을 적어둔다. 아무거나 적어도 상관없다. 로그인시 보여줌

 

ServerType              inetd

#서버유형에는 inetd와 standalone모드를 선택할수 있다

 

DefaultServer           on

#주 IP address 또는 설정블록에서 지정되어진 address 중의 하나가 아닌

#IP address로 들어오는 커넥션이 있을때 기본으로 사용되어질 서버설정

 

Port                        21

#ftp의 기본 포트는 21이다

 

Umask                    022

#퍼미션을 설정해주는 지시자

#umask 022는 644퍼미션의 파일과 755퍼미션의 디렉토리를 생성한다

 

MaxInstances          30

#Proftpd가 standalone 모드로 작동할때 최대 생성가는한 자식 프로세스를 정의

#Dos공격 (무한로그인)에 대한 보호 목적이므로 적당한 값을 설정

 

User                       nobody

#Proftpd가 실행될때 User지시자로 정의된 사용자명으로 실행됨

#보안상 절대 root로 지정하지 말것

 

Group                     nobody

#User와 마찬가지

 

UseReverseDNS      off

#접속자의 IP주소를 Reverse Mapping을 하지 않겠다는 설정

#Reverse Mapping이란 IP주소를 도메인으로 변경하는것

 

IdentLookups          off

#일반적으로 클라이언트가 Proftpd로 연결했을때 remote username을 확인

 

AuthPAMAuthoritative      on

#PAM인증에 있어서 최종단계의 권한을 가짐

#즉 PAM인증이 실패할 경우 클라이언트와의 연결을 거부

 

 DisplayLogin           /home/sung/t

#이때 반드시 /home/sung처럼 지정된폴더에 t와같은 파일을 생성하고 그 안에 내용을 입력한다
#ftp로그인 때 보여지는 메시지 파일 이름을 정의합니다.

#이때 권한 설정해주는것을 잊지 않는다

         

 DisplayFirstChdir                  .message
#각 서브 디렉토리로 이동할 경우 보여줄 메시지 파일을 정의합니다.

 

RootLogin             off

#ftp로 root의 로그인을 허락 또는 거부하기 위한 지시자

 

AllowOverwrite      on

#모든 디렉토리내에 파일에 대해 같은 이름의 파일을 전송할때 덮어쓰기를

#허락또는 거부하는 지시자

 

####################

#anonymous섹션    ####

####################

<anonymous>

   #anonymous 설정을 시작합니다.
   User                           ftp
   Group                          ftp
  #anonymous접속의 경우 Proftpd가 실행 할 때 사용자명 "ftp" 그룹명 "ftp"로 실행됩니다. 

 

   UserAlias                      anonymous      ftp
  #anonymous로 ftp에 접속한 사용자들에 대해 접속자명을 ftp로 alias해 줍니다.
  #즉 anonymous로 접속한 사용자들은 사용자명 "ftp"의 권한을 가지게 됩니다.

  #접속시 ftp나 anonymous를 아이디에 입력하면 anonymous모드로 로그인이 됨

 

   MaxClients                        10   "Sorry, maxium users %m -- try again later"
  #동시 접속자수를 정의하는 지시자로 정의한 수를 초과할 때 " " 안의 문자열을

  #사용자에게 출력합니다

 

   MaxClientsPerHost             2   "Sorry, Allow only one client for host"
  #하나의 호스트당 최대 접속수를 정의하는 지시자로 정의한 수를 초과 했을 때

  #" " 안의  문자열을 사용자에게 출력합니다.

 

   DisplayLogin                        welcome.msg

  #이때 반드시 /var/ftp에 welcome.msg를 생성하고 그 안에 내용을 입력한다
  #ftp로그인 때 보여지는 메시지 파일 이름을 정의합니다.

         

   DisplayFirstChdir                  .message
  #각 서브 디렉토리로 이동할 경우 보여줄 메시지 파일을 정의합니다.

 

   RequireVal!idShell                  off
  #/etc/shells에 없는 shell binary로그인 여부를 결정합니다..
  #특별한 이유가 없다면 off로 설정해서 쓰기 바랍니다.

 

   HideUser                                root
  #HideUser로 설정된 유저 소유의 파일은 보이지 않는다.
  #하지만 anonymous에게 일긱 권한이 있으면 아무런 소용이 없다.

 

   Anonymous's Uploads Directory
  #업로드 디렉토리에 대한 설정입니다.
  #만약 업로드 디렉토리 이름을 변경하고 싶으면 아래의 uploads를 적당한 이름으로

  #변경해야 됩니다.

   AllowOverwrite              on
  #덮어 쓰기를 허용합니다.

 

   AllowRetrieveRestart        on

   AllowStoreRestart           on
    
   DenyAll
  #디렉토리 삭제(RMD) 권한을 주지 않습니다.

   AllowAll
  #읽기(READ), 업로드(STOR), 디렉토리 생성(MKD)에 대해 모두 허락합니다.
  #하지만 특정 권한에 DENY 설정을 하지 않는 이상 AllowAll 설정을 하지 않아도

  #Dney 설정된 권한을 제외한 나머지 권한을 가집니다.
      
   Anonymous's Public Directory
  #pub디렉토리에 대한 설정입니다.
     
   AllowAll
  #읽기(READ)권한을 허락합니다.
  
   DenyAll
  #업로드(STOR), 파일 삭제(DELE), 디렉토리 삭제(RMD), 디렉토리 생성(MKD)을 허락합니다.


</anonymous>