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 。ftpd.org/">http://www.ProFTPD.org 。
一、基本ProFTPD服务器配置过程:
1.如果安装过wuftpd服务器首先卸载。ProFTPD最新版本是1.3.0,官方网址:ftpd.org/">http://www.ProFTPD.org 。下载链结:ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.0.tar.bz2">ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.0.tar.bz2
[root@ftpd /]# bunzip proftpd-1.3.0.tar.bz2 [root@ftpd /]# cp proftpd-1.3.0.tar /usr/src/ [root@ftpd /]# cd /usr/src [root@ftpd src]# tar xvf proftpd-1.3.0.tar [root@ftpd src]# cd proftpd-1.3.0 [root@pftd 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 <Directory /*> AllowOverwrite on </Directory> <Anonymous ~ftp> User ftp Group ftp UserAlias anonymous ftp MaxClients 10 DisplayLogin welcome.msg DisplayFirstChdir .message <Limit WRITE> DenyAll </Limit> </Anonymous> 这里笔者去掉了所有注视。熟悉Apache服务器的配置方法的读者很很容易理解。二者有许多相似之处。 单线指令,如ServerName and ServerType。 多线容器指令。如<Directory> and <Limit>。 配置服务器后应当知道配置文件中指令的含义。可以参考官方配置指南(下载链接:ftpd.org/docs/directives/configuration.pdf">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服务器的用户组名称。 <Directory /*> 登入时想进入的目录位置 (/*是通配符合),AllowOverwrite 表示是否允许客户端覆盖文件,这样是不安全的应当选择off。 </Anonymous> 是否建立匿名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 <Directory /*> AllowOverwrite off </Directory>
使用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 测试连接情况:从客户端测试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目录容许用户上传文件): <Anonymous ~ftp> User ftp Group ftp RequireValidShell off UserAlias anonymous ftp MaxClients 40 <Directory *> <Limit WRITE> DenyAll </Limit> </Directory> <Directory incoming> <Limit WRITE> AllowAll </Limit> <Limit READ> DenyAll </Limit> </Directory> </Anonymous>
根据以上内容建立的ProFTPD服务器会为自动连接到匿名ProFTPD服务器的用户创建一个chroot限制,用户的主目录为站点的根目录。下面解释主要配置指令的作用: User 和 Group:这两个指令确保User ftp和Group ftp拥有所有匿名会话。 RequireValidShell:由于在/etc/passwd中没有用户FTP的有效列表,所以该指令说明ProFTPD允许User ftp的匿名会话。 UserAlias:该指令把anonymous赋予FTP账号,以便所有用户可以使用ftp和anonymous作为用户名登录匿名FTP服务器。 MaxClients:这里限制匿名连接数目是40,你可以根据系统负载设定连接数目。 <Directory>容器:这些容器给定目录的各种限制: 第一个目录容器对每个用户和每个目录禁止写权限(包括上传、删除和修改)。 第二个目录容器在incoming子目录中给每个用户写权限。 最后一个Limit指令确保在incoming子目录中上传文件的用户不能查看和恢复目录中的文件。
|