| 操作系统 办公 实用知识 设计 开发 WEB开发 移动开发 数据库 软件工程 网管 安全 管理 信息化 答疑 渠道 |
ProFtpd快速指南ProFTPD是一个Unix平台上或是类Unix平台上(如Linux, FreeBSD等)的FTP服务器程序,它是在自由软件基金会的版权声明(GPL)下开发、发布的免费软件,也就是说任何人只要遵守GPL版权声明,都可以随意修改源始码。 ProFTPD设计目标是实现一个安全且易于设定的FTP Server。目前Unix或类Unix平台上 FTP Server十分有限,最常使用的恐怕就是wu-ftpd了。虽然wu-ftpd有着极佳的效能同时也是一套很好的软件,然而它却欠缺了许多Win32平台上FTP Server的一些特色,同时wu-ftpd过去也有不少的安全漏洞陆续被发现。ProFTPD的原创者本身就曾经花非常多的时间寻找wu-ftpd 的漏洞加以改进并且增加许多功能。然而十分不幸的是,他很快地发现显然wu-ftpd需要全部重新的改写才能补足欠缺的设定能力以及缺乏的一些功能。ProFTPD不是从其它FTP Server的既有原始码修改而产生的,相反的,它是完全独立而完整、重新改写的FTP Server。 ProFTPD的主要包括如下特点: 1. 单一主设置文件,包含许多指令以及其支配的组,非常象Apache Web Server。 2. 每个目录都可以定义一个".ftpaccess"设置文件,就如同Apache的".htaccess"文件一样可以设定该目录的存取权限。 3. 可设定多个虚拟FTP server,而匿名FTP服务更是十分容易。 4. 可根据系统的负载(load)选择以单独运作(stand-alone)方式或是由inetd启动。 5. 匿名FTP的根目录不需要特定的目录结构、系统二进制执行文件或其它系统文件。 6. ProFTPD不执行任何外部程序以免造成安全漏洞。 7. 具有隐藏目录或隐藏文件,源自于Unix形式的档案权限,或是user/group类型的档案权限设定。 8. 能够以一般使用者在单独运作(stand-alone)模式下执行,以减少某些藉由攻击方式取得root权的可能性。注:此功能与Unix的操作系统有关。 9. 支持系统记录以及utmp/wtmp。 10. 记录的方式与wu-ftpd的标准完全兼容,也支持记录内容的延伸格式。 11. 支持Shadow! nbsp;password,包括了帐号使用期限设定的功能。 Proftpd提供了多种安装格式,包括源代码方式、RPM方式、deb方式(debian软件包)等。本文主要讨论源代码方式的安装。 从ftp.proftpd.net下载最新版本的proftpd-1.2.0rc3到Linux服务器上。然后按照如下步骤 进行处理: [root@ftpd /]# cp proftpd-1.2.0rc3.tar.gz /usr/src/ 到现在为止,你已经完成了proftpd的编译和安装。并且在/usr/local/etc/目录下有一个默 认的proftpd配置文件proftpd.conf。 二、 启动测试 对于笔者的试验系统RedHat6.2来说,需要将该配置文件中: 修改为: 因为redhat系统中nobody用户属于nobody组,而不是nogroup组。 若需要将proftpd设置为系统启动时自动启动则通过如下命令拷贝启动文件: [root@ftpd proftpd-1.2.0rc3]# cp ./contrib/dist/rpm/proftpd.init.d /etc/rc.d 然后修改该脚本的可执行属性: [root@ftpd /]# chmod +x /etc/rc.d/init.d/proftpd 然后编辑/etc/rc.d/init.d/functions:修改 export PATH="/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin" 为 export PATH="/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/sbin" 注:若将在运行./cofigure命令时通过--prefix选项指定将proftpd安装在/usr/sbin目! 录下则不需要修改fuctions文件。
[root@ftpd rc3.d]# chkconfig --level 35 proftpd on 则下次系统启动以后,proftpd将自动启动。 最后,需要确保系统当前没有ftp服务器在运行: [root@ftpd /]# netstat -ln 若输出中不包含: tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 这样的内容则可以直接启动proftpd,否则需要关闭以前的ftpd服务器。对于一般的缺省 Linux安装来说,则需要通过以下的途径来关闭ftp服务器: 编辑/etc/inetd.conf文件,在: ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a 一行前加上#: #ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a 然后: [root@ftpd ! /]# ps ax|grep inetd 得到inetd的进程号 ,重新启动inetd进程: [root@ftpd /]# kill -HUP 350 然后通过如下命令启动proftpd: [root@ftpd /]# /etc/rc.d/init.d/proftpd start C:WINDOWS>ftp 192.168.2.33 则现在你就拥有了一个安全可靠的ftp服务器。 三、 FAQ 1) 我安装proftpd以后,出现了问题,我如何调试? 通过通过命令! /usr/local/sbin/proftpd -d9 -n启动proftpd来进行调试,则proftp d就会将 2) 为什么我的proftpf启动以后,匿名用户不能登录? 3) 我如何实现一个正常用户登录以后将其的访问限定在某个目录之下? /usr/sbin/groupadd ftpusers 然后将用户ideal加入到该组中: 最后在在proftpd.conf文件中添加如下内容: DefaultRoot ~ ftpusers 也可以限制用户登录以后仅仅访问自己主目录下的一个子目录: Default! Root ~/anoftp ftpusers 当然也可以将用户限制在其他目录之下,而不是自己的home目录下: DefaultRoot /tmp ftpusers 也可以限定一个用户组的某些用户被限制,而其他不作限制: DefaultRoot ~ ftpusers,!empolyee 这个指令指示仅仅限制ftpusers组中的不是empolyee组的用户进行限制。 在proftpd.conf中添加如下内容: ServerIdent off 则再次登录时,显示如下内容: C:WINDOWS>ftp 192.168.2.33 5) 在proftpd环境下如何设定虚拟主机? 可以通过指令:VirtualHost来实现,一个最简单的例子: <VirtualHost 192.168.2.35> 若你仅仅希望通过匿名访问某个虚拟主机,则使用如下! 的指令: <VirtualHost 192.168.2.35> Serv erName "virtual FTP server" <Limit LOGIN> <Anonymous /usr/local/private> User private <Limit LOGIN> </Anonymous> </VirtualHost> 这样192.168.2.35的这台主机则仅仅允许匿名登录。 笔者的proftpd.conf配置文件内容为: # This is a basic ProFTPD configuration file (rename it to ServerName &! quot;test.com.cn FTP Server" # Port 21 is the standard FTP port. # To prevent DoS attacks, set the maximum number of child processes
# Normally, we want files to be overwriteable. # A basic anonymous configuration, no upload directories. # Limit the maximum number of anonymous logins # We ! ;want ''welcome.msg'' displayed at login, and ''.message'' displayed # Limit WRITE everywhere in the anonymous chroot </Anonymous>
<VirtualHost 192.168.2.35> ServerName "virtual FTP server" <Limit LOGIN> <Anonymous /usr/local/private> User private <Limit LOGIN> </Anonymous> </VirtualHost>
今日推荐
|
重点推荐
领军企业技术文库
+更多领军技术文库
最新专题
电子杂志订阅
| ||||||||