描述

Linux系中,有不少实现FTP服器的件套件。但是,大部分都是基于Linux系。。一方面,没必要,ftp用能上文件即可;另一方面,不安全,ftp用一旦采用弱密会大大降低系安全性。

根据我的需求,我的FTP服器需要足以下特点:

  • 匿名登录

  • FTP的Passive传输模式

  • UTF-8编码,对客户端推送语言编码

  • 虚拟用户,用户磁盘空间限额

  • FTPS安全传输

根据以上需求,我采用了proftpd件。它不但能雅的完成上述功能,能有更多的大功能等待我们发现

proftpd服器完全使用编译的方式安装件,使用一个配置文件来配置服。proftpd支持使用mysql数据信息。然而,在足我需要的情况下,了保持系统简洁性,我采用文件存信息。

proftpd件短小精悍,官方鸟语文档丰富,可性非常好。

操作步骤

件包

搭建系统时,官方最新的定版本是1.3.xx,从下面地址下源代包:
ftp://ftp.proftpd.org/distrib/source/
后,解

tar xvfproftpd-1.3.xx.tar.gz

安装

里采用编译的形式安装

./configure--with-modules=mod_quotatab:mod_quotatab_file:mod_ban:mod_tls:\\

mod_rewrite:mod_ifsession--enable-ctrls --enable-nls

--with-modules//编译时包括选项

   mod_quotatab  //启用 quota用

   mod_quotatab_file  //采用基于文件的quotatab

   mod_ban //启动动态黑名,防止密,DDOS攻

mod_tls  //启用tls,实现功能FTPS

   mod_rewrite  //启用重写,可实现内容自改名

   mod_ifsession  //启用会判断,可判断会IP规则

--enable-ctrls  //启用访问控制,可置ACL

--enable-nls  //启用言探,解决中文乱

make

//默安装到/usr/local/ ,需要root

makeinstall

编译安装完成后,我看一下,安装后的文件分布:

[root@ftp ~]# cd /usr/local

[root@ftp local]# ls -R

./bin:

ftpasswd  ftpcount ftpdctl  ftpmail  ftpquota ftptop  ftpwho  prxs

./etc:

conf.d    proftpd.conf    (部分出)

./etc/conf.d:

ban.tab     ftpd.group   ftpquota.limittab  mod_ban.conf    mod_tls.conf      proftpd-key.pem

cacert.pem  ftpd.passwd ftpquota.tallytab mod_quota.conf proftpd-cert.pem whitelist

配置主配置文件

接下来,解配置文件。下面的配置文件只是一个例,并不通用。使用者根据自身情况酌情修改,
始配置proftpd配置文件之前,确保已正确配置了,proftpd需要的文件,目,文件池等必要条件。

# This isa basic ProFTPD configuration file . rename it to

#'proftpd.conf' for actual use.  Itestablishes a single server

# and asingle anonymous login.  It assumes thatyou have a user/group

#"nobody" and "ftp" for normal operation and anon.

#--------------------------------------------------------------------------

# mainconfigure for

#                          ftp.xiyang-liu.com

#                                                 by xiyang-liu

#--------------------------------------------------------------------------

##配置管理员邮箱地址,实际没什用,服器相当安全,至今没发过邮

ServerAdmin                        xiyangliu1987@gmail.com

##配置服器名,明在置了服装后,不提示服器名。

ServerName"Xiyang-liu.comFTP Server"

## 配置服装,里我们伪装proftpd成Server-U服器。

ServerIdent   on    "Serv-UFTP Server v6.4 for WinSock ready..."

##置服器运行模式,独立服,或者被

ServerType                         standalone

#ServerType                        inetd

##

DefaultServer                      on

##置服程运行使用的用

User                               nobody

##置服程运行使用的

Group                             nobody

##关闭IPv6支持

UseIPv6                           off

##置服器接受求的端口

Port21

##置被模式使用的端口范

PassivePorts6000065535

##置用文件的限掩

Umask022

##置用被chroot定到的各自的Home目

DefaultRoot~

##关闭欢迎信息

DeferWelcome                       off

##如果迎信息,指定示的文件

DisplayLogin                       welcome.msg

##指定切文件夹时示的迎信息

DisplayChdir.message

#

#

##登时时间,从出现输入用名的提示符到断开连接的时间

TimeoutLogin1200

##空,无操作超

TimeoutIdle600

##不传输,数据接建立,但是没有数据传输

TimeoutNoTransfer900

##延,从数据接建立到有数据传输最大延迟时间

TimeoutStalled3600

##不使用DNS反查询

UseReverseDNS                     off

##上传时,允覆盖已有的文件

AllowOverwrite                    yes

##不使用RFC 1413协议信息,加快FTP访问速度

IdentLookups                       off

## 启delay引擎,更安全。

##        么这么说呢?Proftpd在接受用户请求的候,会查询列表,以确

##定是否有个用。如果有,查询黑名列表,访问控制列表。查询都需要

##时间。所以,不同情况(服器存在账户和不存在账户)下,从入用名到出

##提示符之时间会有一个时间时间很短,凭人无法感,但是算机

##可以识别,通过对这时间行分析,可以探那些Proftpd上存在哪些用,不

##存在哪些用

##   启delay引擎,会均衡时间段。无论输入的用存不存在,从用入到

##出密提示符的时间间隔都是一的!

DelayEngine                        on

##指定日志格式

LogFormatdefault"%h%l %u %t \\"%r\\" %s %b"

LogFormat                          auth    "%v [%P] %h %t \\"%r\\" %s"

LogFormat                          write   "%h %l %u %t \\"%r\\" %s%b"

TransferLog/usr/local/var/proftpd/log/transfer.log

ExtendedLog/usr/local/var/proftpd/log/access.log WRITE,READ write

ExtendedLog/usr/local/var/proftpd/log/auth.log AUTHauth

#

#

##如果存在lang模

<<>IfModule mod_lang.c>

##启lang引擎

LangEngine on  

##默认语言英文

LangDefaulten_US  

##使用制utf8编码

UseEncoding on

##制定言模位置

LangPath/usr/local/share/locale/

<<>/IfModule>

#

##如果存在facts模

.c>

   ##关闭FactsAdvertise,提高兼容性。

   FactsAdvertise off

<IfModule>

#

##限制特定操作

<<>LimitSITE_CHMOD,SITE_CHGRP>

##阻止所有用使用更改限 更改命令

DenyAll

<<>/Limit>

#

##置虚

##指定虚的passwd和group文件,格式和系文件一

AuthUserFile                       /usr/local/etc/conf.d/ftpd.passwd

AuthGroupFile/usr/local/etc/conf.d/ftpd.group

#里->里 之明。

##建虚候制定home目应该是下面目的子目

# homedir/ftp_pool/home/

##虚户统一使用nobody的UID和GID

###不使用不同的UID和GID?那不是更安全

###答:也可以使用不同的UID和GID,但是那事。使用不同UID和GID。首先,

##要判断和系UID和GID是不是有冲突;其次,要建用需要找一个没用

##UID和GID;再次,得建的用户赋限;最后,灾太麻

# useridnobody

# groupidnobody

#里->里 之明。

#

#

#置匿名用户资

<<>Anonymous/ftp_pool/pub/>

##匿名用使用的用

User             ftp

Group            ftp

##用户别

UserAlias                 anonymous ftp

##不要求合法的shell

RequireValidShellno

MaxClients50

##限制匿名用的位置

<<>Limit LOGIN>

##限制先允 再阻止

OrderAllow,Deny

##允内网用匿名目

Allow10.0.0.0/8

Allow172.16.0.0/12

Allow192.168.0.0/16

##阻止所有其他用

Deny ALL

<<>/Limit>

#

##配置upload目录权

    #限制写

        Order Allow,Deny

        ##只允部上

        Allow 10.1.5.0/24

##阻止其他所有用

Deny ALL

<<>/Limit>

<Directory>

##配置匿名用户权

<<>Limit WRITE>

##阻止所用的写

DenyAll组织所有

<<>/Limit>

<Anonymous>