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

    FTP服务与配置 - 图1FTP服务与配置 - 图2

    • 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

    FTP服务与配置 - 图3
    服务器启动脚本

    • 启动脚本名称是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登录的本地用户账号

    image.png

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

    FTP服务与配置 - 图5

    • 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

    虚拟用户(guest用户)

    • 如果用户在远程FTP服务器上拥有账号,且此账号只能用于文件传输服务,则称此用户为虚拟用户或Guest用户。
    • 虚拟用户可以通过输入自己的账号和口令来进行授权登录
    • 当授权访问的虚拟用户登录系统后,其登录目录为服务器为其指定的目录
    • 通常情况下,虚拟用户既可以下载又可以上传
    • 虚拟用户账号的设置步骤
      • 建立虚拟用户口令库文件
      • 生成vsftpd的认证文件
      • 建立虚拟用户所需的PAM配置文件
      • 建立虚拟用户所要访问的目录并设置相应权限
      • 设置vsftpd.conf配置文件

    FTP服务与配置 - 图6FTP服务与配置 - 图7
    FTP服务与配置 - 图8
    虚拟用户的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

    FTP服务与配置 - 图9FTP服务与配置 - 图10