ProFTPD 是一种运行在Unix平台上或类Unix平台上的高可配置的 FTP 端口监控程序。ProFTPD 应用在了许多著名的高流量的匿名FTP站点中,包括 debian.org、kernel.org、Redhat.com 和 sourceforge.net。

最新发布版本

  ftp://ftp.proftpd.org/distrib/
  http://www.proftpd.org/


安装:

tar -zxvf proftpd-1.3.0.tar.gz
cd proftpd-1.3.0
./configure --prefix=/usr/local/proftpd
make
make install

------------------------
继续:

groupadd kukaftp
useradd  kuka -g kukaftp -d /var/ftp  -s /sbin/nologin
  //设置/var/ftp目录为ftp的目录,同时禁止SHELL登陆
passwd kuka //设置kuka用户的密码
mkdir /var/ftp/upload
chown kukaftp.kuka /var/ftp/upload  //设置upload目录kuka可写

编辑配置文件:
-vi /usr/local/proftpd/conf/proftpd.conf

ServerName                    "Kuka FTP Server V1.3"
ServerType                      standalone #独立进程运行
DefaultServer                   on
Port 21 #端口
umask 022 #022是个好的选择,如果为了方便可以改为002
AllowOverwrite on
AllowRetrieveRestart on
AllowStoreRestart On  #以上三项支持断点续传
ServerIdent On "Welcome To KUKA FTP Server (Ver 1.30)" #欢迎信息
RootLogin off #禁止ROOT登陆
UseReverseDNS off #关闭ReverseDNS,加快登陆速度
IdentLookups off #加快连接速度
TimeoutIdle 60 #连接超时
TimeoutLogin 30 #登陆空闲超时
TimeoutNoTransfer 100 #无数据传输超时
MaxClients 5 #最多客户数量
MaxclientsPerHost 5 "Sorry , Only 2 connection per ip allowed"
#超出连接提示
AllowForeignAddress off #禁止FXP
CommandBufferSize 128 #命令最大长度
MaxInstances                    30
User                            nobody #运行的用户,建议更改
Group                           nobody#运行的组,建议更改
DefaultRoot ~ kuka #限制用户只能在主目录内
#ShowDotFiles on 显示.开头的文件 (V1.26后已取消,用<a target="_blank" href="http://www.proftpd.org/docs/directives/linked/config_ref_HideFiles.html">HidenFiles</a>)

<limit LOGIN> #限制允许登陆的用户
Allowuser kuka
</Limit>

<Limit SITE_CHMOD> #限制是否允许使用CHMOD更改属性
 AllowUser kuka
 DenyAll
</Limit>


Limit命令是Proftpd的精华所在,用好Limit是关键

配置参考:

#global也可不要,后面如设置多个虚拟站点清晰
IdentLookups off #连接快些 还有后面的 UseReverseDNS
RequireValidShell off #匿名的一般需要加上这个
MaxLoginAttempts 1 #匿名的话1就可以了,最大密码验证次数
WtmpLog NONE #不记log到wtmp
DenyFilter \*.*/|.ftpaccess #DenyFilter做一些过滤,正则表达式
#DenyFilter ~!`\**/?,$@ # 根据自己需要写吧,上面的好烂:P
#LsDefaultOptions "-l" #ls参数
#AllowForeignAddress on #要允许 FXP 写成 on
CommandBufferSize 128 #最大命令长度
DirFakeUser On FTP #不显示给用户真实的用户、组
DirFakeGroup On FTP
DeferWelcome on #显示欢迎信息
PathDenyFilter "(^\.ftpaccess$)" #同DenyFilter 过滤用
User nobody #proftpd 以哪个用户、组的身份运行
Group nobody

TimesGMT off #时间

DenyAll
#出于某些考虑,开始禁掉,后面需要再打开。READ也可加过来...
#也可以这里设置允许连接的网段 Login,或者后面,建议用防火墙

IgnoreHidden on

HideNoAccess on
AllowOverwrite off #禁止重写覆盖,后面打开允许续传
#AllowRetrieveRestart默认是on 也可以写进来

ServerName "FTP server"
ServerType standalone #运行方式 还可以用 inetd xinetd
ServerIdent on "Welcome to FTP" #身份验证前显示给用户的,也可用文件,这里略
DefaultServer on
UseReverseDNS off #加快连接速度
Port 21 #FTP端口
Umask 022 #掩码 为了便于管理 用 002
PassivePorts 20000 30000 #被动模式端口段

SystemLog /var/proftpd/syslog #log 注意自己加上 logrotate 配置

MaxInstances 250 #最大
TimeoutLogin 30 #身份验证超时
TimeoutIdle 120 #发呆超时
TimeoutNoTransfer 300 #无数据传输超时
#TimeoutStalled 300

#log一些自定义格式,根据需要调整或者用默认
LogFormat myxfer "%h %u %t \"%r\" %s %b"
LogFormat default "%h %a %u %t \"%r\" %s %b $$ \'%F\'"
LogFormat auth "%h %a %t \"%r\" %s"
LogFormat write "%h %a %t \"%r\" %s %b"

#匿名的根目录 记得设置相应目录权限,ftp 用户应至少有 r x 权限

User ftp
Group ftpadmin
Umask 002
UserAlias anonymous ftp

MaxClients 50 "客满(%m)" #人多时的提示信息,可以用一些变量
#RateReadBPS 500000 #限速用
MaxClientsPerHost 2 "连接数多" #一个IP的连接数
TransferLog NONE #log
ExtendedLog /var/proftpd/upload.log write myxfer #log
ExtendedLog /var/proftpd/download.log read myxfer #log

DisplayLogin etc/welcome #欢迎文件,可以用一些变量
DisplayFirstChdir .message #改变目录时显示的消息

AuthAliasOnly on #只允许 UserAlias 过的 这里只允许 anonymous 不允许ftp

AllowAll
#打开允许连接,可以这是允许访问的网段,建议防火墙

AllowStoreRestart on #允许上传目录,可以续传,不能覆盖

AllowAll
#如果不想让下载,只让上载 可以加上
#DenyAll
#到这差不多就完了,每个目录可以写 .ftpaccess 设置权限
#后面这两个可以参考根据需要

#在FTP根目录又不让看的,上面把欢迎信息放里面了,当然可以放别的

DenyAll

#限制特定IP段能看的,也可在目录的.ftpaccess里面设置

Order deny,allow
Allow from 166.111.

#到这匿名的就完了

#加帐号密码可以用多种方式,密码文件,数据库等
#如果用系统的帐号,可以用 DefaultRoot 限制活动目录,比如把TA堵在家里 ~
#还有别的很多 根据需要自己看文档吧 比如打开MultilineRFC2228等
#
#记得设置相应目录权限,r x 一个都不能少
#记得设置文件权限(chmod/chown) 配置 .ftpaccess
#应该了解 ls rm chmod chown find xargs crontab 等命令以便进行简单管理
#kill/killall -HUP 或者用脚本 ftpshut ftpwho
#rm -f /etc/shutmsg


参考文档:

http://www.proftpd.org/docs/

http://blog.chinaunix.net/u/25218/showart_304645.html

http://www.chinaunix.net/jh/15/345782.html

http://www.castaglia.org/proftpd/..../index.html

http://www.chinaunix.net/jh/15/39507.html

http://www.chinaunix.net/jh/15/43925.html