System/OS

[linux] Proftpd 설치 가이드

by hooni posted Apr 23, 2003
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
가상 FTP서버 (ProFTPd) 

가상 FTP는 FTP데몬만 잘 설치해 주면 크게 문제가 없다. 


1-1 ProFTPd 설치하기 

CD-ROM이나 각 배포본의 FTP에서 RPM으로 다운로드하든지 
http://www.proftpd.org/ 에서 소스로 받든지 간에 여러분의 자유이다. 
필자는 가상FTP를 테스트할 즈음에는 1.2.0pre6 의 버전의 소스를 다운로드 
하여 설치하였다. 

ftp://linux.sarang.net/ 에 접속하면 RPM으로 다운로드하여 설치할 수 
있다. 

소스를 컴파일하여 설치할 경우 

소스를 컴파일할 디렉토리는 /usr/local/src 이고 설치할 디렉토리는 
/usr/local/proftpd 이다. 

# cp proftpd-1.2.0pre6.tar.gz /usr/local/src/ 
# cd /usr/local/src 
# ls 
proftpd-1.2.0pre6.tar.gz 
# tar zxvf proftpd-1.2.0pre6.tar.gz 
# cd proftpd-1.2.0pre6 
# ./configure --prefix=/usr/local/proftpd  
--sysconfdir=/etc --localstatedir=/var/run  
--enable-autoshadow --datadir=/home/ftp 
# make 
# make install 
# mkdir /home/ftp 

RPM으로 설치하는 경우 

# rpm -Uvh proftpd-1.2.0pre6-1.i386.rpm 


소스를 컴파일하여 설치하든지 RPM으로 설치하여 설치하든지 
/etc/inetd.conf 파일을 다음과 같이 주석을 추가해 주어야 한다. 
즉 웹 호스팅 성격에 맞게 Proftpd를 standalone으로 데몬을 
가동하기 위해서이다. 

-----------/etc/inetd.conf --------------------------------- 
# 중략 
#ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a 
#ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd 
# 중략 
---------------------------------------------------------- 

그리고 슈퍼데몬을 재가동한다. 

# /etc/rc.d/init.d/inet restart 
또는 
# killall -HUP inetd 

1-2. /etc/proftpd.conf 

이제 마지막 단계인 ProFTPd 설정파일을 편집해 보자. 

---------/etc/proftpd.conf --------------------------------- 

ServerName "ProFTPD ALZZA Default Installation" 
ServerType standalone # standalone으로 설정 
ServerAdmin ftp@linux.ac.kr 
# sendmail virtualtable 을 보라. 
DefaultServer on 
AuthPAMAuthoritative on 
Port 21 
MaxInstances 30 
User nobody 
Group nobody 


AllowOverwrite on 


##Global 설정 VirtualHost까지 영향을 주므로 자원 낭비가 덜하다. ## 

Umask 022 # 각 VirtualHost마다 따로 정의해도 된다. 
DisplayLogin .welcome.msg 
# 원래는 hidden파일이 아닌 welcome.msg이다. 
DisplayFirstChdir .message 
#User ftp # Global로 넣지 않은 게 좋다. 
#Group ftp # Global로 넣지 않은 게 좋다. 
#MaxClients 10 # Global로 넣지 않는다. 
#MaxClientsPerHost 1 # Global로 넣지 않는다 
UserAlias anonymous ftp 
RequireValidShell off 
# Anonymous 접속허용을 위해서는 off로 꼭 설정. 
ShowSymlinks on 
DefaultRoot ~ !san2 
# 위와 같이 DefaultRoot를 설정하면 그룹 "san2"를 제외하고 모두 
# 일반 유저는 기본 Root가 ~HOME/이 됩니다. 
# 또한 (!)을 없애면 그 반대가 됩니다. 

########Global end ################################### 


User ftp # 모든 Anonymous 에 꼭 넣어주어야 한다. 
Group ftp # 모든 Anonymous 에 꼭 넣어주어야 한다. 
#UserAlias anonymous ftp 
# Global로 설정되어 있으므로 UserAlias는 넣을 필요없다. 
MaxClients 10 "죄송합니다. 최대 인원은 %m명입니다." 
MaxClientsPerHost 1 "호스트당 1회만 접속 가능합니다." 

DenyAll 

# 읽기/쓰기/디렉토리 만들기를 허용하기 위해서는 다음 주석제거. 
#AllowALL 



###### 가상 FTP 호스트설정 부분 ########################## 
# ★★★ 주의 ★★★ 
# ProFTPd는 현재의 버전 1.2.0pre6(8포함)은 이름 기반 가상호스트를 
# 지원하지 않는다.(Anonymous) 
# 아래에 설정한 예는 IP 기반 가상호스트의 예이다. 
##################################################### 



ServerName "ftp.linuxer.com" 
ServerAdmin ftp@linuxer.com 

Umask 002 
MaxClients 10 "죄송합니다. 최대 인원은 %m명입니다." 
MaxClientsPerHost 1 "호스트당 1회만 접속 가능합니다." 


User ftp 
Group com # Umask 002 와 관련이 있다. 

DenyAll 



AllowStoreRestart on 
AllowRetrieveRestart on 
# 위의 2개의 지시자는 이어올리기를 위해서는 추가하십시오. 
# 이때 "on" 지시자 사이는 <탭>를 이용하십시오. 


Order Allow,Deny # 컴마(,)다음에 칸을 빈칸을 띄지 않는다. 
Allow from all 
Deny from 192.168.15.,haker.com 
# C클래스 192.168.15.* 와 haker.com 은 쓰기를 금한다. 



### Umask 에 대해서 생각해 보자 ++++++incoming 디렉토리####### 

# umask 는 새로 생성된 디렉토리나 파일에 대해서 퍼미션을 기본적 
# 으로 적용시킨다. 
# 즉 Global 에서 umask 022로 설정되어 있으므로 Anonymous 가 
# 접속하여 새로 생성시킬 수 있는 
# 디렉토리에 대해서 755의 퍼미션, 그리고 파일에 대해서는 644의 퍼미 
# 션을 준다. 

# 잠깐 디렉토리의 소유자에 관해서도 생각해보자. 
# Anonymous가 새로 생성된 디렉토리가 755이므로 이 디렉토리의 소유자 
# 는 root 나 다른 user가 아니고 "ftp" 소유자가 된다. 
# 즉 UserAlias Anonymous ftp이므로 모든 Anonymous 에 대해서 
# 다른 Anonymous가 생성시킨 디렉토리나 파일을 지우거나 바꿀 수 있다. 

# 한가지 더.....Anonymous가 아닌 일반 유저로 들어왔을 경우를 생각해보자. 
# incoming 디렉토리의 퍼미션이 777로 되어 있더라도 Anonymous 가 생성 
# 된 디렉토리나 파일은 지우거나 바꿀 수 없다.(755이므로) 단, incoming 디렉 
# 토리하에서는 퍼미션이 777이므로 생성할 수 있다. 

# ftp.linuxer.com 에 대해서 관리자는 "com" 유저이다. 관리자가 Anonymous 
# 가 생성한 디렉토리나 파일을 지울 수 없다면 관리자라고 할 수 있겠는가? 
# 여기에 그 해법이 바로 Umask 과 웹호스팅 관리자의 능력에 달려있다. 

# /home/com/vir-ftp 의 소유자는 ftp가 아닌 "com" 의 소유자로 해야하고, 
# incoming 하위 디렉토리 에 대해서 Unamsk 070이나 020으로 설정하면 
# 퍼미션은 707 이나 757 이 된다. 
# 즉 소유자가 누가 되든지간에 Others가 지우거나 생성할 수 있는 것이다. 
# 일반 유저로 들어왔을 경우에 해당한 것이다. 

# 이런 방법이 싫다면 Anonymous Group 정도를 VirtualHost 관리자인 
# "com"으로 대체해도 된다. 
# 그리고 Umask 002로 설정하면 775의 퍼미션을 생성되어 "com"유저가 
# 관리할 수 있다..이때는 com 그룹에 "com"유저가 포함되어 있거나 
# 단독으로 "com" 유저만 포함해야 한다. 
# 이유는 "com" 그룹에 포함된 다른 유저가 피해를 줄 수 있기 때문이다. 
# 또는 User 와 Group 에 적어도 관리자가 포함되어 있어야 한다. 
# 왜냐하면 "com" 유저는 고객이고 "root" 권한을 획득할 수 없기 때문이다. 

# 방법은 여러 가지이다. 

# 이처럼 Anonymous 가 FTP클라이언트로 접속하여 디렉토리를 생성 
# 하고 지울 수 있게 하기 위해서는 소유자와 퍼미션 - incoming 디렉토리 
# 에 대한 접근 정책 - 그리고 Umask 의 순서로 관리해야한다. 
# 예를 들어 아무리 Umask 000으로 설정했더라도 incoming 디렉토리에 
# 대한 쓰기 권한이 없다면 Anonymous 는 쓸 수 없다는 것이다..... 

# 좀더 많은 정보를 원한다면 ProFTPD Reference.html 을 읽어 보기 
# 바란다. 





###### VirtualHost 의 정의 ################### 
# ★★★ 주의 ★★★ 
# ProFTPd는 현재의 버전 1.2.0pre6(8포함)은 이름 기반 가상호스트를 
# 지원하지 않는다.(Anonymous) 
# 아래에 설정한 예는 IP 기반 가상호스트의 예이다. 
##################################################### 



ServerName "ftp.linuxer.net" 
ServerAdmin ftp@linuxer.net 

#Umask 002 
# 주석으로 처리되어 있기 때문에 Global 에서 설정한 022를 따른다. 
MaxClients 10 "죄송합니다. 최대 인원은 %m명입니다." 
MaxClientsPerHost 1 "호스트당 1회만 접속 가능합니다." 


User ftp 
Group ftp 
# ftp.linuxe.com처럼 incoming 디렉토리가 정의되어 있지 않기 
# 때문에Anonymous는 디렉토리를 생성할 수 없고 따로 지정할 필요도 
# 없다. 

DenyAll 




-------------end ------------------------------------------- 

설정파일 편집이 모두 끝났으면 Anonymous가 접근할 수 있는 디렉토리를 
만들어주자. 

# su com 
$ mkdir ~com/vir-ftp 
$ mkdir ~com/vir-ftp/pub incoming 
$ chmod 705 ~com/vir-ftp/pub 
$ chmod 707 ~com/vir-ftp/incoming 
$ su net 
Password : ****** 
$ mkdir ~com/vir-ftp 
$ mkdir ~com/vir-ftp/pub 
$ chmod 705 ~com/vir-ftp/pub 

FTP데몬을 재가동한다. 

# /etc/rc.d/init.d/proftpd restart 

이제 Anonymous 가 접속할 때 보여주는 .welcome.msg 파일도 만들어 
주자. vir-ftp 밑에 이 파일이 존재하면 된다. 

----------~HOME/vir-ftp/.welcome.msg ---------------------- 
환영합니다...... 
ProFTPd Alzza Linux 6.0 2.2.12(안정) 
ftp://%L/ 

o 남은 용량 : %F KB 
o 현 사용자 수 : %N/%M (하나의 호스트당 1명까지 접속 허가합니다) 
o %R의 %u(%U)님이 접속한 
o 현 시각은 %T년입니다. 

Admin-mailto:%E 
-----------end -------------------------------------------- 

위의 결과는 

----------------------------------------------------------- 
환영합니다...... 
ProFTPd Alzza Linux 6.0 2.2.12(안정) 
ftp://ftp.linux.ac.kr/ 

o 남은 용량 : 302868 KB 
o 현 사용자 수 : 2/10 (호스트당 1회 접속만 허가합니다) 
o 192.168.12.5의 UNKNOWN(anonymous)님이 접속한 
o 현 시각은 Tue Sep 14 22:05:36 1999년입니다. 

Admin-mailto:ftp@linux.ac.kr 
----------------------------------------------------------- 
1.2.pre6 버전을 제외한 그 이상의 버전은 "%F KB" 대신 "%f"로 
기입하면 Mb로 출력됩니다. 


이로써 가상 FTP 설정도 모두 끝났다.