zoukankan      html  css  js  c++  java
  • Linux(CentOS)下的vsftpd服务器配置-五岳之巅

    说明:VSFTPD这款软件,网上和书里有很多配置文章,但不一定适用于您的主机,不同版本默认值不一样,我现在使用的是vsftpd-2.0.5-12.el5_3.1。
    千万记住:修改配置文件后,必须重新启动服务!!!

    登录FTP有三种方式,匿名登录、本地用户登录和虚拟用户登录。

    匿名登录:在登录FTP时使用默认的用户名,一般是ftp或anonymous。
    本地用户登录:使用系统用户登录,在/etc/passwd中。
    虚拟用户登录:这是FTP专有用户,有两种方式实现虚拟用户,本地数据文件和数据库服务器。
    FTP虚拟用户是FTP服务器的专有用户,使用虚拟用户登录FTP,只能访问FTP服务器提供的资源,大大增强了系统的安全。

    1、允许匿名上传:
    anonymous_enable=YES
    local_enable=YES
    write_enable=YES
    local_umask=022
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    dirmessage_enable=YES
    xferlog_enable=YES
    connect_from_port_20=YES
    xferlog_std_format=YES
    listen=YES
    pam_service_name=vsftpd
    userlist_enable=YES
    tcp_wrappers=YES
    可见,几乎没有对默认值作任何改动,就是打开了anon_upload_enable=YES
    这是成功的第一步,接下来,必须要注意:
    在pub下新建一个目录mypub
    chmod o+w mypub
    注意,目录必须other可以w,尤其是必须有可写和可执行权限,否则进不到目录中,原因在于目录和文件的权限意义不同。这方面的内容请参考基础知识。
    如不能上传,请将防火墙和SELinux关闭即可。
    这样就能够匿名访问,并上传文件了,此外还能够创建文件夹。


    2、允许匿名上传、下载:
    加入:
    anon_umask=022,
    这样上传的文件才能是-rw-r--r-- ,而非-rw-------。这很重要。
    于是就能下载-rw-r--r--属性的文件了。
    但是,刚才有的-rw-------属性的文件怎么办呢?能不能改成-rw-r--r--呢?其实是可以的,只能靠主服务器用户更改了,尤其是root。在ftp里是改不了的。
    但是不是什么都不能改,比如加入:
    anon_other_write_enable=YES
    现在用ftp对服务器上的文件进行删除、更名就可以了。

    3、本地账号登录:
    首先,禁用匿名登录,修改配置文件,注释掉所有的anon行。
    #anonymous_enable=YES
    #anon_world_readable_only=YES
    #anon_upload_enable=YES
    #anon_mkdir_write_enable=YES
    #anon_umask=022
    #anon_other_write_enable=YES
    其次,准备开放指定用户
    该步骤就是向系统说明那些用户可以登录,那些则不能登录。
    /etc/vsftpd/ftpusers  是禁止登录的用户文件
    /etc/vsftpd/user_list  是允许登录的用户文件
    在/etc/vsftpd/vsftpd.conf配置文件中进行修改,
    userlist_enable=NO
    然后,创建jinzhi写入ftpuser创建keyi写入user_list,创建yiban,不用做任何事情,但它们当然要设置密码了。
    重启vsftp服务。
    此时,jinzhi不能登录,是到输入密码后拒绝的。使用keyi和一般用户yiban都能正常进入。
    注意:这里面说个细节,如果服务已经在运行,修改配置文件后,只有restart才能重新读取新值,重新执行start是不能的。当然也可以先stop,再start,这是可以的,如果你不嫌麻烦的话。
    接着进行如下设置:
    userlist_enable=YES
    userlist_deny=NO
    这里,local_enable=YES必须打开,PAM方式要求。否则会出现both local and anonymous access disabled!错误。
    这时用jinzhi和yiban都不能登录,甚至连输入密码的地方都到不了就拒绝了。用keyi就能正常登录。
    附带的说一下,如果把这两项都禁止,
    #userlist_enable=YES
    #userlist_deny=NO
    效果和userlist_enable=NO是一样的。也就是说上两个的默认值是也。
    如果:
    userlist_enable=NO
    #userlist_deny=NO
    jinzhi到了输入密码后被拒绝,keyi、yiban却能正常登录。
    所以应该这样理解,ftpuser文件不论什么情况下都是不能登录用户的名单。
    现在又设置成:
    userlist_enable=YES
    userlist_deny=YES
    jinzhi和keyi都不能登录,jinzhi到输入密码被拒,keyi连密码都不能输入就被拒了。而yiban能够登录成功。
    回想
    userlist_enable=YES
    userlist_deny=NO
    这种配置时,jinzhi和yiban都没到输入密码就拒了,keyi能够正常访问。
    可以看出,userlist_deny控制的是user_list中以及一般用户的访问限制,它是一个两项AB开关,选择关B,则A开,把A关上,则B开。如果否决user_list访问,也即userlist_deny=YES,keyi则不能登录,一般的开关打开。如果开放userlist_deny=NO,则keyi能访问,而yiban被拒。
    userlist_enable=NO
    userlist_deny=NO
    这时jinzhi不能进入,keyi和yiban都能登录。
    userlist_enable=NO
    userlist_deny=YES
    和上面一样,jinzhi不能进入,keyi和yiban都能登录。
    可见,只要是userlist_enable=NO,deny的值是没用的。这时只要不是在ftpusers里的用户都能访问。把enable开成YES,则deny开关才有用,而且只有deny才是真正控制访问的开关了。

    现在到了开始总结的时候了:
    1、不论何时,ftpusers里的清单都是绝对不能访问的,它是vsftpd的第一道关,即便是你把ftpusers里的人名放到了可访问的user_list中也是不行的,因为他没有过ftpusers,和ftpusers最大,有冲突得听它的。
    2、和ftpusers没有冲突的,就是说不在ftpusers里的人名,分为两种:一个是user_list,一个是系统里别的用户名。和ftpusers没有冲突的这个大项的开关是userlist_enable,设为NO,就是不考虑user_list文件,就是不考虑细分,就是同时开放这两种小类型,说明只要不在黑名单里的人都能访问。
    3、如果你又想细分,则打开开关userlist_enable=YES,在这个前提下,用单极开关userlist_deny控制user_list名单启用与否,deny=YES,则禁止user_list名单而开放系统其他用户,deny=NO,则开放user_list名单,而禁止系统其他用户。
    4、所以,userlist_enable是“细不细分开关”,而userlist_deny是“如何细分开关”
    现在大家能明白了吧?
    此外,这时用户可以查看系统下的任意目录,非常不安全。怎么控制用户不能随意访问其它目录呢?
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd/chroot_list
    取消这两项前的#号,新建文件 vi /etc/vsftpd/chroot_list
    写入两行,每行一个人名
    keyi
    yiban
    保存,退出vi。重启服务,就可以了。

    4、限制用户上传速度:
    a、限制匿名上传:anon_max_rate=4000
    b、限制本地帐号上传速度:local_max_rate=5000
    4000和5000指4K和5k
    c、针对不同用户设置不同速度:
    编辑vsftp.conf增加 user_config_dir=/etc/vsftpd/userconf
    再创建目录mkdir /etc/vsftpd/userconf
    新建文件,并写入内容vi /etc/vsftpd/userconf/keyi
    local_max_rate=30000
     
    5、显示欢迎词
    如果是单行很简短的话则很简单,在配置文件中设置ftpd_banner行即可
    ftpd_banner=欢迎来到刘凯主机ftp
    如果想显示多行,则加入
    banner_file=/etc/vsftpd/banner_file,接着新建文件/etc/vsftpd/banner_file,写入你想说的话,重启服务即可,注意banner_file和ftpd_banner只显示其一,优先显示文件的。
    我们可以在/var/ftp下的各个目录(包括/var/ftp)下建立.message文件,这样用户进入这个目录时vsftpd将显示.message的内容,你可以在这里面写上欢迎信息或者注意事项等等,让你的ftp更加个性化。
    首先可以在公共目录/var/ftp/pub下建立一个.message文件,写入"你好",再将其拷贝至/home/keyi和/home/yiban下。将/home/yiban/.message改成“你不好”,于是当大家进入pub目录时提示“你好”,或当keyi进入自己目录时,提示“你好”,但yiban进入自己目录却提示“你不好”。
    你想让谁登陆成功后在哪显示什么提示信息,就把.message文件放到什么目录下就OK了。
     
     
    6、限定服务器的载荷量
    首先是同一时刻总的联机数,使用max_clients设置,比如:max_clients = 1000,则当前最多处理1000个联机量。默认值为0,表示不限。
    此外,有的人用个人PC大量恶意访问FTP服务器,使FTP服务器负载过重,这时使用max_per_ip选项就能解决。如设置max_per_ip = 1,则表示一个IP只能开一个访问。默认值为0,表示不限制,看来默认值是比较宽松的。
     
     
     
    7、虚拟ftp用户设置
    1. 添加虚拟用户口令文件vi /etc/vsftpd/login.txt
    添加虚拟用户名和密码,一行用户名,一行密码,以此类推。奇数行为用户名,偶数行为密码。
    laoda #用户名
    11111 #密码
    laoer #用户名
    222222 #密码
    2. 生成虚拟用户口令认证文件
    将刚添加的login.txt虚拟用户口令文件转换成系统识别的口令认证文件。
    默认没有安装db4-utils软件,用命令yum install db4-utils,安装完成后
    cd /etc/vsftpd
    使用db_load命令生成虚拟用户口令认证文件:
    db_load -T -t hash -f login.txt login.db
    3. 编辑vsftpd的PAM认证文件
    在/etc/pam.d目录下,vi /etc/pam.d/vsftpd
    将里面其他的都注释掉,添加下面这两行:
    auth    required        /lib/security/pam_userdb.so     db=/etc/vsftpd/login
    account required        /lib/security/pam_userdb.so     db=/etc/vsftpd/login
    注意:它们中间的不是空格,都是一个tab。
    4. 建立本地映射用户并设置宿主目录权限
    所有的FTP虚拟用户需要使用一个系统用户,这个系统用户不需要密码。
    useradd –d /home/vftpsite –s /sbin/nologin vftpuser
    chmod 700 /home/vftpsite
    5. 配置vsftpd.conf(设置虚拟用户配置项)
    vi /etc/vsftpd/vsftpd.conf,增加:
    guest_enable=YES #开启虚拟用户
    guest_username=vftpuser #FTP虚拟用户对应的系统用户
    pam_service_name=vsftpd #PAM认证文件
    重启服务,就可以用虚拟用户登陆了。
     
    8、使用quota为ftpuser加入磁盘限额,避免恶意垃圾数据塞满硬盘(略)

    9、练习
    练习一:
    创建两个本地用户进行登录,zhangsan(123456)、lisi(654321,写入userlist中),进一步设定完成两种状态:zhangsan能登陆,lisi不行,限定zhangsan上传速度为3000;zhangsan和lisi都可以登录,限定lisi上传速度为4000。

    练习二:
    创建虚拟用户zhangsan(123456)、lisi(654321),使用虚拟用户进行登录,登录后显示提示:
    “Attention 
    cognitive
    concentrating 
    on one aspect of the environment”,设定每台电脑最多只能开2个访问,FTP主机同时最多处理100个并发访问。
  • 相关阅读:
    Java web学习总结
    java web知识点
    SSH进阶之路
    file /etc/httpd/conf.d/php.conf from install of php-5.6.37-1.el7.remi.x86_64 conflicts with file from package mod_php71w-7.1.18-1.w7.x86_64
    centos7上安装php5.6
    centos7 删除php
    centos7删除yum安装的php
    给服务器加内存
    Hyperledger Fabric 开发环境搭建 centos7系统
    79
  • 原文地址:https://www.cnblogs.com/comsky/p/5826244.html
Copyright © 2011-2022 走看看