zoukankan      html  css  js  c++  java
  • vsftpd 安装配置详细教程

    linux下ftp软件不少,大致特点:<br /> wu-ftp:比较老牌,但针对它的攻击比较多,设置比较麻烦,但功能比较强大。<br /> vsftpd:功能强大,配置也比较简单
     

    linux下ftp软件不少,大致特点:
    wu-ftp:比较老牌,但针对它的攻击比较多,设置比较麻烦,但功能比较强大。
    ProFTPD:能实现wu-ftp以及server-U的所有功能。安全性也较高,但比起vsftpd配置稍显复杂。
    vsftpd:功能强大,配置也比较简单

    选vsftpd是因为它安全、速度快。
    选ProFTPD偶尔看到webmin支持他,所以就用了,因为方便。
    选Serv-U理由windows普遍,Serv-U方便,但最大问题是盗版,所以现在不大用了。

    一、安装
    # yum install vsftpd

    二、安装db4包,使能db_load
    # yum install db4.i386
    # yum install db4-utils.i386

    三、vsftpd文件说明
    /etc/vsftpd/vsftpd.conf     主配置文件
    /usr/sbin/vsftpd            Vsftpd的主程序
    /etc/rc.d/init.d/vsftpd     启动脚本
    /etc/pam.d/vsftpd           PAM认证文件(此文件中file=/etc/vsftpd/ftpusers字段,指明阻止访问的用户来自/etc/vsftpd/ftpusers文件中的用户)
    /etc/vsftpd/ftpusers        禁止使用vsftpd的用户列表文件。记录不允许访问FTP服务器的用户名单,管理员可以把一些对系统安全有威胁的用户账号记录在此文件中,以免用户从FTP登录后获得大于上传下载操作的权利,而对系统造成损坏。(注意:linux-4中此文件在/etc/目录下)
    /etc/vsftpd/user_list       禁止或允许使用vsftpd的用户列表文件。这个文件中指定的用户缺省情况(即在/etc/vsftpd/vsftpd.conf中设置userlist_deny=YES)下也不能访问FTP服务器,在设置了userlist_deny=NO时,仅允许user_list中指定的用户访问FTP服务器。(注意:linux-4中此文件在/etc/目录下)
    /var/ftp                    匿名用户主目录;本地用户主目录为:/home/用户主目录,即登录后进入自己家目录 
    /var/ftp/pub                匿名用户的下载目录,此目录需赋权根chmod 1777 pub(1为特殊权限,使上载后无法删除)
    /etc/logrotate.d/vsftpd.log 日志文件

    四、关闭防火墙
    # service iptables stop

    五、关闭SELinux
    方法有多个
    1、暂时关闭(不需要重启)
    # setenforce 0 (关闭)
    # setenforce 1 (启用)
    # getenforce   (查看状态)

    2、编辑配置文件(永久关闭需要重启)
    # vi /etc/selinux/config
    将SELINUX=enforcing改为:SELINUX=disabled

    六、配置匿名用户访问
    0、备份配置文件:
    # cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak

    1、vsftpd安装后,其配置文件所在目录为:/etc/vsftpd/;匿名用户的主目录为:/var/ftp
    2、 配置vsftpd.conf主配置文件(服务器配置支持上传)
    # vi /etc/vsftpd/vsftpd.conf
     

    复制代码代码如下:
    anonymous_enable=YES        (允许匿名用户访问)
    anon_upload_enable=YES      (允许匿名用户上传文件)
    anon_mkdir_write_enable=YES (允许匿名用户创建目录)

    3、创建上传目录及配置目录权限(注意:匿名用户的主目录/var/ftp权限是755,这个权限不能随意改变,否则客户端无法连接)
     

    复制代码代码如下:

    # mkdir /var/ftp/homework/
    # chown ftp /var/ftp/homework/
    # ls -Zd /var/ftp/homework/             (查看上下文)
    drwxrwxr-x  ftp ftp user_u:object_r:public_content_t /var/ftp/homework/
    # chcon -t public_content_rw_t /var/ftp/homework/   (修改上下文,使可写)
    # ls -Zd /var/ftp/homework/             (查看确认上下文)
    drwxrwxr-x  ftp ftp user_u:object_r:public_content_rw_t /var/ftp/homework/

    (若未关闭SELinux,还需以下步骤)
    # getsebool -a | grep ftp               (查找与ftp相关的 SELinux bool值)
    # setsebool -P allow_ftpd_anon_write 1  (设置SELinux bool值, 允许ftpd写, -P选项表示写入配置文件并永久生效)

    4、重启服务
    # service vsftpd restart

    5、客户端连接测试
    (1) 客户端匿名用户可从pub下载文件
    (2) 客户端匿名用户上传文件至homework, 上传文件的默认权限属性为600(配置文件中anon_umask=077),无法下载、删除或覆盖的。

    七、配置虚拟用户访问
    1、建立虚拟用户口令库文件, 文件中奇数行设置虚拟用户的用户名,偶数行设置用户的口令。
    # vi /etc/vsftpd/vuser.txt
    teacher      (奇数行设置虚拟用户名)
    123456      (偶数行设置用户口令)
    student
    123456

    2、生成vsftpd 的认证文件
    # db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db   (生成认证文件)
    # file  /etc/vsftpd/vuser.db         (查看文件类型)
    /etc/vsftpd/vuser.db:Berkeley DB (Hash,version  8 , native byte-order)
    # chmod 600 /etc/vsftpd/vuser.db     (生成的认证文件的权限应设置为只对root用户可读可写)

    3、建立虚拟用户所需的PAM配置文件
    # vi /etc/pam.d/vsftpd
     

    复制代码代码如下:
    auth    required        /lib/security/pam_userdb.so     db=/etc/vsftpd/vuser    (注:无须后缀.db)
    account required        /lib/security/pam_userdb.so     db=/etc/vsftpd/vuser

    4、建立vsftpd虚拟用户所需的系统用户账号并设置相应的权限, 所有虚拟用户账号登录后都将在/var/ftp目录
     

    复制代码代码如下:
    # useradd -s /sbin/nologin -d /var/ftp/ vuser
    # chmod u-w /var/ftp/

    5、设置vsftpd.conf主配置文件
    # vi /etc/vsftpd/vsftpd.conf
     

    复制代码代码如下:

    local_enable=YES
    guest_enable=YES
    guest_username=vuser
    pam_service_name=vsftpd (vsftpd意指:/etc/pam.d/目录下的vsftpd文件)

    (以下为可选项)
    local_umask=022         (虚拟用户上传文件的掩码)
    anon_umask=077          (匿名用户上传文件的掩码)
    chown_uploads=YES       (允许改变上传文件的属主)
    chown_username=vuser    (改变上传文件的属主为vuser)

    6、重启vsftpd服务
    # service vsftpd restart

    7、测试vsftpd中的虚拟用户账号teacher
    #ftp 127.0.0.1
    name (localhost:root):teacher
    password:
    ftp>

    8、对不同的虚拟用户设置不同的权限
    (1).设置主配置文件
    # mkdir /etc/vsftpd/vuser_conf          (建立用户配置文件的保存目录)
    # vi /etc/vsftpd/vsftpd.conf
    user_config_dir=/etc/vsftpd/vuser_conf  (设置用户配置文件的保存目录)

    (2). 为虚拟用户建立单独的配置文件,配置文件名称和用户名相同。用户配置文件中没有的配置项将按照vsftpd.conf配置文件中的内容设置。
    # vi /etc/vsftpd/vuser_conf/teacher
     

    复制代码代码如下:
    anon_world_readable_only=NO   (表示用户可以浏览FTP目录和下载文件)
    anon_upload_enable=YES        (表示用户可以上传文件)
    anon_mkdir_write_enable=YES   (表示用户具有建立和删除目录的权利)
    anon_other_write_enable=YES   (表示用户具有文件改名和删除文件的权限)

    (3) 重启服务
    # service vsftpd restart

    八、配置并启动防火墙
    1、设置被动模式及使用的端口号
    # vi /etc/vsftpd/vsftpd.con
     

    复制代码代码如下:
    pasv_enable=YES
    pasv_min_port=65300
    pasv_max_port=65360

    2、添加允许的端口
     

    复制代码代码如下:
    # iptables -I INPUT -p tcp --dport 21 -j ACCEPT
    # iptables -I INPUT -p tcp --dport 65300:65360 -j ACCEPT
    # service iptables save     (保存配置)

    3、重启服务
     

    复制代码代码如下:
    # service vsftpd restart
    # service iptables start

    九、常见错误及解决方法
    1、vsftpd: refusing to run with writable root inside chroot()
    -> 原因:vsftpd升级了安全性验证, 即如果开启了chroot来控制用户路径,则用户不能再具有根目录的写权限。
    -> 解决:# chmod u-w /var/ftp/

    2、cannot change directory:/var/ftp
    -> 原因:SELinux阻止访问
    -> 解决:
    # setsebool -P ftpd_disable_trans 1
    # service vsftpd restart

    3、上传文件的中文文件名乱码
    -> 原因:字符集问题
    -> 解决:
    (1) # vi /etc/sysconfig/i18n
    LANG="zh_CN.GB18030"
    (2) 客户端软件设置字体为中文字体,连接字符集为GBxxx或cp936

    4、提示只允许匿名用户登录
    -> 解决:在vsftpd.conf中设置
    local_enable=YES

  • 相关阅读:
    selenium + python 环境配置 (三)之启动chrome
    selenium + python 环境配置 (二)之启动IE
    selenium + python 环境配置 (一)
    知源图四点坐标和目标图四点坐标,求透视变换矩阵
    memset()初始化为1的那些事
    NSOJ 4621 posters (离散化+线段树)
    申请到新博客了好开心
    SpringCloud之Hystrix-Dashboard监控,以及踩的坑...
    SpringBoot中在除Controller层 使用Validation的方式
    Docker安装ElasticSearch 以及使用LogStash实现索引库和数据库同步
  • 原文地址:https://www.cnblogs.com/hechunhua/p/7422835.html
Copyright © 2011-2022 走看看