部署文件服务器

1. 文件服务器

  • 1.1 一般用于文件传输协议(FTP),用于FTP客户端与服务端的文件共享、上传下载

  • 1.2 结构:客户机/服务器(C/S架构)

  • 1.3 端口:

    • 20:用于数据传输
    • 21:用于传输命令
  • 1.4 特点:FTP服务器普遍部署在内网,一般使用下载功能较多,容易搭建,方便管理

  • 1.5 结构图:

  • 1.6 FTP协议工作模式

    • 主动模式:FTP的服务器主动向客户机发出连接请求
    • 被动模式:FTP服务器等待客户机发出连接请求(默认模式)
  • 1.7 vsftpd服务程序

    • 1.7.1 vsftpd:非常安全的FTP守护进程

    • 1.7.2 vsftpd是一款运行在Linux系统上的FTP服务程序,具有完全开源、免费、高安全性、高可靠性、高传输速度、支持多种服务模式的FTP服务器端软件

    • 1.7.3 工作模式:

      • 匿名开放模式:任何人都可以无需密码验证而直接登录FTP服务器,方便简单但极不安全
      • 本地用户模式:通过Linux系统本地的普通账户和密码进行认证登录,相对安全,若本地系统账户信息泄露或被破解,则FTP服务器就可顺利登录,从而控制整个服务器
      • 虚拟用户模式:单独的建立用户数据库文件,虚拟出账户及密码,用于验证登录,实际账户信息不存在,仅供FTP服务器进行认证使用,有效地降低了破坏范围
    • 1.7.4 访问方式

      • 服务器端:vsftp
      • 客户机端:
        • 命令行:ftp 或 lftp 命令访问
        • Windows:浏览器或目录界面
    • 1.7.5 安装vsftpd

      • 服务端格式:yum install -y vsftpd
      • 客户端格式:yum install -y
    • 1.7.6 vsftpd服务软件的配置文件:/etc/vsftpd/vsftpd.conf

    • 部署匿名开放模式的服务器

      • 准备工作

        • 关闭 SELINUX

        • 关闭防火墙:systemctl stop firewalld

          (或加入防火墙白名单:firewall-cmd --permanent --zone=public --add-service=ftp)

        • 重启防火墙:firewall-cmd --reload

      • 编辑配置 vsftpd.conf 文件,实现匿名模式服务器

        • 编辑:vim /etc/vsftpd/vsftpd.conf

        • 匿名模式涉及的参数:

          • anonymous_enable=YES(允许匿名访问)
          • write_enable=YES(设置可写权限)
          • anon_umask=022(需添加,设置匿名账户上传文件的umask值)
          • anon_upload_enable=YES(需去掉#,允许匿名账户上传文件)
          • anon_mkdir_write_enable=YES(需去掉#,允许匿名账户创建目录)
          • anon_other_write_enable=YES(需添加,允许匿名账户修改目录名或删除目录)
        • 设置vsftpd默认工作目录的权限

          • 默认目录:/var/ftp/pub
          • 对该目录增加ftp账户对应的权限:chown -Rf ftp /var/ftp/pub
        • 启动服务

          • 启动:systemctl start vsftpd
          • 设置开机启动:systemctl enable vsftpd
        • 测试

          • Windows:在目录界面或浏览器界面的地址栏输入ftp://ip地址

          • Linux:

            • ftp软件:

              • 命令格式为: ftp 对方IP地址

              • 输入用户名anonymous,密码回车,cd pub后进行ls浏览和尝试mkdir创建目录,输入exit退出

            • lftp软件:

              • 命令格式为:lftp 对方IP地址
              • cd pub后进行ls浏览和尝试mkdir创建目录,输入 “ get 文件名 ” 进行上传,输入exit退出
        • umask参数

          • umask值是Unix系统的概念,决定目录及文件被创建时的初始权限
          • 在vsftpd的服务器中的目录初始权限最高为777,文件由于不能设置为可执行,则最高权限为666
          • umask值本质是一种补码
          • 目录实际权限计算方式:777-umask,例如umask=022,目录初始权限为777-022即755
          • 文件实际权限计算方式:666-umask,例如umask=022,文件初始权限为666-022即644
    • 部署本地用户模式的ftp服务器

      • 本地模式就是通过Linux的普通账户进行登录

      • 准备工作:同匿名的准备工作

        • 关闭 SELINUX:setenforce 0

        • 关闭防火墙:systemctl stop firewalld

          (或加入防火墙白名单:firewall-cmd --permanent --zone=public --add-service=ftp)

        • 重启防火墙:firewall-cmd --reload

      • 配置vsftpd.conf文件实现本地模式

        • 打开文件:vim /etc/vsftpd/vsftpd.conf
        • 本地模式涉及的参数:
          • anonymous_enable=NO(关闭匿名模式)
          • local_enable=YES(开启本地模式)
          • write_enable=YES(设置可写权限)
          • local_umask=022(设置本地模式账户umask值)
          • userlist_enable=YES(启用 “ 禁止用户名单 ”)
          • userlist_deny=YES(需添加,启用用户作用名单)
          • 注意:userlist_enable和userlist_deny都为YES时,/etc/vsftpd/user_list文件为 “黑名单”,即文件中的账户都不能登录
          • 注意:userlist_enable=YES和userlist_deny=NO时,则/etc/vsftpd/user_list文件为 “白名单”,即只有该文件中的用户可以登录
      • 启动服务:systemctl start vsftpd

      • 设置开机启动:systemctl enable vsftpd

      • 上传文件默认目录:/home/普通账户名/

      • 测试

        • Windows:

          在目录界面或浏览器界面的地址栏输入ftp://ip地址,输入普通账户名及密码进行登录操作

        • Linux:

          • ftp软件:

            • 命令格式为: ftp 对方IP地址

            • 输入用户名ZHIYUAN,密码回车登录,cd pub后进行ls浏览和尝试mkdir创建目录,输入exit退出

          • lftp软件:

            • 命令格式为:lftp 对方IP地址 -u 普通用户名
            • 输入对应用户的密码,回车登录,cd pub后进行ls浏览和尝试mkdir创建目录,输入exit退出
      • 限制本地用户只能在本地家目录中访问

        • 一般用户登录后访问的默认目录为/home/账户名/,但通过切换目录可以访问提权到其上级目录,这是相当危险的行为,需要做如下限制
        • 设置:
          • chroot_local_user=YES(去掉#,开启限制用户工作的目录)
          • allow_writeable_chroot=YES(需添加,设置为不可跳出主目录后允许登录,且主目录可写)
          • 注意:设置完毕后必须重启vsftpd服务:systemctl restart vsftpd
        • 测试:
          • ftp 192.168.0.119
          • 输入账户名及密码
          • 尝试cd /etc cd ..
    • 部署虚拟用户模式的ftp服务器

      • 准备工作

        • 关闭SELINUX :setenforce 0

        • 关闭防火墙:systemctl stop firewalld

          (或加入防火墙白名单:firewall-cmd --permanent --zone=public --add-service=ftp)

        • 若添加白名单请重启防火墙:firewall-cmd --reload

        • 设置工作默认权限:chown -Rf ftp /var/ftp/pub

        • 安装必要软件:

          • 安装vsftpd :yum install -y vsftpd
          • 安装yum扩展源:yum install -y epel-release
          • 安装db4数据库软件:yum install -y db4*
      • 创建FTP认证的数据库软件

        • 作用:存储允许登录的账户名及密码

        • 格式:奇数行为账户名,偶数行为密码

        • 创建位置:/etc/vsftpd

        • ftpuser1

          123456

          ftpuser2

          654321

        • 过程

      • vim /etc/vsftpd/vuser.list

        • 输入账户及密码,注意:奇数行为账户名,偶数行为密码

        • 由于vuser.list是明文,不安全,且不符合vsftpd程序加载文件的格式,需要使用db_load命令进行hash加密,并转为数据库文件,最后删除原始明文

          • 加密:db_load -T -t hash -f /etc/vsftpd/vuser.list /etc/vsftpd/vuser.db
        • -T:将文本文件转译载入数据库

          • -t hash:使用hash算法加密
          • -f:指定包含用户名和密码的文本文件
          • 设置权限:chmod 600 vuser.db
          • 删除原始明文:rm -f vuser.list
      • 创建虚拟账户映射的账户及家目录

        • 作用:虚拟账户是没有家目录的,权限也未知,则需要虚拟账户登录后映射到本地实际账户的家目录中,其权限也自动归属于该本地账户
        • 过程:
          • useradd -d /var/ftpuser -s /sbin/nologin vfox
          • 设置家目录权限:chmod -Rf 755 /var/ftpuser
      • 创建PAM文件进行映射

        • PAM:可拔插认证模块,是一种认证机制,系统管理员可以通过调整PAM就轻易修改对应的认证方式,从而不需要修改应用程序
        • 过程:
          • vim /etc/pam.d/vsftpd.vu
          • 输入以下两行进行映射
            • auth required pam_userdb.so db=/etc/vsftpd/vuser
            • account required pam_userdb.so db=/etc/vsftpd/vuser
            • (注意:vuser不需要加扩展名db)
      • 配置 vsftpd.conf 文件涉及参数

        • anonymous_enable=NO(关闭匿名模式)
        • local_enable=YES(开启本地账户)
        • guest_enable=YES(需添加,开启虚拟账户模式)
        • guest_username=vfox(需添加指定映射的账户名)
        • pam_service_name=vsftpd.vu(指定pam文件)
        • allow_writeable_chroot=YES(需添加,设置为不可跳出主目录且允许登录可写)
      • 重启服务:systemctl restart vsftpd

      • 例:设置ftpuser1可以上传、创建、修改、删除,ftpuser2只能查看

        • 原则:通过创建权限文件实现

        • 过程:

          • mkdir -p /etc/vsftpd/vsdir

          • cd /etc/vsftpd/vsdir

          • vim ftpuser1

          • 输入以下自定义功能参数:

            • anon_upload_enable=YES
            • anon_mkdir_write_enable=YES
            • anon_other_write_enable=YES
          • 在 vsftpd.conf 配置文件中设置账户访问权限配置文件的存储目录

            • vim /etc/vsftpd/vsftpd.conf

            • user_config_dir=/etc/vsftpd/vsdir

          • 重启服务:systemctl restart vsftpd

原文作者:絷缘
作者邮箱:zhiyuanworkemail@163.com
原文地址:https://zhiyuandnc.github.io/RptKbpSRd/
版权声明:本文为博主原创文章,转载请注明原文链接作者信息