Proftpd 配置指南

  2010-05-26 18:03 星期三
  proftpd全称:Professional FTP daemon是针对Wu-FTP的弱项而开发的,除了改进的安全性,还具备许多Wu-FTP没有的特点,能以Stand-alone、xinetd模式运行等。ProFTP已经成为继Wu-FTP之后最为流行的FTP服务器软件,越来越多的站点选用它构筑安全高效的FTP站点, ProFTP配置方便,并有MySQL和Quota模块可供选择,利用它们的完美结合可以实现非系统账号的管理和用户磁盘的限制。ProFTPD 的特点:
1. 单配置文件,其设置指示和apache的有类似之处,非常容易配置。 
2. 基于单个目录的.ftpaccess设置文件,类似与apache的.htaccess文件。 
3. 易于设置的多虚拟服务器和匿名ftp服务。 
4. 可以设置为从xinetd启动,或者是独立ftp服务器两种运行方式。 
5. 匿名ftp的根目录不需要任何特殊的目录结构,或系统程序或其他系统文件。 
6. ncfptd不执行任何外部程序,从而减少了安全隐患。 
7. 可以根据文件属主情况或unix风格的访问控制来隐藏文件或目录。 
8. 以非root身份运行,从而减少了安全隐患。 
9. 强大的log功能,支持utmp/wtmp及wu-ftpd格式的记录标准,并支持扩展功能的记录。 
10. 支持Shadow密码,包括支持密码过期机制。 
11. 遵从GPL版权,开放源代码。 
12. 可设定多个虚拟FTP server,而匿名FTP服务更是十分容易。
13. 最新版本1.2.10 。http://www.ProFTPD.org 。
一、基本ProFTPD服务器配置过程:
1.如果安装过wuftpd服务器首先卸载。ProFTPD最新版本是1.3.0,官方网址:http://www.ProFTPD.org 。下载链结:ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.0.tar.bz2
# bunzip proftpd-1.3.0.tar.bz2 
# cp proftpd-1.3.0.tar /usr/src/ 
# cd /usr/src 
# tar xvf proftpd-1.3.0.tar 
# cd proftpd-1.3.0 
# ./configure ; make ; make install   
到现在为止,你已经完成了proftpd的编译和安装。并且在/usr/local/etc/目录下有一个默认的proftpd配置文件proftpd.conf。
2.理解配置文件
下面是默认安装后的配置文件:
ServerName “ProFTPD Default Installation” 
ServerType standalone 
DefaultServer on 
ServerIdent off
Port 21 
Umask 022 
MaxInstances 30 
User nobody 
Group nogroup 
 
AllowOverwrite on 
 
 
User ftp 
Group ftp 
UserAlias anonymous ftp 
MaxClients 10 
DisplayLogin welcome.msg 
DisplayFirstChdir .message 
 
DenyAll 
 

这里笔者去掉了所有注视。熟悉Apache服务器的配置方法的读者很很容易理解。二者有许多相似之处。
单线指令,如ServerName and ServerType。
多线容器指令。如 and  。
配置服务器后应当知道配置文件中指令的含义。可以参考官方配置指南(下载链接:http://www.proftpd.org/docs/directives/configuration.pdf )。下面主要介绍安全相关的部分。
ServerName :服务器名称。在登入时所显示的服务器名称。确省是:“ProFTPD Default Installation”可以根据个人情况修改。
ServerType :服务器工作类型。ProFTPD能以Stand-alone、xinetd两种模式运行。
DefaultServer:是否启用虚拟FTP,on为支持,off是关闭。
ServerIdent :是否显示FTP软件名称,on为显示,off是关闭。
Port:运行端口。设定于登入时,主机是监听那一个端口。
Umask:指定确省配置文件的权限一般是022。
MaxInstances:最大连接请求。设定服务器于同一时间内可以处理的程序有几笔,若服务器运行类型设为standalone的话,可设低一点,以避免***的DoS***。
User:指明运行FTP服务器的用户名称。
Group: 指明运行FTP服务器的用户组名称。
 登入时想进入的目录位置 (/*是通配符合),AllowOverwrite 表示是否允许客户端覆盖文件,这样是不安全的应当选择off。
是否建立匿名FTP站点。除非需要请删除这个选型。
DisplayLogin welcome.msg 设置ftp登陆欢迎信息文件。

3.配置实例

建立一个单机(standalone)模式的FTP服务器:
建立配置文件如下:
ServerName “FTP Server” 
ServerType standalone 
DefaultServer on 
Port 21 
Umask 027 
MaxInstances 30 
User nobody 
Group nogroup 
 
AllowOverwrite off 

使用su命令切换为root用户。
在/etc/rc.d/init.d目录中安装启动脚本:cp ./contrib/dist/rpm/proftpd.init.d /etc/rc.d 
/init.d/proftpd
添加一个新组:groupadd nogroup。
建立符号链结让FTP服务器随启动自动启动:ln -/etc/rc.d/init.d/proftpd /etc/rc.d/rc3.d/S95proftpd 
ln -s /usr/local/sbin/proftpd  /usr/sbin/proftpd

测试连接情况:从客户端测试proftpd是否正常运行: 

C:WINDOWS>ftp 192.168.2.33 
Connected to 192.168.2.33. 
220 ProFTPD 1.2.0rc3 Server (ProFTPD Default Installation)[ftpd.test.com.cn] 
User (192.168.2.33:(none)): ideal 
Password: 
230 User ideal logged in. 
ftp>
ProFTPD的控制命令:/etc/rc.d/init.d/proftpd stop 关闭服务器
/etc/rc.d/init.d/proftpd start 启动服务器
/etc/rc.d/init.d/ proftpd reload 重新加载修改后的配置文件etc/proftpd.conf并且启动服务器。
4.建立一个安全的匿名ProFTPD站点

如果人们只需要从FTP服务器等到一些小文件(几兆),可以使用Apache web服务器代替匿名FTP站点。如果要通过一个匿名账号频繁上传、下载文件,就要建立一个安全的ProFTPD服务器。下面是配置文件/etc/proftpd.conf内容(其中incoming目录容许用户上传文件):
 
User ftp 
Group ftp 
RequireValidShell off 
UserAlias anonymous ftp 
MaxClients 40 
 
 
DenyAll 
 
 
 
 
AllowAll 
 
 
DenyAll 
 
 


根据以上内容建立的ProFTPD服务器会为自动连接到匿名ProFTPD服务器的用户创建一个chroot限制,用户的主目录为站点的根目录。下面解释主要配置指令的作用:
User 和 Group:这两个指令确保User ftp和Group ftp拥有所有匿名会话。
RequireValidShell:由于在/etc/passwd中没有用户FTP的有效列表,所以该指令说明ProFTPD允许User ftp的匿名会话。
UserAlias:该指令把anonymous赋予FTP账号,以便所有用户可以使用ftp和anonymous作为用户名登录匿名FTP服务器。
MaxClients:这里限制匿名连接数目是40,你可以根据系统负载设定连接数目。
容器:这些容器给定目录的各种限制:
第一个目录容器对每个用户和每个目录禁止写权限(包括上传、删除和修改)。
第二个目录容器在incoming子目录中给每个用户写权限。
最后一个Limit指令确保在incoming子目录中上传文件的用户不能查看和恢复目录中的文件。
5. 设定虚拟主机 

可以通过指令:VirtualHost来实现虚拟主机,一个最简单的例子: 
<VirtualHost 192.168.2.35> 
ServerName "virtual FTP server" 
</VirtualHost> 
若你仅仅希望通过匿名访问某个虚拟主机,则使用如下的指令: 

 
User student 
Group ftp 
MaxClientsPerHost 1 "Sorry,This ftp only use one's IP connect!!" 
AnonRequirePassword on 
RateReadBPS 512000 “限制带宽最大速度” 
RateReadFreeBytes 512000 
RateReadHardBPS on 
 
Order allow,deny 
Allow from 192.16.*.* “限制IP登陆范围” 
Deny from all 
 
 “设置/home/student用户可以读” 
AllowAll 
 
 “不能删除 文件”
DenyAll 
 
 “不可更名文件”
DenyAll 
 
 “不可建立文件目录”
DenyAll 
 

Limit参数说明:
CWD :Change Working Directory,变换目录之意; 
MKD :MaKe Directory,可建立目录与否; 
RNFR :ReName FRom,可更改档名与否; 
DELE :DELEt,可删除文件语法; 
RMD :ReMove Directory,可移除目录与否; 
RETR :RETRieve,下载之意由服务器传送数据到客户端; 
READ :可读取与否 ;
WRITE:可写入与否 ;
STOR :STORe,上传之意,由客户端传送数据到服务器; 
ALL :允许全部的动作;

6.在图形界面下控制ProFTPD 

GProftpd一个GNOME桌面环境下的ProFTPD标准克隆,基本上能实现命令行模下的所有的功能。使用之后,在看配置文件,顿有拔云见山之感 。因为ProFTPD可设定的功能太多了,初学者不太可能完全背下所有功能及相关的设定。也因为如此,许多人退而选择使用ProFTPD的预设设定值。但这么一来,ProFTPD的强大功能被弃之不用,相当可惜。如果有一套软件,可以辅助管理员进行ProFTPD的设定动作,相信这些问题便可以迎刃而解了。GProFTPD便是一套以GTK+图形界面下发展的帮助管理员在GNOME环境下进行ProFTPD设定工作ProFTPD前端程序。GProFTPD并不只是一个设定工作的辅助程序而已。通过GProFTPD,管理员可以进行FTP账号管理、文件传输动作的实时监控,还可以直接查看系统登入成功及失败的次数,提前了解是否有人正在对系统进行***动作。当然也可以进行ProFTPD服务器的服务启动、停止动作,也可以直接修改设定文件,或是决定系统重新启动的时间。几乎所有与ProFTPD相关的功能,都能使用GProFTPD直接进行,不必再担心看不懂配置的内容了。

(1)下载安装:
#Wget http://mange.dynalias.org/linux/gproftpd/OLD/gproftpd-8.2.4.tar.gz
(2)系统要求: 
硬件: 中央处理器:兼容 Intel X86处理器PentiumII 400 以上 ,64 兆(推荐128兆)内存,150兆以上硬盘空间 ,显示内存4兆。软件: 内核版本基于2.4或以上 ,GNOME 1.2以上,桌面分辨率 至少为640×480 ,桌面颜色至少6万5千色(16位元)。

(3)安装前的准备工作: 
安装过程中需要编译所以需要GCC(2.96以上)和Qt(2.0以上)、GTK支持,所以要使用RPM来确认: rpm -qa | grep gcc;rpm -qa | grep qt;rpm -qa | grep gtk

(4)命令行下安装软件
gunzip gproftpd-8.2.4.tar.gz
tar vxf gproftpd-8.2.4.tar
cd gproftpd-8.2.4
./configure;make;make install
(5)运行软件:
打开一个终端运行命令:“/usr/sbin/gproftpd”服务器(Sever)主工作界面如图1。 

图1 gproftpd 主工作界面
 
 
在图1主工作界面 我们可以设置FTP服务器IP地址,查看FTP服务器运行情况等信息。下面看看安全(Secunity)界面见图2。
 

图2 gproftpd 安全界面

这里我们可以看到FTP的登录用户情况。在用户界面(users)可以设置用户登录密码、登录目录以及最大并发连接等见图3 。
 

图3 用户设置界面

接着可以查看磁盘(disk)界面。这里可以监控磁盘使用情况,避免恶意用户用垃圾数据塞满你的硬盘。见图4。
 

图4 磁盘使用情况

到此为止我们已经基本建立一个ProFTPD服务器。
 
 
 
 
 
 
 
 
 
 
 
 
 
================================
 

proftpd配置  

2009-03-17 15:51:10|  分类: linux|字号 订阅

 
 
一、安装proftpd软件   http://www.proftpd.org下载下来的是一个压缩包 
                     
tar zxvf proftpd-1.3.1.tar.gz          进行解压
cd  proftpd-1.3.1           进入文件夹

./configure --prefix=/etc/proftpd      把proftpd-1.3.1安装到/etc/proftpd文件夹下
make
make install

make clean

二、新建用户
groupadd proftp 创建一个proftp组

useradd -g proftp -d /var/ftp/yatan -s /sbin/nologin yatan 这句话我的理解是(新建yatan用户,并把它加入proftp组,把yatan的目录建在/var/ftp目录下,并指定它的shell为nologin,这个nologin并不能让yatan用户进入linux系统

passwd yatan 设置yatan的密码

好了,用户设置好了 : )

三、在开始配置proftpd.conf文件之前进行以下操作:
1、因为我用的是红帽子as4.0的,所以先要把自带的vsftpd给停掉
service vsftpd stop 或者直接 rpm –e vsftpd

2、设置一个proftpd的启动服务
编辑一个启动脚本,
cd     proftpd-1.3.1 进入proftpd-1.3.1的解压文件夹中
cp contrib/dist/rpm/proftpd.init.d /etc/rc.d/init.d/proftpd 拷贝proftpd.init.d到/etc/rc.d/init.d文件夹中,并改名为proftpd
vi /etc/rc.d/init.d/proftpd 编辑这个文件,找到文件中有一行是PATH行,将它改成你所安装proftpd所在的目录。
PATH="$PATH:/etc/proftpd/sbin:/etc/proftpd/bin" 我是安装在/etc/proftpd文件下,保存退出
3、把/etc/rc.d/init.d/proftpd设成可执行文件
chmod +x /etc/rc.d/init.d/proftpd

 # 然后运行命令:
[root@localhost /]# chkconfig --level 35 proftpd on

 # 则下次系统启动以后,proftpd将自动启动。

chkonfig –add proftpd
这样就可以用service proftpd start和service proftpd stop 和service proftpd restart来分别执行开启服务,停止服务与重启服务

差点忘了要改配置文件了,嘻
vi /etc/proftpd/etc/proftpd.conf
在全局配置里把group的值为nogroup改成nobody
好了,配置前的工作做好了

四、现在正式来配置proftpd.conf里的权限设置,
vi /etc/proftpd/etc/proftpd.conf  这是我的配置文件:
# This is a basic ProFTPD configuration file (rename it to 
# 'proftpd.conf' for actual use.   It establishes a single server
# and a single anonymous login.   It assumes that you have a user/group
# "nobody" and "ftp" for normal operation and anon.

ServerName                         "ProFTPD Default Installation"
ServerType                         standalone
DefaultServer                         on

# Port 21 is the standard FTP port.
Port                                 21

# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
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

# Set the user and group under which the server will run.
User                                   nobody
Group                                 nobody (这边就是我在上一步所讲的设置成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

# Bar use of SITE CHMOD by default
<Limit SITE_CHMOD>;
   DenyAll
</Limit>;

# A basic anonymous configuration, no upload directories.   If you do not
# want anonymous users, simply delete this entire <Anonymous>; section.
<Anonymous ~ftp>
   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
   DisplayFirstChdir                 .message

   # Limit WRITE everywhere in the anonymous chroot
   <Limit WRITE>
     DenyAll
   </Limit>
</Anonymous>

<Directory />
AllowOverwrite on
AllowStoreRestart on
#AllowForeignAddress on
<Limit All>
AllowAll
</Limit>
</Directory>

<Directory /var/ftp/yatan>
<Limit DELE RNFR RNTO RMD XRMD>
DenyUser yatan
</Limit>
</Directory> (这几句是对yatan用户的权限限制,只允许它对/var/ftp/yatan有写的权限,不允许它有DELE RNFR RNTO RMD XRMD的权限)

存盘退出
service proftpd restart

五、修改一下/var/ftp目录的权限
chmod –R 775 /var/ftp 
这样tc对/var/ftp/skate的文件具有写,删,改,执行的所有权限。