下载

wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.5rc3.tar.gz

解压

tar zxvf proftpd-1.3.5rc3.tar.gz

Proftpd安装与配置_linux ftp

进入目录

cd proftpd-1.3.5rc3

编译

./configure --prefix=/var/proftpd --sysconfdir=/etc

指定安装目录和配置文件目录

Proftpd安装与配置_ftp_02

安装

make & make install

Proftpd安装与配置_proftpd_03

可以指定用户,如果你就只要匿名访问,当然可以不用新建用户

groupadd kevin建kevin组

useradd kevin -g kevin -d /var/ftp -s /sbin/nologin

不能登陆系统,默认目录是/var/ftp下

Proftpd安装与配置_proftpd_04

设置密码

Proftpd安装与配置_linux ftp_05

启动proftpd服务

/var/proftpd/sbin/proftpd

提示错误,未知的组nogroup

Proftpd安装与配置_ftp_06

修改配置文件

vi /etc/proftpd.conf

Proftpd安装与配置_linux ftp_07

把Group nogroup改成Group nobody

nobody用户和组是系统的一个特殊的用户和组

在这里的意思是以这个用户和组来运行这个进程,这也是为了安全起见,不用root来运行,就算nobody用户被破解,也要提权才能得到root用户的权限,当然也要以在这里指定我们的kevin这些用户

Proftpd安装与配置_ftp_08

再启动服务

Proftpd安装与配置_proftpd_09

看配置文件里,我们可以看到匿名访问是默认被启用的

Proftpd安装与配置_ftp_10

匿名用户用户是ftp,而且有两个别名anonymous和ftp,随便用哪个都可以

访问一下

ftp://192.168.189.23

这个目录是我/var/ftp下的内容

Proftpd安装与配置_ftp_11

我们新建的用户并没有在这里体现出来!

如果我们在命令行访问

ftp 192.168.189.23

输入anonymous或者ftp

要你输入邮箱地址作为密码

这里你随便输入什么都可以,但是不能不输入

Proftpd安装与配置_linux ftp_12

SyslogLevel emerg

SystemLog /var/ftp/log/proftpd.log

说是proftpd默认没有日志功能,这两条记录就是设置日志级别和文件的,不过好像没什么用!

Proftpd安装与配置_proftpd_13

可以用 touch创建文件,但目录要先存在

Proftpd安装与配置_ftp_14

不然会提示错误

Proftpd安装与配置_ftp_15

DefaultRoot ~设置每个用户都在自己的家目录下,不能切换到其它目录,后面也可以指定用户和组

比如DefaultRoot ~ kevin,kevin

Proftpd安装与配置_proftpd_16

然后我们再指定匿名用户的家目录

vi /etc/passwd

找到ftp这个用户,后面的/var/ftp就是它的默认目录

可以改成/var/ftp/log

Proftpd安装与配置_proftpd_17

结束进程pkill proftpd或killall proftpd

再启动服务/var/proftpd/sbin/proftpd

再访问就是log目录了

Proftpd安装与配置_linux ftp_18

ServerName是服务器名

ServerAdmin是管理员邮箱,有一些问题的话会发到这个邮箱,不知道有没有用

ServerIdent on “Serv-u FTP Server V10.8 for WinSock ready…”

开启服务器伪装,把它伪装成Serv-U 10.8,开启这个伪装后上面的服务器名就不会显示了

Proftpd安装与配置_linux ftp_19

Proftpd安装与配置_ftp_20

看伪装成功

Proftpd安装与配置_linux ftp_21

配置文件里<Anonymous后面也可以指定匿名用户能访问的根目录>

就算指定了DefaultRoot ~也没用

不过不能设置成/

ServerType 服务器的运行模式,默认是standalone独立服务或者inetd被监管

设置inetd要配置一些信息

使用xinetd管理proftpd服务,也能加强服务器的安全性,可以有效阻止DDOS攻击

先看有没有安装xinetd

Proftpd安装与配置_proftpd_22

如果没有,就安装一下

yum -y install xinetd 

Proftpd安装与配置_linux ftp_23

在当前目录下复制配置文件xinetd到/etc/xinetd.d目录下,同时命名为proftpd

cp contrib/dist/rpm/xinetd /etc/xinetd.d/proftpd

Proftpd安装与配置_proftpd_24

编辑复制后的proftpd

Proftpd安装与配置_ftp_25

Proftpd安装与配置_proftpd_26

修改server = /var/proftpd/sbin/in.proftpd就是把sbin的目录指定到安装目录

添加server_args = -c /etc/proftpd.conf

把下面的log两行注释掉

disable后的yes 改成no

不过xinetd管理proftpd后语言模块可能有问题,所以还是不要改的好!

DefaultServer on是设置为默认服务器

UseIPv6 off关闭IPv6支持

Port 21 FTP默认21端口

支持断点续传

AllowRetrieveRestarton 下载续传

AllowStoreRestarton 上传续传

Proftpd安装与配置_proftpd_27

最大线程数

maxInstances 30

Proftpd安装与配置_ftp_28

最大尝试登陆连接次数

MaxLoginAttempts 3 

每用户线程

MaxClientsPerHost 2 

最大用户数

MaxClients 20

AllowOverwite on上传时允许覆盖已有文件

Proftpd安装与配置_linux ftp_29

关闭匿名登陆

把<Anonymous ~ftp>到</Anounymous>全注释掉

Proftpd安装与配置_linux ftp_30

弹出要登陆的对话框了

Proftpd安装与配置_ftp_31

输入之前创建的用户kevin和密码

Proftpd安装与配置_proftpd_32

默认root用户不能登陆

配置文件里添加RootLogin on就可以了,如果存在/etc/ftpusers,把里面的root删除,这个应该是其它FTP软件留下来的,比如vsftpd

设置只允许kevin登陆,不然系统用户都可以登陆

编辑配置文件,添加下列内容

<limit LOGIN> 

Order allow,deny 

DenyUser !kevin

</limit>

只想让指定IP段访问,比如192.168.0.x

就可以设置

<limit LOGIN> 

Order allow,deny 

Allow from 192.168.0. 

Deny from all 

</limit>

限制传输速率,基本语法为:

TransferRate (STOR|RETR) 速度(Kbytes/s) user 使用者

STOR 为上传而 RETR 为下载的意思!速度为 Kbytes/second 喔!

TransferRate STOR 100 user anonymous,ftp # 单位为 KB/s

TransferRate RETR 50 user anonymous,ftp

这两条就可以写进<Anonymous>里,不过一般不限制

<Anonymous>里有一个

<Limit WRITE>

DenyAll

</Limit>

是拒绝写入

当然这个要配合目录权限来设置的,比如你目录权限给了777可能也写不进文件,就要在这里AllowAll

这也可以放在目录里,比如

<Directory /etc>   
<Limit WRITE>    
AllowAll    
</Limit> 

如果不想让下载,只让上传,可以加上READ   
<Limit READ>

DenyAll

</Limit>   
</Directory>

 

 

 

 

 

 

 

更多信息请参考下面:

#全局设置   
设置项目1 参数1    
设置项目2 参数2    
#某个目录的设置    
<Directory “路径名”>    
…    
</Directory>    
#关于匿名用户的设置    
<Anonymous “匿名登陆的目录”>    
…    
<Limit 限制动作>    
..    
</Limit>    
</Anonymous>    
其中最重要的就是limit之中的部分,涉及到了具体的权限控制    
CMD:Change Working Directory 改变目录    
MKD:MaKe Directory 建立目录的权限    
RNFR: ReName FRom 更改目录名的权限    
DELE:DELEte 删除文件的权限    
RMD:ReMove Directory 删除目录的权限    
RETR:RETRieve 从服务端下载到客户端的权限    
STOR:STORe 从客户端上传到服务端的权限    
READ:可读的权限,不包括列目录的权限,相当于RETR,STAT等    
WRITE:写文件或者目录的权限,包括MKD和RMD    
DIRS:是否允许列目录,相当于LIST,NLST等权限,还是比较实用的    
ALL:所有权限    
LOGIN:是否允许登陆的权限    
针对这些设置,又有如下具体的配置:    
AllowUser 针对某个用户允许的Limit    
DenyUser 针对某个用户禁止的Limit    
AllowGroup 针对某个用户组允许的Limit    
DenyGroup 针对某个用户组禁止的Limit    
AllowAll 针对所有用户组允许的Limit    
DenyAll 针对所有用户禁止的Limit    
同时,可以针对单独的用户来限制速度

比如

<Limit STOR MKD> #允许上传和新建目录   
AllowAll    
</Limit>

我们还可以对ftp进行管理。所以在系统中建立一个用户,名称为ftpadmin,属于nogroup组,不允许登陆。同时赋予它对ftp所有的权限   
<Anonymous /ftp/ftphome>    
User ftpadmin    
Group nogroup    
<Directory *>    
<Limit ALL>    
AllowAll    
</Limit>    
</Directory>    
</Anonymous>

启动不了,出现如下错误的解决方法   
[root@new-host sbin]# ./proftpd    
- IPv4 getaddrinfo 'new-host' error: Name or service not known    
- warning: unable to determine IP address of 'new-host'    
- error: no valid servers configured    
- Fatal: error processing configuration file '/usr/local/proftpd/etc/proftpd.conf'    
原因是无法绑定Ip地址。    
在配置文件中增加下面这句:    
DefaultAddress 192.168.8.105    
再重启服务就可以了!    
对出现的530 Login incorrect错误,查看日志发现Invalid shell错误    
在配置中添加    
RequireValidShell off 不要求有合法的shell    
"Fatal: Socket operation on non-socket"    
这通常意味着在 proftpd.conf 配置文件中 ServerType 指令被配置成 inetd    
(超级服务器)方式而不是 standalone(独立服务器) 方式来运行

http://www.php318.com/show_82_4.html

http://www.php318.com/show_82_5.html

UseEncodingUTF-8 GBK 防止IE、资源管理器文件乱码神器

PathDenyFilter \.exe$ 限制上传的文件格式

http://www.it165.net/admin/html/201303/884.html

# We don't want .ftpaccess or .htaccess files to be uploaded

PathDenyFilter "(\\.ftpaccess|\\.htaccess)$"

http://www.proftpd.org/docs/directives/linked/config_ref_PathDenyFilter.html

#开起全盘的写权限

<Directory /> 

AllowOverwrite on 

AllowStoreRestart on

#允许FXP 

# AllowForeignAddress on 

<Limit All> 

AllowAll 

</Limit> 

</Directory>

http://www.cnblogs.com/riky/archive/2007/04/24/725329.html

AuthAliasOnly on #只允许别名

http://linux.chinaunix.net/doc/netconf/2005-02-03/1077.shtml

./configure --with-modules=mod_quotatab:mod_quotatab_file:mod_ban:mod_tls:\

mod_rewrite:mod_ifsession --enable-ctrls --enable-nls

--with-modules //编译时包括选项:

mod_quotatab //启用 quota用户磁盘限额

mod_quotatab_file //采用基于文件的quotatab 

mod_ban //启动动态黑名单,防止密码猜测,DDOS攻击

mod_tls //启用tls,实现功能FTPS 

mod_rewrite //启用重写,可实现用户上传内容自动改名

mod_ifsession //启用会话判断,可判断会话,对用户IP设置规则。

--enable-ctrls //启用访问控制,可设置ACL

--enable-nls //启用语言探测,解决中文乱码。

make 

//默认安装到/usr/local/ ,需要root权限

make install

##关闭欢迎信息显示

DeferWelcome off 

##如果显示欢迎信息,则指定显示的文件

DisplayLogin welcome.msg 

##指定切换文件夹时,显示的欢迎信息

DisplayChdir .message 

#匿名用户默认客户端连接数为10,如果想在客户端连接数满时显示消息,就在MaxClents 10 后面加空格加你的提示消息”人满了,稍后你再来吧!”

#

##登录超时时间,从出现输入用户名的提示符到断开连接的时间

TimeoutLogin 1200

##空闲超时,无操作超时

TimeoutIdle 600

##不传输超时,数据连接建立,但是没有数据传输

TimeoutNoTransfer 900

##延迟超时,从数据连接建立到有数据传输最大延迟时间

TimeoutStalled 3600 

##不使用DNS反查询

UseReverseDNS off #加快连接速度

##不使用RFC 1413协议反查用户信息,加快FTP访问速度

IdentLookups off 

这个RFC 1413协议有兴趣可以Search

##下面一个,建议还是开启delay引擎,更安全。

为什么这么说呢?Proftpd在接受用户请求的时候,会查询用户列表,以确定是否有这个用户。如果有,还会查询黑名单列表,访问控制列表。这些查询都需要时间。所以,不同情况(服务器存在账户和不存在账户)下,从输入用户名到出现密码提示符之间的时间会有一个时间差值。这个时间很短,凭人无法感觉,但是计算机可以识别,通过对这个时间差进行分析,可以试探那些Proftpd上存在哪些用户,不存在哪些用户。开启delay引擎,会均衡这个时间段。无论输入的用户存不存在,从用户名输入到弹出密码提示符的时间间隔都是一样的

DelayEngine on

http://www.xiyang-liu.com/2012/11/install-proftpd-in-centos/