centos7-Proftpd服务
它是什么?它为什么来?它有什么用?它是如何实现的?
一个ftp服务程序, 和vsftpd一样,主要是针对wu-ftp(没用过)应用程序的一些缺点进行改进后开发的软件,它有以下特点:
1.高定制化(有许多参数可以设置,具体可百度)
2.配置比较简单(下文有具体提到)
3.可以配合md5模块使用
4.目录访问权限配置灵活,配置简单
5.能够不依赖系统用户,可以使用独立的虚拟用户系统(使用过Serv-U的朋友应该深有体会,配置非常方便,对原有系统环境影响较小)
6.对中文的支持良好,vsftpd有个比较严重的bug,对中文中一些字符的支持不是很好(目前只碰到对中文的双引号支持不是很好
软件安装方式
- yum仓库安装
yum -y install proftpd proftpd-utlis
注意:通过yum仓库安装与通过源码安装的proftpd,它们各自所生成的配置文件有许多区别
- 源码安装(推荐,因为网上可参考文件多)
wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.9rc2.tar.gz #安装1.3.9rc2最新版
下载之后,tar解压到想要的目录,接着配置./config 编译make 安装make install三部曲
tar -xzvf proftpd-1.3.9rc2.tar.gz
cd proftpd-1.3.9rc2
./configure --enable-nls --prefix=/usr/local/proftpd #(其中nls是mod_lang,文档:http://www.proftpd.org/docs/modules/mod_lang.html )
make
make install
客户端登录模式及相关配置
proftpd有两种用户登录模式:1.匿名登录 2.虚拟用户登录
-
匿名登录(不建议使用,生产环境中很少这么搞)
基本不用配置,但是可能需要留意一下RequireValidshell参数 -
虚拟用户登录
1、先用ftpasswd命令生成虚拟用户和用户组
/usr/local/proftpd/bin/ftpasswd --passwd --uid=2001 --gid=201 --home=/home/shawn --shell=/sbin/nologin --file=/usr/local/proftpd/etc/ftpd.passwd --name=shawn
#name是登陆ftp的用户名 file是密码文件位置 home是ftp用户的根目录
/usr/local/proftpd/bin/ftpasswd --group --file=/usr/local/proftpd/etc/ftp.group --gid=101 --name=ftpuser --member=shawn
#创建用户组,生成配置文件 member将创建的用户添加到用户组中
2、接着修改配置文件
# 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 "ProFTPD Default Installation"
ServerType standalone
DefaultServer on
# Port 21 is the standard FTP port.
Port 21
# Don't use IPv6 support by default.
UseIPv6 off
# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask 000
# 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
# Set the user and group under which the server will run.
User nobody #启动时所使用的用户和组
Group nobody #组一定要存在
# To cause every FTP user to be "jailed" (chrooted) into their home
# directory, uncomment this line.
DefaultRoot ~ #chroot机制
# Normally, we want files to be overwriteable.
AllowOverwrite on
# Bar use of SITE CHMOD by default
<Limit SITE_CHMOD>
AllowAll
</Limit>
PassivePorts 50000 65534 #被动模式监听端口
#UseReverseDNS off
AuthOrder mod_auth_file.c #认证模块
AuthUserFile /usr/local/proftpd/etc/ftpd.passwd #认证模块
RequireValidShell off #虚拟用户必须配置这一条参数
#<Limit Login>
# AllowAll
#</Limit>
<Directory /home/shawn> #目录权限设置
<Limit ALL>
AllowAll
</Limit>
</Directory>
# A basic anonymous configuration, no upload directories. If you do not
# want anonymous users, simply delete this entire <Anonymous> section.
# <Anonymous ~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
# DisplayChdir .message
#
# # Limit WRITE everywhere in the anonymous chroot
# <Limit WRITE>
# DenyAll
# </Limit>
# </Anonymous>
3、启动软件
/usr/local/proftpd/sbin/proftpd #启动服务
ps -ef | grep proftpd #检查服务进程是否启动
需要注意的地方
- 配置文件中应当尽可能指定被动模式,并且防火墙开放相应端口
- 如果是公网环境向外提供服务,需要注意:客户端与服务器通过21命令端口连接后,客户端发送PASV请求,已告知服务器使用被动模式。服务器响应客户端PASV请求时,会把服务器地址和端口封装在ftp应用层协议里,如果配置文件中没有配置“Address 公网ip” 参数,则服务器可能封装私有ip,导致数据端口无法连接,进而发生异常。
- 虚拟用户登录后,并不会像vsftpd一样,映射到一个本地用户上