Proftpd 설정

▣ Proftpd 설정

vi편집기로 /proftpd/etc 에 있는 proftpd.conf 파일을 열어보면

ServerName “ProFTPD Default Installation-WOW”

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

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 설정을 시작합니다.
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)을 허락합니다.

=======================================================================================

ProFTPD 설치

설치는 비교적 간단합니다. 포트시스템을 이용하여 설치합니다.
# cd /usr/ports/ftp/proftpd
# make config
make config 명령어를 통해 설치 옵션을 선택하고 OK를 누릅니다.
# make install clean

ProFTPD 실행
# cd /usr/local/etc/rc.d
# ./proftpd start
# ./proftpd status
시작되었다고 메시지가 나오면 정상적으로 시작 된 것입니다.

주의 : inetd로 FTP가 실행되고 있다면 기존의 FTP를 비활성화 시킵니다.
# vi /etc/inetd.conf
inetd.conf 파일에서 다음라인을 주석처리 후 재시작 합니다.
ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l

시작프로그램에 등록
rc.conf 파일에 proftpd_enable=”YES” 를 적당한 위치에 추가합니다.
# vi /etc/rc.conf
– 설정 내용

세부설정
proftpd.conf 파일에서 세부적인 설정을 변경할 수 있습니다.
# vi /usr/local/etc/proftpd.conf
설정을 변경한 후에는 restart 명령을 이용해 재시작합니다.

유저의 홈 디렉토리 밖으로 이동 제한
기본적으로 유저는 서버내의 모든 폴더를 돌아다닐 수 있습니다.
다음 부분의 주석을 제거합니다.
DefaultRoot ~

특정그룹만 다른 디렉토리로 이동 가능
제외할 그룹이름이 wheel이라면 다음과 같이 입력합니다.
DefaultRoot ~ !wheel

FTP서버 정보 숨김
새로운 라인에 다음을 추가합니다.
ServerIdent off

환영메시지 보여주기
환영메시지는 접속하기전 메시지와 접속한 후 메시지가 있습니다.
새로운 라인에 다음을 추가합니다.
DisplayConnect /usr/local/etc/proftpd/connect.msg
DisplayLogin /usr/local/etc/proftpd/login.msg
connect.msg와 login.msg는 임의의 파일이므로 다른파일명으로 해도 상관 없습니다.
/usr/local/etc/proftpd 폴더에 두 파일을 만들고 메시지를 넣습니다.
# cd /usr/local/etc
# mkdir proftpd
# vi proftpd/connect.msg
# vi proftpd/login.msg

로그파일 경로변경
ScoreboardFile 부분의 경로를 바꾸면 됩니다.
특정 사용자 제한
ftpusers 파일에 사용할 수 없는 유저를 추가합니다. (재시작 불필요)
#vi /etc/ftpusers
동작확인
서버에서 다음 명령어를 이용하여 접속합니다.
아이디를 입력하는 부분이 나오면 제대로 접속이 된 것입니다.
# ftp localhost

Posted in Linux