分享
 
 
 

ProFtpd快速指南

王朝other·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

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的主要包括如下特点:

* 单一主设置文件,包含许多指令以及其支配的组,完全都是直观的设定。如果各位对Apache Web Serve的设置不陌生的话相信一定会觉得十分容易操作设定。

* 每个目录都可以定义一个".ftpaccess"设置文件,就如同Apache的".htaccess"文件一样可以设定该目录的存取权限。

* 可设定多个虚拟FTP server,而匿名FTP服务更是十分容易。

* 可根据系统的负载(load)选择以单独运作(stand-alone)方式或是由inetd启动。

* 匿名FTP的根目录不需要特定的目录结构、系统二进制执行文件或其它系统文件。

* ProFTPD不执行任何外部程序以免造成安全漏洞。

* 具有隐藏目录或隐藏文件,源自于Unix形式的档案权限,或是user/group类型的档案权限设定。

* 能够以一般使用者在单独运作(stand-alone)模式下执行,以减少某些藉由攻击方式取得root权的可能性。注:此功能与Unix的操作系统有关。

* 支持系统记录以及utmp/wtmp。

记录的方式与wu-ftpd的标准完全兼容,也支持记录内容的延伸格式。

* 支持Shadow password,包括了帐号使用期限设定的功能。

编译和安装

Proftpd提供了多种安装格式,包括源代码方式、RPM方式、deb方式(debian软件包)等。本文主要讨论源代码方式的安装。

从ftp.proftpd.net下载最新版本的proftpd-1.2.0rc3到Linux服务器上。然后按照如下步骤进行处理:

[root@ftpd /]# cp proftpd-1.2.0rc3.tar.gz /usr/src/

[root@ftpd /]# cd /usr/src

[root@ftpd src]# tar xvfz proftpd-1.2.0rc3.tar.gz

[root@ftpd src]# cd proftpd-1.2.0rc3

[root@pftd proftpd-1.2.0rc3]# ./configure

[root@pftd proftpd-1.2.0rc3]# make

[root@pftd proftpd-1.2.0rc3]# make install

到现在为止,你已经完成了proftpd的编译和安装。并且在/usr/local/etc/目录下有一个默认的proftpd配置文件proftpd.conf。

启动测试

对于笔者的试验系统RedHat6.2来说,需要将该配置文件中:

Group nogroup

修改为:

Group nobody

因为redhat系统中nobody用户属于nobody组,而不是nogroup组。

若需要将proftpd设置为系统启动时自动启动则通过如下命令拷贝启动文件:

[root@ftpd proftpd-1.2.0rc3]# cp ./contrib/dist/rpm/proftpd.init.d /etc/rc.d

/init.d/proftpd

然后修改该脚本的可执行属性:

[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

350 ? S 0:00 inetd

得到inetd的进程号 ,重新启动inetd进程:

[root@ftpd /]# kill -HUP 350

然后通过如下命令启动proftpd:

[root@ftpd /]# /etc/rc.d/init.d/proftpd start

这时候可以通过如下命令来测试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>

则现在你就拥有了一个安全可靠的ftp服务器。

FAQ

1、我安装proftpd以后,出现了问题,我如何调试?

通过通过命令/usr/local/sbin/proftpd -d9 -n启动proftpd来进行调试,则proftpd就会将调试信息打印到consle上以供调试之用。

2、为什么我的proftpf启动以后,匿名用户不能登录?

查看proftp配置文件/usr/local/etc/proftpd.conf,修改<Anonymous ~ftp>为<Anonymous /home/ftp>(这里/home/ftp可以是任何希望匿名用户登录以后的当前根目录,但是确保要使该目录允许ftp用户访问),并且若<Anonymous /home/ftp>部分的User指令指定的用户为ftp用户,则需要在配置文件中添加如下命令指示:

RequireValidShell off

3、我如何实现一个正常用户登录以后将其的访问限定在某个目录之下?

可以通过指令DefaultRoot来实现。例如若希望将ftpusers组的用户限定在自己的home目录下,则需要首先创建该组:

/usr/sbin/groupadd ftpusers

然后将用户ideal加入到该组中:

usrmod -G ftpusers ideal

最后在在proftpd.conf文件中添加如下内容:

DefaultRoot ~ ftpusers

也可以限制用户登录以后仅仅访问自己主目录下的一个子目录:

DefaultRoot ~/anoftp ftpusers

当然也可以将用户限制在其他目录之下,而不是自己的home目录下:

DefaultRoot /tmp ftpusers

也可以限定一个用户组的某些用户被限制,而其他不作限制:

DefaultRoot ~ ftpusers,!empolyee

这个指令指示仅仅限制ftpusers组中的不是empolyee组的用户进行限制。

4、我如何使用户登陆时不显示ftp服务器版本信息,以增强安全性?

在proftpd.conf中添加如下内容:

ServerIdent off

则再次登录时,显示如下内容:

C:WINDOWS>ftp 192.168.2.33

Connected to 192.168.2.33.

220 ftpd.test.com.cn FTP server ready.

User (192.168.2.33:(none)):

5、在proftpd环境下如何设定虚拟主机?

可以通过指令:VirtualHost来实现,一个最简单的例子:

<VirtualHost 192.168.2.35>

ServerName "virtual FTP server"

</VirtualHost>

若你仅仅希望通过匿名访问某个虚拟主机,则使用如下的指令:

<VirtualHost 192.168.2.35>

ServerName "virtual FTP server"

<Limit LOGIN>

DenyAll

</Limit>

<Anonymous /usr/local/private>

User private

Group private

<Limit LOGIN>

AllowAll

</Limit>

</Anonymous>

</VirtualHost>

这样192.168.2.35的这台主机则仅仅允许匿名登录。

笔者的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 "test.com.cn FTP Server"

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

RequireValidShell off

ServerIdent off

# Set the user and group that the server normally runs at.

User nobody

Group nobody

# Normally, we want files to be overwriteable.

<Directory /*>

AllowOverwrite on

</Directory>

# A basic anonymous configuration, no upload directories.

<Anonymous /home/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>

DefaultRoot ~ ftpusers

<VirtualHost 192.168.2.35>

ServerName "virtual FTP server"

<Limit LOGIN>

DenyAll

</Limit>

<Anonymous /usr/local/private>

User private

Group private

<Limit LOGIN>

AllowAll

</Limit>

</Anonymous>

</VirtualHost>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有