- FTP服务基本概念
- FTP是用于进行文件传输的网络协议
- FTP服务中分为服务器和客户机两个角色
- FTP服务器的传输模式
- 主动模式:由服务器主动连接客户端建立数据链路
- 被动模式:FTP服务器等待客户端请求建立数据链路
- FTP服务器使用的端口
- 21端口用于与客户端建立命令链路(并不传输数据)
- 20端口用于在主动模式下服务器与客户端建立数据链路


- Windows下常用的FTP服务器软件
- IIS具有FTP服务器的功能
- Serv-U是流行的FTP服务器软件
- Linux下的FTP服务器
- Wu-ftpd出现较早,运行稳定,安全性稍差
- Proftpd在配置文件和安全性方面有很大改进
- vsftpd着重强调服务的安全性,运行效率也很高
Vsftpd简介
- 是一个安全、高速、稳定的FTP服务器
- 可设定多个基于IP的虚拟FTP服务器
- 匿名FTP访问更是十分容易
- 不执行任何外部程序,从而减少了安全隐患
- 支持虚拟用户,并且支持每个虚拟用户拥有独立的配置
- 可以设置为从xinetd启动,或是独立ftp服务器两种运行方式
- 支持PAM或xinetd/tcp_wrappers的认证方式
- 支持带宽限制等
CentOS下的vstpd服务
- 软件包:vsftpd
- 服务类型:由Systemd启动的守护进程
- 配置单元:/usr/lib/systemd/system/vstpd.service
- 守护进程:/usr/sbin/vstpd
- 端口:21(ftp),20(ftp—data)
- 配置文件
- 主配置文件:/etc/vstpd/vstpd.conf
- 用户访问控制配置文件:/etc/vstpd/{ftpusers,user_list}
- PAM配置文件:/etc/pam.d/vstpd
- 相关软件包和内核模块:
- tpc_wrappers
- ip_conntrack_ftp,ip_nat_ftp

服务器启动脚本
- 启动脚本名称是vsftpd
- /etc/init.d/vstpd
- vsftpd服务需要设置在运行级别3和5自动启动
- chkconfig —level 35 vstpd on
- 服务器启动
- service vsftpd start
- 服务器停止
- service vsftpd stop
- 服务器状态查询
- service vsftpd status
vsftpd中支持的用户类型
- 匿名用户
- 使用公共的用户账号进行登录,通常用于提供公共文件下载服务
- 本地用户
- 使用Linux系统用户账号登录,每个用户都是用各自的宿主目录
- 虚拟用户
- 使用独立的文件保存虚拟账号,安全性较好,可替代本地用户
vsftpd匿名用户登录
- 匿名用户使用的登录用户名
- anonymous
- ftp
- 匿名FTP用户登录的口令通常是使用用户的E-mail地址,在vsftpd中输入任何字符串或直接回车都可以登录
- 所有匿名用户都登录到相同的目录中:/var/ftp
- FTP服务器的匿名登录可用于构建公共的文件下载服务器
- ftp命令登录FTP服务器的格式
- ftp 192.168.1.2
本地用户登录
- 使用系统用户账号和口令登录ftp服务器
- 登录FTP服务器后的目录为用户宿主目录($HOME),用户可转换到系统的其他目录(存在安全隐患)
- 可以下载也可以上传
- vsftpd.ftpusers用于保存不允许进行FTP登录的本地用户账号

- vsftpd.ftpusers文件中可禁止高权限本地用户登录FTP服务器,提高了系统的安全性
- 如何将FTP本地用户禁锢在宿主目录中
- 在vsftpd.conf文件中添加设置项: chroot_local_user=YES
- 重新启动vsftpd服务: service vsftpd restart
- 使用FTP客户端验证、本地用户登录FTP服务器后,宿主目录将作为根目录(/)

- vsftpd.user_list文件具有对vsftpd服务器更灵活的用户访问控制
- /etc/vsftpd/user_list
- 使用vsftpd.user_list文件需要在主配置文件中进行设置
- 设置禁止vsftpd.user_list文件中的用户登录
- userlist_enable=YES
- userlist_deny=YES
- 设置只允许vsftpd.user_list文件中的用户登录
- userlist_enable=YES
- userlist deny=NO
- 设置禁止vsftpd.user_list文件中的用户登录
虚拟用户(guest用户)
- 如果用户在远程FTP服务器上拥有账号,且此账号只能用于文件传输服务,则称此用户为虚拟用户或Guest用户。
- 虚拟用户可以通过输入自己的账号和口令来进行授权登录
- 当授权访问的虚拟用户登录系统后,其登录目录为服务器为其指定的目录
- 通常情况下,虚拟用户既可以下载又可以上传
- 虚拟用户账号的设置步骤
- 建立虚拟用户口令库文件
- 生成vsftpd的认证文件
- 建立虚拟用户所需的PAM配置文件
- 建立虚拟用户所要访问的目录并设置相应权限
- 设置vsftpd.conf配置文件



虚拟用户的FTP登录
- 使用ftp命令登录FTP服务器
- 使用已配置的虚拟用户名和口令登录FTP服务器,如能正常登录说明虚拟用户账号配置成功
- 为了系统的安全,缺省配置的虚拟用户只具有较低的用户权限
- 可以通过为每个虚拟用户建立独立的配置文件增加用户的权限
- 对虚拟用户设置不同的权限
- 设置主配置文件:在vsftpd.conf文件中添加用户配置文件目录设置
user_config_dir=/etc/vsftpd_user_conf
- 建立用户配置文件目录:使用mkdir命令建立用户配置文件目录
mkdir /etc/vsftpd_user_conf
- 为虚拟用户建立单独的配置文件:用户配置文件名称与用户名相同
/etc/vsftpd_user_conf/mike
/etc/vsftpd_user_conf/john


