设为首页 收藏本站
查看: 992|回复: 0

[经验分享] Vsftp基于OpenSSL 安装配置与维护

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-12-22 08:55:39 | 显示全部楼层 |阅读模式
Vsftp服务基础
  • 用户控制列表文件ftpusers和user_list
    ftpusers:将被禁止登录ftp服务器
    user_list:可能被禁止,具体取决于vsftpd.conf,
      当userlist_enable=YES,user_list文件生效,表示禁用
       当userlist_enable=NO,user_list文件失效,表示此文件内的用户可以登陆
       当userlist_deny=YES,仅禁用user_list的用户登录
       当userlist_deny=NO,仅允许user_list的用户登录

  • 主配置文件vsftp.conf
    在vsftpd的主配置文件中,配置行采用“配置项=参数”的格式。下面是vsftpd.conf文件中常见的一些配置项及含义说明。

    配置示例
    含义说明
    匿名用户
    anonymous_enable=YES
    是否允许匿名访问
    anon_umask=022
    设置匿名用户上传文件的默认权限
    anon_root=/var/ftp
    设置匿名用户的FTP根目录(缺省为/var/ftp/)
    anon_upload_enable=YES
    是否允许匿名用户上传文件
    anon_mkdir_write_enable=YES
    是否允许匿名用户创建目录的写入权限
    anon_other_write_enable=YES
    是否允许匿名用户有其他的写入权限。比如文件覆盖,删除,更改
    anon_max_rate=0
    限制匿名用户最大传输速度,单位为字节
    本地用户
    local_enable=YES
    是否允许本地系统用户访问
    local_umask=022
    设置本地用户所上传文件的默认权限掩码值
    local_root=/var/ftp
    设置本地用户的FTP根目录(缺省为用户的宿主目录)
    chroot_local_user=YES
    是否将FTP用户禁锢在宿主目录中
    local_max_rate=0
    限制用户的最多传输速率(0为无限制),单位默认为字节
    全局配置listen=YES
    是否以独立运行的方式监听服务
    listen_port=21
    设置监听FTP服务的端口号
    write_enable=YES
    启用任何形式的写入权限(如上传、删除文件等)都需要开启此项
    download_enable=YES
    是否允许下载文件(建议仅限于浏览、上传的FTP服务器时可将其设为NO)
    dirmessage_enable=YES
    用户切换进入目录时显示.message文件(如果存在)的内容
    xferlog_enable=YES
    启动xferlog日志,默认记录在“\var\log\xferlog”文件
    xferlog_std_format=YES
    启用标准的xferlog日志格式若禁用此项,将使用vsftpd自己的日志格式
    dual_log_enable=YES
    启用采用VSFTPD自己的日志记录方式
    log_ftp_protocol=YES
    记录所有的ftp命令日志
    syslog_enable=YES
    是否将在日志信息写入系统日志(/var/log/messages中)
    connect_from_port_20=YES
    允许服务器主动模式(从20端口建立数据连接)
    pasv_enable=YES
    允许被动模式连接
    pasv_max_port=24600
    设置用于被动模式的服务器最大端口号
    pasv_min_port=24500
    设置用于被动模式的服务器最小端口号
    pam_service_name=vsftpd
    设置用于用户认证的PAM文件位置(/etc/pam.d/目录中对应得文件名)
    userlist_enable=YES
    是否启用user_list用户列表
    userlist_deny=YES
    是否禁用user_list列表文件中的用户账号
    max_per_ip=0
    对于来自相同IP地址的客户端,最多允许多个并发连接(0无限制)
    tcp_wrappers=YES
    是否启用TCP_Wrappers主机访问控制(TCP Wrappers的应用将在后续讲解)
    ssl_enable=YES

    allow_anon_ssl=NO

  • 安装前检查环境
    检查版本安装vsftpd:#rpm -qa |grep vsftpd
    检查安装版本信息:#rpm -qv vsftpd
    检查配置防火墙:开放TCP21端口
    最好关闭selinux

  • 启动vsftpd前的配置
    以下俩个操作时在启动前进行配置,如果没有配置则无法正常登陆vsftpd服务器,如果使用Centos6.x之前的版本则只需要关闭SELinux
    #setsebool ftpd_disable_trans 1                 #解除SELinux保护
    #setsebool -P ftp_home_dir=1                    #解除无法列出服务器目录的情况
    如果没有#setsebool -P ftp_home_dir=1则,当连接FTP时出现

    500 OOPS: change directory:/home/ftp
    500 OOPS: 500 OOPS:Child died

  • Vsftpd特殊属性配置参数(均在vsftpd.conf完成)
    pasv_enable=no#将FTP设为被动模式
    local_max_rate=300000#限制上传下载为300K,1KB=1000Btyes

    • 配置特定用户的带宽
      #vi /etc/vsftpd/vsftpd.conf
      user_config_dir=/etc/vsftpd/limit#默认没有,必须加
      #mkdir /etc/vsftpd/limit#创建管理用户带宽的配置文件夹
      #vi /etc/vsftpd/limit/ken#创建针对ken用户上传带宽的限制的配置文件

      local_max_size=300000#配置ken用户带宽为300KB
    • 限制客户端可连接的IP地址利用tcp_wrappers host.deny host.allow
      #vi /etc/vsftpd/vsftpd.conf
      tcp_wrappers=YES#检查是否为YES
      #vi /etc/hosts.deny#编辑限制配置文件
      vsftpd:all:Deny#限制所有网段都不可连接
    • #vi /etc/hosts.allow
      vsftpd:192.168.233.*:Allow#开发192.168.233网段可以连接
    • 限制黑名单用户
      #vi /etc/vsftpd/vsftpd.conf
      userlist_enable=YES#默认为YES,如果为NO则黑名单不生效
      #vi /etc/vsftpd/user_list                #编辑黑名单
    • 禁止用户切换目录
      #vi /etc/vsftpd/vsftpd.conf
      chroot_local_user=YES                        #默认不启用,去掉#表示启用


  • 建立基于虚拟用户的vsftpd服务安装与配置

    • 安装支持虚拟用户插件
      #yum -y install db4-utils
    • 建立用户名密码列表文件
      #vi /etc/vsftpd/vusers.list
      mike#用户
      123#对应密码
      yilang#用户
      123#对应密码
    • 使用db_load工具将列表文件转化为DB数据库文件
      #cd /etc/vsftpd/
      #db_load -T -t hash -f vusers.list vusers.db
    • 建立FTP访问的根目录虚拟用户对应的系统账号
      #useradd -d /var/ftproot -s /sbin/nologin virtual
      chmod 755 /var/ftproot/                                        #上传下载目录存放地
      ls -lh /boot/ > /var/ftproot/vutest.file#建立测试文件
    • 建立PAM认证文件
      #vi /etc/pam.d/vsftpd.vu
      #%PAM-1.0
      auth    required        pam_userdb.so db=/etc/vsftpd/vusers
      account required        pam_userdb.so db=/etc/vsftpd/vusers
    • 修改vsftpd.conf,添加虚拟用户支持
      #vi /etc/vsftpd/vsftpd.conf
      anonymous_enable=NO
      local_enable=YES                        #使用虚拟用户需要启动本地
    • write_enable=YES                        #启用任何形式的写入权限
      anon_umask=022                                #文件上传的权限
      guest_enable=YES#启用映射
      guest_username=virtual#将映射用户指导virtual
      pam_service_name=vsftpd.vu#修改使用PAM文件位置

  • 创建完虚拟用户之后所有虚拟用户登陆权限都相同,需要为不同的虚拟用户建立独立的配置文件(权限)

    • 为yilang的虚拟用户建立独立的配置文件
      #vi /etc/vsftpd/vsftpd.conf
      user_config_dir=/etc/vsftpd/vusers_dir
      #mkdir /etc/vsftpd/vusers_dir/
      cd /etc/vsftpd/vusers_dir/
      #vi yilang
      local_root=/ftpdatavg1fs/ftproot/yilang     #使用户不能离开主目录(禁锢)

      anon_upload_enable=YES                            #可上传
      anon_mkdir_write_enable=YES                    #可创建文件夹
      anon_other_write_enable=YES                    #是否允许匿名用户有其他的写入权限。比如文件覆盖,删除,更改

  • 后期操作维护

    • 添加虚拟账户
      例如:添加zhangsan虚拟账户,分配只能上传权限;并且禁止离开主目录
      #vi /etc/vsftpd/vusers.list
      zhangsan        #账户名
      123456          #密码
      #db_load -T -t hash -f vusers.list vusers.db#刷新DB数据库
      分配zhangsan的登录权限
      1.配置主配置文件
        #vi vsftpd.conf
        chroot_list_enable=YES
      2.建立zhangsan的独立根目录文件
        #mkdir /ftpdatavg1fs/ftproot/zhangsan                        #
        #chown -R virtual.virtual /ftpdatavg1fs/ftproot/zhangsan    #注意一定要给权限
      3.配置虚拟指定用户根目录,这里以zhangsan为例
        #vi /etc/vsftpd/vuser_dir/zhangsan            #配置权限文件
        local_root=/ftpdatavg1fs/ftproot/zhangsan     #指定根目录
        anon_upload_enable=YES                        #可上传
      #service vsftpd reload

    • 修改虚拟用户密码
      例如:修改zhangsan密码为163.com
         #vi /etc/vsftpd/vusers.list#在配置文件修改zhangsan下一行的字符
         zhangsan
         123456    修改为163.com保存退出
      #db_load -T -t hash -f vusers.list vusers.db#刷新DB数据库
      #service vsftpd reload

  • Vsftp的使用SSL/TLS加密传输(安装与配置)

    • ftp默认的传输数据是明文,弄个抓包软件就可以通过数据包来分析到账号和密码,为了搭建一个安全性比较高ftp,可以结合SSL来解决问题
    • 检查vsftp是否支持SSL:从2.0.0版本开始,vsftpd支持命令连接和数据连接的加密传输。vsftpd服务器版本查看:rpm -qa vsftpd    输出:vsftpd-2.2.2-11.el6.i686
    • 检查vsftp是否支持SSL:ldd /usr/sbin/vsftpd | grep libssl,如果输出类似与libssl.so.10 => /usr/lib/libssl.so.10 (0x00dfb000),那么支持。如果不支持,那么重新编译vsftp,然后再重新安装
    • 用openssl生成vsftpd的证书:openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/certs/vsftpd.pem -out /etc/pki/tls/certs/vsftpd.pem
    • 修改vsftpd.conf,设置强制启用ssl
      vsftpd配置文件支持SSL设置
      ssl_enable=YES
      allow_anon_ssl=NO
      force_local_data_ssl=YES
      force_local_logins_ssl=YES
      ssl_tlsv1=YES
      ssl_sslv2=NO
      ssl_sslv3=NO
      ssl_ciphers=HIGH

      rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem
      #implicit_ssl=no             // 是否启用隐式ssl功能,不建议开启
      #listen_port=990             // 隐式ftp端口设置,如果不设置,默认还是21,但是当客户端以隐式ssl连接时,默认会使用990端口,导致连接失败!!
      #debug_ssl=YES               // 输出ssl相关的日志信息



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-38344-1-1.html 上篇帖子: CentOS6.5下部署vsftpd 下篇帖子: vsftpd环境下的创建本地yum源镜像
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表