rss· 投稿· 设为首页· 加入收藏· 繁體版
当前位置: 火魔网 » 应用技术 » FTP服务器

proftpd配置

    虽然vsftpd是款相当优秀的服务器软件,但是本人更喜欢proftpd。proftpd是一款开放源码的ftp服务器软件,是原来世界广泛使用的wu-ftpd的改进版本,修正了wu-ftpd的许多缺陷,其中最重要的变化且是最突出的是使用了类似于Apache的设置方式,使proftpd更容易配置和管理。此文系本人自己整理,如要转载,请注明出处,谢谢!
    本人安装的版本是proftpd-1.3.1.tar.gz,安装于/usr/local/proftpd目录下,以下是proftpd几个重要的文件:(1)/usr/local/proftpd/etc/proftpd.conf:proftpd的最主要配置文件。
(2)/usr/local/proftpd/bin/ftpcount:用于查看目前登录的人数。
(3)/usr/local/proftpd/bin/ftptop:类似于系统命令top的显示方式,显示登录帐户信息。
(4)/usr/local/proftpd/bin/ftpwho:显示登录帐户信息。
(5)/usr/local/proftpd/sbin/proftpd:proftpd的主要执行文件
(6)/usr/local/proftpd/sbin/ftpshut:关闭proftpd的执行文件,命令格式为:ftpshut [-R] [-l min] [-d min] time [warn-message]
当使用了ftpshut命令后,生成文件/etc/shutmsg,选项-R用于删除该文件使proftpd重启;
[-l min]:在ftp服务器关闭前几分钟内,尝试建立的连接不被接受;
[-d min]:在ftp服务器关闭前几分钟内,建立的连接被终止;
time:为必选参数,可以是用"now"立刻关闭proftpd服务器;
[warn-messgae]:关闭服务器前的警告信息。
proftpd默认是以standalone启动,但建议改为inetd启动方式,以防止分布式拒绝服务攻击,使用inetd方式必须在/etc/xinetd.d目录下建立文件proftpd,内容如下:
service ftp
{ flags  = REUSE
 socket_type = stream       
 wait  = no
 user  = root
 server = /usr/local/proftpd/sbin/proftpd
        server_args     = -c /usr/local/proftpd/etc/proftpd.conf
        log_on_success  += DURATION USERID
 log_on_failure += USERID
 disable  = no 有的资料表明还能以xinetd方式来启动,但我没有测试成功,要是哪位朋友知道的话,可分享一下。

-----------------------------------------------------------------------------------------

以下为proftpd.conf配置文件内容:

# This is a basic ProFTPD configuration file 
#========================host setting==================================
ServerName                     "FTP Server"  //服务器名称
ServerType                      inetd  //服务器运行方式,有standalone,inetd,xinetd
ServerIdent                     off  //屏蔽服务器版本信息,提高安全性
DefaultServer                   on  //启用虚拟FTP
Port                            21  //FTP监听端口
PassivePorts                    65400 65500  //被动传输的端口段
AllowRetrieveRestart            on  //下载时允许断点续传
AllowStoreRestart               on  //上传时允许断点续传
TimeoutLogin                    60  //身份验证超时时间
TimeoutIdle                     300  //无动作指令超时时间
TimeoutNoTransfer               300  //无数据传输超时时间
TimeoutStalled                  300  //指定一个连接的超时时间
Rootlogin                       off  //不允许root登录
RequireValidShell               off  //关闭要求对合法shell的要求,主要用于匿名登录
MaxClients                      100  //最大客户端数
MaxClientsPerHost 2 "Sorry, per IP address only have two connection!"  //每个客户端只允许两个联接,超出则显示后面定义信息
Umask    022  //权限掩码
MaxInstances                    30  //proftpd线程最大数
User                            nobody  //以nobody身份来运行服务器
Group                           nobody
IdentLookups                    off  //和UseReverseDNS作用一样,加快联接速度
UseReverseDNS                   off  //使用DNS逆向解析
MaxLoginAttempts                1  //最大登录尝试次数
DeferWelcome                    on  //显示欢迎信息
TimesGMT                        off  //关闭格林威治时间,使用本地时间
WtmpLog                         off  //不把日志写到Wtmp
DirFakeUser                     on FTP  //用FTP屏蔽文件和目录的真实属主
DirFakeGroup                    on FTP
MaxClientsPerUser               1  //同一个客户端只能最多1个帐号可以登陆
MaxHostsPerUser                 1  //每个帐户最多允许来源ip为1个
AllowForeignAddress             off  //关闭FXP,FXP为文件交换协议,用于FTP服务器之间进行文件的直接交换
CommandBufferSize               128  //最大命令长度,防止缓冲区溢出的攻击
DefaultRoot                     ~ driftleaf  //把群组driftleaf限制在主目录内
LogFormat auth "%h %a %t \"%r\" %s"  //日志的格式
LogFormat xfer "%h %u %t \"%r\" %s %b"
LogFormat write "%h %a %t \"%r\" %s %b"
ExtendedLog /var/log/proftpd/auth.log auth auth  //登录日志
ExtendedLog /var/log/proftpd/download.log read xfer  //下载日志
ExtendedLog /var/log/proftpd/upload.log write write  //写操作日志,包括上传,删除,创建目录等。
<Limit SITE_CHMOD>
  DenyAll
</Limit>
<Directory /tmp>  //定义目录/tmp可覆盖
AllowOverWrite on
</Directory>
<Directory /var/ftp/*>
<Limit WRITE RNFR DELE STOR DIRS READ CMD>  //对群组ftpadmin开放目录/var/ftp的写、更改目录名、删除文件、上传、列目录、读、改变目录的权限
AllowGroup ftpadmin</Limit>
</Directory>
#===========================anonymous setting==================================
# A basic anonymous configuration, no upload directories.  If you do not
# want anonymous users, simply delete this entire <Anonymous> section.
<Anonymous /var/ftp>  //匿名登录后默认的目录,默认为/var/ftp,可根据自己情况更改
User    ftp  //匿名登录后的PID
Group   ftp
UserAlias   anonymous ftp  //匿名别名设置为ftp,即可以用anonymous或ftp作为匿名帐户登录
AnonRequirePassword             off  //不要求密码验证
MaxClients   100  //匿名登录的最大客户数
TransferRate  RETR  100  user anonymous,ftp  //匿名的最大下载速率
DisplayLogin   welcome.msg  //匿名登录主目录显示的欢迎信息
DisplayChdir   .message  //切换到各子目录显示的信息
# Limit WRITE everywhere in the anonymous chroot
<Limit WRITE>  //拒绝一切写操作
  DenyAll
</Limit>
</Anonymous>

---------------------------------------------------------------------------------------------

proftpd管理:

(1)建立群组如ftpadmin

(2)改变/var/ftp的群属主,并赋予群组ftpadmin对/var/ftp/*的写权限

    [root@angel]#chown -R root:ftpadmin /var/ftp/*
    [root@angel]#chmod -R 775 /var/ftp/*

(3)建立管理帐号

    [root@angel]#useradd -d /var/ftp -g ftpadmin -s /sbin/nologin -p ****** ftpadmin

(4)在proftpd.conf里对帐户ftpadmin的权限进行更详细的设置,如是否能离开主目录/var/ftp等

-------------------------------------------------------------------------------------------

proftpd目录权限参数:
MKD:建立目录的权限
RMD:删除目录的权限
CMD:改变目录的权限
RNFR:更改目录名的权限
DELE:删除文件的权限
STOR:从客户端上传到服务器的权限
RETR:从服务器下载到客户端的权限
READ:可读权限,但不包括列目录的权限
DIRS:列目录的权限,即能用ls命令
WRITE:写文件或目录的权限,相当于MKD和RMD
LOGIN:登陆目录的权限 针对上述代码中权限所应用的对象包括以下:
AllowUser:针对某个用户允许的Limit
DenyUser:针对某个用户禁止的Limit
AllowGroup: 针对某个用户组允许的Limit
DenyGroup:针对某个用户组禁止的Limit
AllowAll:针对所有用户允许的Limit
DenyAll:针对所有用户禁止的Limit proftpd支持的参数:
%T:当前时间
%F:所在硬盘剩下的容量
%C:当前所在的目录
%R:Client客户端的主机名称
%L:Server服务端的主机名称
%U:使用者帐号名称
%M:最大允许联机人数
%N:目前的联机人数
%E:FTP主机管理员的Email
%i:本次上传的文件数
%o:本次下载的文件数
%t:本次上传+下载的文件数

顶一下
(0)
踩一下
(0)