ProFTPD
简介
ProFTPD是一个安全、配置简单的FTP服务器软件,该软件采用与Apache相似的配置格式,比较容易配置与管理。在该项目开发之前,
最流行的FTP软件是wu-ftp,wu-ftp具有很高的性能,但缺乏Win32FTP服务器的一些特色功能,而且wu-ftp的安全问题一直存在。
ProFTPD借鉴了wu-ftp的优点,并且增加了很多wu-ftp所不具备的功能
安装
wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.4c.tar.gz
tar -zxvf proftpd-1.3.4c.tar.gz -C /usr/src
cd /usr/src/proftpd-1.3.4c/
./configure --prefix=/usr/local/proftpd --sysconfdir=/etc/ --enable-nls --enable-openssl --enable-shadow
make && make install

安装完成后,ProFTPD主程序目录位于/usr/local/proftpd目录下,服务器主配置文件为/etc/proftpd.conf。下面通过修改PATH变量增加
proftpd命令的搜索路径,并为proftpd创建启动账户
PATH=$PATH:/usr/local/proftpd/bin
useradd -M -s /sbin/nologin proftp
配置文件解析
ProFTPD主配置文件分三部分:全局设置、目录设置和匿名访问设置。全局设置为全局生效的参数,参数与值直接使用空格分离。目录设置
可以指定共享路径以及相关权限,目录设置使用<Directory "路径">开头,以</Directory>结尾,使用Limit设置路径权限。最后如果需要
开启匿名账户访问,则使用<anonymous "路径"></anonymous>设置匿名访问权限及访问策略


ProFTPD权限设置
ProFTPD可以通过在目录属性中添加<Limit>的方式设置访问权限,访问权限设置可以根据自己的实际需求有选择的添加,下表列出了权限
指令以及对应的功能说明

虚拟用户应用案例
ABC网站设计公司有商务部、页面设计部、开发部、运维部四个部门,各部门用户访问FTP后可以看到所有的目录,但只可以访问本部门的目录,且需要开启
FTP日志功能,FTP认证采用基于文件认证的方式,共享目录为/var/ftp
1、创建启动账户及共享目录
useradd -M -s /sbin/nologin proftp
mkdir -p /var/proftp/{develop,ops,sales,design}
chmod 777 /var/proftpd/{deelop,ops,sales,design}
2、修改配置文件
部署服务最主要的步骤就是修改配置文件,下面的输出是proftpd主配置文件/etc/proftpd.conf被修改后的内容,部分参数在初始化配置文件中不存在,需要手动输入






3、创建虚拟账户
修改完成配置文件,接下来就需要创建访问FTP所需要的账户和密码,proftpd提供了一个ftppasswd命令,使用该命令就可以创建我们
需要的账户信息。
该命令的描述和用法如下
描述:创建用户文件、组文件,默认创建的用户文件为 ftp.passwd
选项:--passwd 创建密码文件,即 AuthUserFile指定的文件
--group 创建组文件
--name 指定创建的用户名
--uid 指定用户虚拟UID
--gid 指定虚拟GID
--home 指定用户家目录
--shell 指定用户shell
--file 指定创建的文件名,默认为ftpd.passwd
cd /usr/local/proftpd
ftppasswd --passwd --name=tomcat --uid=1001 --gid=1001 --home=/home/nohome --shell=/bin/false
ftppasswd --passwd --name=jacob --uid=1002 --gid=1002 --home=/home/nohome --shell=/bin/false
ftppasswd --passwd --name=jack --uid=1003 --gid=1003 --home=/home/nohome --shell=/bin/false
ftppasswd --passwd --name=sales1 --uid=1004 --gid=1004 --home=/home/nohome --shell=/bin/false
ftppasswd --passwd --name=design1 --uid=1005 --gid=1005 --home=/home/nohome --shell=/bin/false
4、启动proftpd服务
/usr/local/proftpd/sbin/proftpd
常见问题分析
1、如何对匿名账户隐藏一个目录
使用HideGroup或HideUser指令可以隐藏目录。
<Anonymous ~ftp>
...
<Directory test>
HideUser user1
</Directory>
2、如何限制带宽
在新的ProFTPD1.28版本后,软件加入了TransferRate指令,该指令支持对每个连接限制带宽,限制对上传与下载都有效
3、如何限制上传和下载文件的最大容量
proftpd1.2.7rc1版本后提供了 MaxRetrieveFileSize和 MaxStoreFileSize,用来控制上传和下载文件的最大容量
4、如何隐藏proftpd软件的版本信息,防止针对版本漏洞的攻击
在主配置文件中添加ServerIdent off指令,即可对用户隐藏软件的版本信息
5、如何确保proftpd可以开机启动
源码安装的proftpd软件并不提供开机启动脚本,需要我们自己编写。将proftpd的启动脚本存放在/etc/init.d目录下,使用
chkconfig --add proftpd将服务加入开机启动项,最后通过命令chkconfig proftpd on将该服务设置为2345级别开机启动
1 #!/bin/bash 2 3 #Startup script for proftpd 4 #chkconfig:- 89 77 5 #Description:Proftpd is a secure and configurable FTP Server. 6 #Program:/usr/local/proftpd/sbin/proftpd 7 #Configure file:/etc/proftpd.conf 8 9 #Synopsis: 10 # proftpd --help {start|stop|restart|status} 11 12 #Define variable 13 Proftpd=/usr/local/proftpd/sbin/proftpd 14 Pidfile=/usr/local/proftpd/var/proftpd.pid 15 Program=$(basename $0) 16 Hint_color="echo -en \\033[1;32m" 17 Orig_color="echo -e \\033[0m" 18 Tab="\t\t\t\t\t\t\t\t" 19 #Functions 20 21 useage(){ 22 echo "Usage:$Program [--help] {start|stop|restart|status}" 23 } 24 25 start(){ 26 if [ -e $Pidfile ];then 27 echo "Proftpd alread running..." 28 else 29 echo -en "Starting Proftpd:${Tab}[ " 30 /usr/local/proftpd/sbin/proftpd 31 ${Hint_color}Ok;${Orig_color}" ]" 32 fi 33 } 34 35 stop(){ 36 if [ -e $Pidfile ];then 37 echo -en "Stopping Proftpd:${Tab}[ " 38 kill -TERM $(cat ${Pidfile}) 39 ${Hint_color}OK;${Orig_color}" ]" 40 else 41 echo "Proftpd already stopped." 42 fi 43 } 44 45 status(){ 46 if [ -e $Pidfile ];then 47 echo "Proftpd ($(cat $Pidfile)) is running..." 48 else 49 echo "Proftpd is stopped." 50 fi 51 } 52 53 if [ $# -gt 0 ];then 54 case $1 in 55 start) 56 start 57 ;; 58 stop) 59 stop 60 ;; 61 restart) 62 stop 63 sleep 0.2 64 start 65 ;; 66 status) 67 status 68 ;; 69 --help|*) 70 useage 71 esac 72 else 73 useage 74 fi

浙公网安备 33010602011771号