zoukankan      html  css  js  c++  java
  • 实现验证的vsftpd虚拟用户

    实现基于文件验证的vsftpd虚拟用户--(一台)

    一、创建用户数据库文件

    vim /etc/vsftpd/vuser
    
    cd /etc/vsftpd/
    
    db_load -T -t hash -f vusers.txt vusers.db //利用文本生成虚拟用户的数据库文件
    
    chmod 600 vusers.db //实现基于文件验证的vsftpd虚拟用户

    二、创建用户和访问FTP目录

    useradd -d /var/ftproot -s /sbin/nologin vuser
    
    chmod +rx /var/ftproot/

    centos7 还需要执行以下操作:

    chmod -w /var/ftproot/
    
    mkdir /var/ftproot/upload
    
    setfacl -m u:vuser:rwx /var/ftproot/upload

    三、创建pam配置文件

    vim /etc/pam.d/vsftpd.db
    
    auth required pam_userdb.so db=/etc/vsftpd/vusers
    
    account required pam_userdb.so db=/etc/vsftpd/vusers

    四、指定pam配置文件

    vim /etc/vsftpd/vsftpd.conf
    
    guest_enable=YES
    
    guest_username=vuser
    
    pam_service_name=vsftpd.db

    五、SELinux设置:

    禁用SELinux 或者 setsebool -P ftpd_full_access 1

    六、虚拟用户建立独立的配置文件

    mdkir /etc/vsftpd/vusers.d/ //创建配置文件存放的路径
    
    vim /etc/vsftpd/vsftpd.conf
    
    user_config_dir=/etc/vsftpd/vusers.d/
    
    cd /etc/vsftpd/vusers.d/ //进入此目录
    
    //允许wang用户可读写,其它用户只读
    
    vim zhao //创建各用户自已的配置文件
    
    anon_upload_enable=YES
    
    anon_mkdir_write_enable=YES
    
    anon_other_write_enable=YES
    
    vim qian //创建各用户自已的配置文件
    
    local_root=/ //登录目录改变至指定的目录

    结果:用户zhao

      1 [root@234c27 ~]# ftp 192.168.234.17
      2 Connected to 192.168.234.17 (192.168.234.17).
      3 220 (vsFTPd 3.0.2)
      4 Name (192.168.234.17:root): zhao
      5 331 Please specify the password.
      6 Password:
      7 230 Login successful.
      8 Remote system type is UNIX.
      9 Using binary mode to transfer files.
     10 ftp> pwd
     11 257 "/"
     12 ftp> ls
     13 227 Entering Passive Mode (192,168,234,17,75,202).
     14 150 Here comes the directory listing.
     15 drwxrwxr-x    2 0        0               6 Aug 18 02:11 upload
     16 226 Directory send OK.
     17 ftp>
    

    结果:用户qian

      1 [root@234c27 ~]# ftp 192.168.234.17
      2 Connected to 192.168.234.17 (192.168.234.17).
      3 220 (vsFTPd 3.0.2)
      4 Name (192.168.234.17:root): qian
      5 331 Please specify the password.
      6 Password:
      7 230 Login successful.
      8 Remote system type is UNIX.
      9 Using binary mode to transfer files.
     10 ftp> cd /
     11 250 Directory successfully changed.
     12 ftp> ls
     13 227 Entering Passive Mode (192,168,234,17,218,169).
     14 150 Here comes the directory listing.
     15 lrwxrwxrwx    1 0        0               7 Aug 16 02:04 bin -> usr/bin
     16 dr-xr-xr-x    5 0        0            4096 Aug 17 01:45 boot
     17 drwxr-xr-x   20 0        0            3340 Aug 17 12:10 dev
     18 drwxr-xr-x  130 0        0            8192 Aug 18 02:10 etc
     19 drwxr-xr-x    2 0        0               6 Apr 11 04:59 home
     20 lrwxrwxrwx    1 0        0               7 Aug 16 02:04 lib -> usr/lib
     21 lrwxrwxrwx    1 0        0               9 Aug 16 02:04 lib64 -> usr/lib64
     22 drwxr-xr-x    2 0        0               6 Apr 11 04:59 media
     23 drwxr-xr-x    2 0        0               6 Apr 11 04:59 mnt
     24 drwxr-xr-x    3 0        0              16 Aug 16 02:18 opt
     25 dr-xr-xr-x  188 0        0               0 Aug 17 12:09 proc
     26 dr-xr-x---    8 0        0             271 Aug 18 02:43 root
     27 drwxr-xr-x   37 0        0            1120 Aug 18 02:32 run
     28 lrwxrwxrwx    1 0        0               8 Aug 16 02:04 sbin -> usr/sbin
     29 drwxr-xr-x    2 0        0               6 Apr 11 04:59 srv
     30 dr-xr-xr-x   13 0        0               0 Aug 17 12:10 sys
     31 drwxrwxrwt   20 0        0            4096 Aug 18 02:41 tmp
     32 drwxr-xr-x   13 0        0             155 Aug 16 02:04 usr
     33 drwxr-xr-x   23 0        0            4096 Aug 18 02:10 var
     34 226 Directory send OK.
     35 ftp>

    实现基于MYSQL验证的vsftpd虚拟用户--(两台)

    说明:本实验在两台CentOS7主机上实现,一台做为FTP服务器,一台做数据库服务器

    一、安装所需要包和包组:

    在数据库服务器上安装包:

    Centos7:在数据库服务器上安装 192.168.234.27

    yum –y install mariadb-server
    
    systemctl start mariadb.service
    
    systemctl enable mariadb

    centos7:无对应rpm包,需手动编译安装 192.168.234.17

    yum -y groupinstall "Development Tools"
    
    yum -y install mariadb-devel pam-devel vsftpd
    
    下载pam_mysql-0.7RC1.tar.gz
    
    tar xvf pam_mysql-0.7RC1.tar.gz
    
    cd pam_mysql-0.7RC1/
    
    ./configure --with-pam-mods-dir=/lib64/security --with-mysql=/usr --with-pam=/usr
    
    make
    
    make install

    二、在数据库服务器上创建虚拟用户账号

    1.建立存储虚拟用户数据库和连接的数据库用户

    mysql> CREATE DATABASE ftpdb;
    
    mysql> SHOW DATABASES;
    
    //ftp服务和mysql不在同一主机:
    
    mysql> GRANT SELECT ON vsftpd.* TO vsftpd@'192.168.234.17' IDENTIFIED BY 'centos';
    

    2.准备相关表

    mysql> USE ftpdb;  //创建数据库
    
    Mysql> SHOW TABLES;
    
    mysql> CREATE TABLE users (
    
    id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
    
    name CHAR(50) BINARY NOT NULL,
    
    password CHAR(48) BINARY NOT NULL
    
    );
    
    mysql>DESC users;
    
    //测试连接
    
    mysql -uwang -h 192.168.234.17 -pcentos
    
    mysyl> SHOW DATABASES;
    

    3.添加虚拟用户

    根据需要添加所需要的用户,为了安全应该使用PASSWORD函数加密其密码后

    存储

    mysql>DESC users;
    
    mysql> INSERT INTO users(name,password) values(‘wang',password('centos'));
    
    mysql> INSERT INTO users(name,password) values(‘mage',password('centos'));
    
    mysql> INSERT INTO users(name,password) values(‘ftp1',password('centos'));
    
    mysql> INSERT INTO users(name,password) values(‘ftp2',password('centos'));
    
    mysql> SELECT * FROM users;
    //在数据库中建立4个帐号

    三、在FTP服务器上配置vsftpd服务

    1.在FTP服务器上建立pam认证所需文件

    vim /etc/pam.d/vsftpd.mysql 添加如下两行

      1 [root@234c17 data]# vim /etc/pam.d/vsftpd.mysql
      2 auth required pam_mysql.so user=vsftpd passwd=centos host=192.168.234.27 db=ftpdb table=users usercolumn=name passwdcolumn=password crypt=2
      3 account required pam_mysql.so user=vsftpd passwd=centos host=192.168.234.27 db=ftpdb table=users usercolumn=name passwdcolumn=password crypt=2

    注意:参考README文档,选择正确的加密方式

    crypt是加密方式,0表示不加密,1表示crypt(3)加密,2表示使用mysql

    password()函数加密,3表示md5加密,4表示sha1加密

    配置字段说明

    auth 表示认证

    account 验证账号密码正常使用

    required 表示认证要通过

    pam_mysql.so模块是默认的相对路径,是相对/lib64/security/路径而言,也可以写绝

    对路径;后面为给此模块传递的参数

    user=vsftpd为登录mysql的用户

    passwd=magedu 登录mysql的的密码

    host=mysqlserver mysql服务器的主机名或ip地址

    db=vsftpd 指定连接msyql的数据库名称

    table=users 指定连接数据库中的表名

    usercolumn=name 当做用户名的字段

    passwdcolumn=password 当做用户名字段的密码

    crypt=2 密码的加密方式为mysql password()函数加密

    2.建立相应用户和修改vsftpd配置文件,使其适应mysql认证

    //建立虚拟用户映射的系统用户及对应的目录
    
    useradd -s /sbin/nologin -d /var/ftproot vsftpd
    
    chmod 555 /var/ftproot  //centos7需除去ftp根目录的写权限
    
    mkdir /var/ftproot/{upload,pub}
    
    setfacl –m u:vfstpd:rwx /var/ftproot/upload/
    
    //确保/etc/vsftpd.conf中已经启用了以下选项
    
    anonymous_enable=YES
    
    //添加下面两项
    
    guest_enable=YES
    
    guest_username=vsftpd
    
    //修改下面一项,原系统用户无法登录
    
    pam_service_name=vsftpd.mysql
    

    四、启动vsftpd服务

    systemctl start vsftpd
    
    systemctl enable vsftpd
    
    //查看端口开启情况
    
    netstat -tnlp |grep :21
    

    五、Selinux相关设置:在FTP服务器上执行

    restorecon -R /lib64/security
    
    setsebool -P ftpd_connect_db 1
    
    setsebool -P ftp_home_dir 1
    
    chcon -R -t public_content_rw_t /var/ftproot/

    六、测试:利用FTP客户端工具,以虚拟用户登录验证结果

    tail /var/log/secure

    七、在FTP服务器上配置虚拟用户具有不同的访问权限

    vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以定义其ftp服务访

    问权限,每个虚拟用户的配置文件名同虚拟用户的用户名。配置文件目录可以是任

    意未使用目录,只需要在vsftpd.conf指定其路径及名称即可

    1、配置vsftpd为虚拟用户使用配置文件目录

    vim /etc/vsftpd/vsftpd.conf

    添加如下选项

    image

    user_config_dir=/etc/vsftpd/vsftpd.d

    2、创建所需要目录,并为虚拟用户提供配置文件

    mkdir /etc/vsftpd/vsftpd.d/
    
    cd /etc/vsftpd/vsftpd.d/
    
    touch ftp1 ftp2

    3、配置虚拟用户的访问权限

    虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。如果需要让用户wang具有上传文件的权限,可以修改

    /etc/vsftpd/vsftpd.d/ftp1文件,在里面添加如下选项并设置为YES即可,

    只读则设为NO

    注意:需确保对应的映射用户对于文件系统有写权限

    anon_upload_enable={YES|NO}

    anon_mkdir_write_enable={YES|NO}

    anon_other_write_enable={YES|NO}

    local_root=/ftproot 登录目录改变至指定的目录

  • 相关阅读:
    实验8 统计和输出一次考试中的最高分、最低分、平均分,以及在90~100、 80~89、 70~79、 60~69和60分以下各分数段的人数。程序代码如下(可复制):
    实验7(3)输入x后,根据下式计算并输出y值
    实验7
    实验7(4)编写程序,输入一批学生的成绩,遇0或负数则输入结束,要求统计并输出优秀(大于85)、通过(60~84)和不及格(小于60)的学生人数。
    输入n个字符
    实验6-1 输入n个整数,将它们存入数组a中。输出最大值和它所对应的下标
    作业3-5 输入五级制成绩(A-E),输出相应的百分制成绩(0-100)区间,要求使用 switch语句。例如,输入 A,输出 90-100。五级制成绩对应的百分制成绩区间为:A(90-100)、B(80-89)、C(70-79)、D(60-69)和 E(0-59)。
    作业3-6 查询水果的单价。有 4 种水果,苹果(apples)、梨(pears)、桔子(oranges)和葡萄(grapes),单价分别是 3.00 元/公斤,2.50 元/公斤,4.10 元/公斤和 10.20 元/公斤。在屏幕上显示以下菜单(编号和选项),用户可以连续查询水果的单价,当查询次数
    作业3-4 循环输入多个年份 year,判断该年是否为闰年。判断闰年的条件是:能被 4 整除但不能被100 整除,或者能被 400 整除。输入-1退出程序执行
    作业3-3 输入 15 个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数
  • 原文地址:https://www.cnblogs.com/OrochWang/p/9497422.html
Copyright © 2011-2022 走看看