proftpd安装配置

来源:互联网 发布:网络拍卖许可证 编辑:程序博客网 时间:2024/05/18 13:30

需求:
(要保障FTP服务器的安全,特要求如下:
1
、系统要求LINUXUNIX
2
、虚拟用户,不能是系统用户。
3
、可以限制上传,下载速度。
4
、可以限制迅雷多线程下载。
5
、可以限制用户目录大小,以及上传文件大小等。)

下面开始安装配置proftpd

# wget 
ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.2.tar.gz

http://sourceforge.net/p/proftp/mailman/proftp-announce/


# tar zxvf proftpd-1.3.2
# cd proftpd-1.3.2
# ./configure --prefix=/usr/local/proftpd --with-modules=mod_quotatab:mod_quotatab_file
# make
# make install
# cp contrib/ftpasswd /usr/local/proftpd/bin/
# cp contrib/ftpquota /usr/local/proftpd/bin/
# vi /usr/local/proftpd/etc/proftpd.conf
ServerName                        "mz16.cn Ftp System"
ServerType                        standalone
DefaultServer                        on
Port                                21
# Don't use IPv6 support by default.
UseIPv6                                off
Umask                                022
# To prevent DoS attacks, set the maximum number of child processes
# to 30.  If you need to allow more than 30 concurrent connections
# at once, simply increase this value.  Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd).
MaxInstances                        30

#
限制连接数
MaxClients 10 "
最大允许10个用户同时访问"

MaxHostsPerUser 1 #
每个帐户最多允许来源ip1对防止ftp帐号还是比较有用的。


MaxClientsPerUser 1 #
每个帐户在每个客户端最多可以同时登陆1,可以防止多线程软件下载对服务器的破坏。(用迅雷下载,线程只能限定为1个。)

MaxClientsPerHost 1 #
同一个客户端只能最多1个帐号可以登陆

不显示服务器相关信息proftpd版本
ServerIdent          off
禁用反向域名解析
UseReverseDNS      off

User                                nobody
Group                        nobody

# To cause every FTP user to be "jailed" (chrooted) into their home
# directory, uncomment this line.
DefaultRoot ~       # 
把用户锁定在自己的目录下,根目录无法访问。

# Normally, we want files to be overwriteable.

AllowOverwrite                on        #
设置文件可以被覆盖
AllowForeignAddress     on      # 
支持FXP
PassivePorts   49152 65534       # 
支持被动模式

AllowRetrieveRestart on           # 
允许下载续传,默认即开启
AllowStoreRestart on              # 
允许上载续传
RequireValidShell off   # 
不要求有合法shell,直接效果是允许nologin用户和虚拟用户登录
AuthOrder mod_auth_file.c mod_auth_unix.c
AuthUserFile /usr/local/proftpd/etc/passwd 
TransferRate STOR 150 user tom    # 
限制tom用户上传的速率限制在150Kbytes/s
TransferRate RETR 100 user tom    # 
限制tom用户下载的速率限制在
100Kbytes/s
# Using a file-based limit table
QuotaLimitTable file:/usr/local/proftpd/etc/ftpquota.limittab
# Using a file-based tally table
QuotaTallyTable file:/usr/local/proftpd/etc/ftpquota.tallytab
QuotaDirectoryTally on
QuotaDisplayUnits Mb        # 
显示以MB为单位

QuotaEngine on
QuotaLog /usr/local/proftpd/etc/Quota.log
QuotaShowQuotas on
#QuotaOptions ScanOnLogin    # 
这个选项如果去掉注释,会先扫描用户目录的大小,比如用户目录限定为50M,已经使用了18M,那么只能上传小于32M的文件,否则会失败。如果加上这个选项,会忽略掉用户目录大小,上传只要小于50M,都可以上传。建议注释这条选项。

# Bar use of SITE CHMOD by default

  AllowAll




AllowUser tom
DenyALL 



# A basic anonymous configuration, no upload directories.  If you do not
# want anonymous users, simply delete this entire section.
#
#  User                                ftp
#  Group                                ftp
#
#  # We want clients to be able to login with "anonymous" as well as "ftp"
#  UserAlias                        anonymous ftp
#
  # Limit the maximum number of anonymous logins
#  MaxClients                        10

  # We want 'welcome.msg' displayed at login, and '.message' displayed
  # in each newly chdired directory.
#  DisplayLogin                        welcome.msg
#  DisplayChdir                        .message

  # Limit WRITE everywhere in the anonymous chroot
#  
#    DenyAll
#  
#

创建虚拟用户
# /usr/local/proftpd/bin/ftpasswd --passwd --name=tom --uid=99 --gid=99 --home=/opt/tom/ --shell=/sbin/nologin --file=/usr/local/proftpd/etc/passwd
...
Password: 
Re-type password: 

之后会自动生成/usr/local/proftpd/etc/passwd

# chmod -R 777 /opt/tom
要注意,因为虚拟用户并不在本地系统用户中存在,所以要设置虚拟用户可以访问的所有目录都允许其它用户写,这样才能保证虚拟用户正常增删文件。


# cd /usr/local/proftpd/bin/
# ftpquota -create -type=tally -table-path=/usr/local/proftpd/etc/ftpquota.tallytab
# ftpquota -create -type=limit -table-path=/usr/local/proftpd/etc/ftpquota.limittab
# ftpquota --type=limit --table-path=/usr/local/proftpd/etc/ftpquota.limittab --add-record --quota-type=user --name=tom --units=Mb --bytes-upload=50 --bytes-xfer=1

(上面意思是:限定tom用户空间大小为50M,上传文件大小为1M

ftpquota 
具体用法参照 ftpquota --help即可。

这样都设置完了以后
启动proftpd
ftp上去的时候

用命令site quota就可以看当前用户的quota信息

如图所示:


或者



常用全局设置:

DefaultRoot ~ # 限制每个FTP用户在自己的目录下,不可查看上一级目录

AllowRetrieveRestart on #下载时,允许断点续传

AllowStoreRestart on #上传时,允许断点续传

ServerIdent off #屏蔽服务器版本信息

TransferRate STORRETR 速度(Kbytes/s user 使用者 #设定用户传输速率

MaxHostsPerUser 1 #每个帐户最多允许来源ip1对防止ftp帐号还是比较有用的。

MaxClientsPerUser 1 #每个帐户在每个客户端最多可以同时登陆1,可以防止多线程软件下载对服务器的破坏。

MaxClientsPerHost 1 #同一个客户端只能最多1个帐号可以登陆

WtmpLog on #是否要把ftp记录在日志中,如果不想可以设置成off屏蔽掉log日志。

TimeoutIdle 600 #客户端idle时间设置,默认就是600

DisplayLogin welcome.msg #设置ftp登陆欢迎信息文件

RootLogin on #
允许root用户登录,默认是不允许的,安全起见不推荐此选项。


Iptables
防火墙设置:

/etc/init.d/iptables stop
iptables -P INPUT DROP
打开主动模式21端口
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
打开被动模式49152~65534之间的端口
iptables -A INPUT -p tcp --dport 49152:65534 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT

 

 

 

()

 

proftpd都好几年了,费劲地终于明白了那个配置文件地使用,但是一直懒得不想doc it。终于,出来混,迟早是要还的,这两天被迫补作业,顺便便宜了blog:P

linuxftp的用户帐号,默认的是系统帐号,即一台开放了ftp服务的机器,如果要使用它的ftp,就要在主机上创建一个帐号。比如HostA上架了ftp servertombob两个人都希望用,那么要在HostAuseradd tom, useradd bob。这样的副作用是tombob两个帐号还可以登录到系统(本机登录或者ssh)。

这种做法是linuxunix)的传统做法。但是习惯了WindowsServU的独立ftp帐号管理,发现仅仅为了一个ftp服务,要开放系统的登录权限,除去过去的ServU的使用习惯不说,也给系统安全带来隐患。

proftpd支持为ftp服务单独设立帐号管理文件。做法是用源码版中的contrib/ftpasswd生成两个类似linux系统的passwdgroup文件,在proftpd的配置文件proftpd.conf中指定采用文件认证的方式(使用AuthOrder指令)并指定这两个文件(AuthUserFileAuthGroupFile两个指令)。

下面是一个具体的配置的ftp的例子,包括linux系统帐号设计以及详细的proftpd的配置说明。

ftp的目标:
对外开放上传和下载功能;
上传目录仅能上传(对up帐号),不能用来下载;
下载目录仅能下载(对down帐号),不能用此帐号写入或删除等;
上传和下载有分别独立的目录;
有一个(fileman)或多个管理员帐号,可以对上传、下载目录文件进行管理(读、写、删除等);
所有这些帐号都是ftp使用的,这些帐号不能用来登录linux主机。

系统帐号设计
设置ftpman这一系统帐号,经过ftp上传的文件都属于这个系统帐号所有;
设置ftpman这个组,系统内的proftpdftpman以及主机管理员的帐号都加成这个组的成员;
rh9下,useradd ftpman就会有ftpman这个组也被建立)
ftpman
组的文件的组权限都给到写,即同组的可以读写(775664);
ftpman
这个系统帐号在proftpd的帐号管理文件中映射成为多个帐号,包括updown以及其他ftp管理员的管理帐号比如fileman

ftp目录
/home/ftpman
/home/ftpman/download
/home/ftpman/upload

ftp帐号管理文件
ftpasswd
生成的ftpd.passwdftpd.group大致如下:
系统中的帐号ftpman和组ftpman都是502

ftpd.passwd:
up:PASSWD_FOR_UP:502:502::/home/ftpman/upload:/bin/false
down:PASSWD_FOR_DOWN:502:502::/home/ftpman/download:/bin/false
fileman:PASSWD_FOR_FILEMAN:502:502::/home/ftpman:/bin/false

ftpd.group:
ftpman:x:502:up,down,fileman
proftpd
的安装就不说了,./configure, make, make install就好了

以下是proftpd的配置文件,具体每个配置参数的作用参考
http://www.proftpd.org/docs/directives/configuration_full.html
另外说明一点是偶把proftpd安装到了/usr/local/proftpd位置

设置ServerName
ServerName                              "SYVOD FTP"
用作默认
Server
DefaultServer                           on
# Server
类型,设为独立的进程,对vod来说更合适

ServerType                              standalone
监听端口
Port                                    21
上传文件的掩码
Umask                                   0002 0002
# standlone
型服务器的最多派生的子进程个数
MaxInstances                            60
# server
进程的user
User                                    proftpd
# server
进程的
group
Group                                   proftpd
设置chroot的目录,设为帐号的
home-directory
DefaultRoot                             ~
关掉默认显示server版本等信息的功能,增加安全

ServerIdent                             off
设置客户端认证方式,通过文件认证
AuthOrder                               mod_auth_file.c mod_auth_unix.c
指定文件认证的passwd文件
AuthUserFile    /usr/local/proftpd/etc/ftpd.passwd
指定文件认证的group文件
AuthGroupFile   /usr/local/proftpd/etc/ftpd.group
设置每秒接受的链接请求个数,防止DoS攻击
MaxConnectionRate                       4
最大的连接上的client的数量
MaxClients                              60 "Sorry,the maximum number of allowed users (%m) are already connected. "
每个client主机最多的连接数
MaxClientsPerHost                       1 "Sorry, you may not connect more than one time."
每个认证帐号的最多连接个数,即同一帐号(比如up)并存的数量
MaxClientsPerUser                       30 "Sorry,the maximum number of allowed users (%m) for this account are already connected. "
上传文件最大值
MaxStoreFileSize                        2 Gb
关闭反向查询client的用户名的操作(RFC1413),加快连接速度
IdentLookups                            off
关闭DNS的反向查询(同样为了加快响应速度)
UseReverseDNS                           off
自动删除未传完(aborted)的上传文件
DeleteAbortedStores                     on
不显示真实的文件所有者信息
DirFakeUser                             on
不显示真实的文件的组信息
DirFakeGroup                            on
不显示真实的文件的读写操作信息
DirFakeMode                             0600
认证帐号不需要有有效的shell
RequireValidShell                       off
空闲300sec断开连接

TimeoutIdle                             300
登录时显示欢迎信息存放在帐号home-directory/.welcome
DisplayLogin                            .welcome
限制登录权限仅为myftp

        Order                           deny,allow
        AllowGroup                      ftpman

设置/home/ftpman/download的使用权限

        # 
隐藏没有访问权限的文件
        HideNoAccess                on
        # 
限制down帐号的下载速度为300K/sec,对于小于10K的文件不限制
        TransferRate               RETR 300:10240 user down
        # 
限制此目录的写权限仅为管理员帐号
        
                Order                   deny,allow
                AllowUser               fileman
        

设置/home/ftpman/upload的使用权限

        # 
隐藏没有访问权限的文件
        HideNoAccess             on
        # 
限制up帐号的上传速度为500K/sec,对于小于10K的文件不限制
        TransferRate             APPE,STOR 500:10240 user up
        # 
允许断点续传
        AllowStoreRestart               on
        # 
限制upload目录的下载等权限,不要让ftp成为别人的中转站
        
                Order                   deny,allow
                AllowUser               fileman
        

 

关于"TransferRate"

启动时Proftpd,出下列两种错误

 - Fatal: MaxStoreFileSize: incorrect number of parameters on line 98 of '/etc/proftpd.conf'

- Fatal: MaxStoreFileSize: number of bytes must be between 0 and 4294967295

原来,这个值必须小于4294967295.可以用 * 表示无限制,并且不能针对某个用户设定为无限。

 

限制上传只能上传3mb

  MaxStoreFileSize 3 Mb

 

  # Restrict anonymous uploads to 50k, but allow unlimited upload size for

  # everyone else

  MaxStoreFileSize 50 Kb user anonymous

  MaxStoreFileSize *  

MaxStoreFileSize *  user andy  ß不能针对某个用户设定为无限,所以这样设定将出错。

方法/步骤

  1. 1

    首先前往proftpd的官方FTP查找你需要下载的proftpd版本。

    FTP地址:ftp://ftp.proftpd.org/distrib/source/

    http://sourceforge.net/p/proftp/mailman/proftp-announce/

    我这里安装最新版本的:proftpd-1.3.5.tar.gz

    OK,下面开始正式的安装。

    首先进入到root用户

    sudo su

    centos 安装proftpd详细教程
  2. 2

    然后进入到你平常放下载文件的目录(我这里自己创建一个,大家随意),输入

    wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.5.tar.gz

    注:我的是国内的服务器,访问国外网站比较慢,所以放到了新浪上,大家根据实际情况定。国外也可以就是网速慢。

    centos 安装proftpd详细教程
  3. 3

    解压

    tar -zxvf proftpd-1.3.5.tar.gz

  4. 下面需要编译,编译时请注意,你的linux系统必须支持编译,也就是说可以make,不可以的请看下面,可以的跳过此步骤

    输入下面命令

    yum install gcc gcc-c++ autoconf automake

    centos 安装proftpd详细教程
    centos 安装proftpd详细教程
  5. 输入y,然后回车

    centos 安装proftpd详细教程
  6. 下面开始编译阶段

    输入下面命令

    ./configure --prefix=/var/proftpd --sysconfdir=/etc

    make

    make install

  7. 建立FTP组和FTP用户(用户名、用户组),设置密码

    groupadd ftpgroup

    useradd ftpuser -g ftpgroup -d /var/ftp -s /sbin/nologin

    passwd ftpuser

  8. 修改配置文件

    vi /etc/proftpd.conf

    把Group的nogroup修改为nobody

    centos 安装proftpd详细教程
  9. 然后保存、退出(esc->:wq)

    启动服务

    /var/proftpd/sbin/proftpd

  10. 现在其实就已经可以登录了

    centos 安装proftpd详细教程
  11. 但是呢,我们为了方便管理,所以继续进行下面的操作

    下面安装xinetd进行proftpd的管理

    xinetd能加强服务器的安全性,可以有效阻止DDOS攻击(摘自百度百科)

    rpm -aq | grep xinetd

    如果没有,那么就进行安装

    yum -y install xinetd

    进入到proftpd的目录,执行下面命令

    cp contrib/dist/rpm/xinetd /etc/xinetd.d/proftpd

  12. 然后编辑复制后的proftpd

    vi /etc/xinetd.d/proftpd

    修改server = /var/proftpd/sbin/in.proftpd就是把sbin的目录指定到安装目录

    添加server_args = -c /etc/proftpd.conf

    把下面的log两行注释掉

    disable后的yes 改成no

    centos 安装proftpd详细教程
  13. 编辑原来的那个配置文件进行配置

    AllowRetrieveRestarton on #下载续传

    AllowStoreRestarton on #上传续传

    maxInstances 30 #最大线程数

    MaxLoginAttempts 3 #最大尝试登陆链接次数

    MaxClientsPerHost 2 #每个用户线程

    MaxClients 20 #最大用户数

    AllowOverwite on #上传时允许覆盖已有文件

    关闭匿名登陆

    把<Anonymous ~ftp>到</Anounymous>全注释掉

    保存退出就可以登录了

    测试-可以正常上传下载

    centos 安装proftpd详细教程

0 0
原创粉丝点击