下载
wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.5rc3.tar.gz
解压
tar zxvf proftpd-1.3.5rc3.tar.gz
进入目录
cd proftpd-1.3.5rc3
编译
./configure --prefix=/var/proftpd --sysconfdir=/etc
指定安装目录和配置文件目录
安装
make & make install
可以指定用户,如果你就只要匿名访问,当然可以不用新建用户
groupadd kevin建kevin组
useradd kevin -g kevin -d /var/ftp -s /sbin/nologin
不能登陆系统,默认目录是/var/ftp下
设置密码
启动proftpd服务
/var/proftpd/sbin/proftpd
提示错误,未知的组nogroup
修改配置文件
vi /etc/proftpd.conf
把Group nogroup改成Group nobody
nobody用户和组是系统的一个特殊的用户和组
在这里的意思是以这个用户和组来运行这个进程,这也是为了安全起见,不用root来运行,就算nobody用户被破解,也要提权才能得到root用户的权限,当然也要以在这里指定我们的kevin这些用户
再启动服务
看配置文件里,我们可以看到匿名访问是默认被启用的
匿名用户用户是ftp,而且有两个别名anonymous和ftp,随便用哪个都可以
访问一下
这个目录是我/var/ftp下的内容
我们新建的用户并没有在这里体现出来!
如果我们在命令行访问
输入anonymous或者ftp
要你输入邮箱地址作为密码
这里你随便输入什么都可以,但是不能不输入
SyslogLevel emerg
SystemLog /var/ftp/log/proftpd.log
说是proftpd默认没有日志功能,这两条记录就是设置日志级别和文件的,不过好像没什么用!
可以用 touch创建文件,但目录要先存在
不然会提示错误
DefaultRoot ~设置每个用户都在自己的家目录下,不能切换到其它目录,后面也可以指定用户和组
比如DefaultRoot ~ kevin,kevin
然后我们再指定匿名用户的家目录
vi /etc/passwd
找到ftp这个用户,后面的/var/ftp就是它的默认目录
可以改成/var/ftp/log
结束进程pkill proftpd或killall proftpd
再启动服务/var/proftpd/sbin/proftpd
再访问就是log目录了
ServerName是服务器名
ServerAdmin是管理员邮箱,有一些问题的话会发到这个邮箱,不知道有没有用
ServerIdent on “Serv-u FTP Server V10.8 for WinSock ready…”
开启服务器伪装,把它伪装成Serv-U 10.8,开启这个伪装后上面的服务器名就不会显示了
看伪装成功
配置文件里<Anonymous后面也可以指定匿名用户能访问的根目录>
就算指定了DefaultRoot ~也没用
不过不能设置成/
ServerType 服务器的运行模式,默认是standalone独立服务或者inetd被监管
设置inetd要配置一些信息
使用xinetd管理proftpd服务,也能加强服务器的安全性,可以有效阻止DDOS攻击
先看有没有安装xinetd
如果没有,就安装一下
yum -y install xinetd
在当前目录下复制配置文件xinetd到/etc/xinetd.d目录下,同时命名为proftpd
cp contrib/dist/rpm/xinetd /etc/xinetd.d/proftpd
编辑复制后的proftpd
修改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 上传续传
最大线程数
maxInstances 30
最大尝试登陆连接次数
MaxLoginAttempts 3
每用户线程
MaxClientsPerHost 2
最大用户数
MaxClients 20
AllowOverwite on上传时允许覆盖已有文件
关闭匿名登陆
把<Anonymous ~ftp>到</Anounymous>全注释掉
弹出要登陆的对话框了
输入之前创建的用户kevin和密码
默认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/