4terre 发表于 2014-10-23 09:50:49

vsftpd基于pam_mysql的认证和hash编码的方式配置虚拟用户

基础介绍什么的就自行搜索了。下面直接从安装配置开始。

环境:centos6
一、安装

1
yum -y install vsftpd




安装完成后可以直接启动。service vsftpd start

二、配置
使用pam_mysql或者db_load的认证方式:
a)使用db_load来设置虚拟用户
    1、在/etc/vsftpd/下创建两个目录

1
    mkdir /etc/vsftpd/vuser_dir      #后续存放虚拟用户的配置文件





1
    mkdir /etc/vsftpd/vuser_db   #存放虚拟用户的认证文件





    2、生成数据库文件

1
2
3
4
5
6
    cd /etc/vsftpd/vuser_db/   
    vim login_vuser
    username      #依次单行用户名,密码
    password
    username
    password





1
db_load -T -t -f /etc/vsftpd/vuser_db/login_vuser /etc/vsftpd/vuser_db/vuser.db   #生成虚拟用户的数据库文件




    3、更改pam认证模块


1
2
3
4
    cd /etc/pam.d/   
    vim vsftpd.vuser
    auth    required    /lib64/security/pam_userdb.so   db=/etc/vsftpd/vuser_db/vuser       #此处注意不要加.db后缀
    account    required      /lib64/security/pam_userdb.so   db=/etc/vsftpd/vuser_db/vuser




    4、更改vsftpd的配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    vim /etc/vsftpd/vsftpd.conf   
    anonymous_enable=YES      #开启匿名用户访问
    local_enable=YES      #本地用户访问
    write_enable=YES      #用户的写权限
    local_umask=022
    ######################################################         
    dirmessage_enable=YES                           
    xferlog_enable=YES
    connect_from_port_20=YES
    xferlog_std_format=YES
    ######################################################         
    listen=YES
    user_config_dir=/etc/vsftpd/vuser_dir
    pam_service_name=/etc/pam.d/vsftpd.vuser
    userlist_enable=NO
    tcp_wrappers=YES
    chroot_list_enable=YES      #不允许用户切换家目录
    ######################################################            
    guest_enable=YES      #开启匿名用户
    guest_username=vuser
    ######################################################         
    chown_uploads=YES       #是否允许上传的文件改变属主
    chown_username=root   #改变为哪个属主




    5、为虚拟用户创建对应的配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    cd /etc/vsftpd/vuser_dir/   #创建两个虚拟用户的配置文件
    vim test
    anon_upload_enable=YES
    download_enable=YES
    anon_other_write_enable=NO
    anon_mkdir_write_enable=NO
    local_root=/some/to/path/
    ######################################################         
    vim admin
    anon_upload_enable=YES
    download_enable=YES
    anon_other_write_enable=YES
    anon_mkdir_write_enable=YES
    anon_world_readable_only=NO
    local_root=/some/to/path/




    6、重启vsftpd测试登陆

1
2
3
    service vsftpd restart   
            
    lftp -u username,password host    #测试





b)使用pam_mysql来认证用户
    1、创建目录存储虚拟用户配置文件
    mkdir /etc/vsftpd/vuser_dir

    2、安装mysql-server mysql-devel openssl-devel pam_mysql软件

1
    yum -y install mysql-server mysql-devel openssl-devel pam_mysql #epel源里有pam_mysql模块




    3、登陆mysql创建vsftpd库文件等


1
2
3
4
5
6
7
8
9
10
11
    mysql -uroot -p password   
    create database vsftpd
    grant all on vsftpd.* to 'vsftpd'@'localhost' identified by 'vsftpd';
    grant all on vsftpd.* to 'vsftpd'@'127.0.0.1' identified by 'vsftpd';
               
    use vsftpd;
    CREATE TABLE `users` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT,`name` varchar(50) NOT NULL,`password` char(48) NOT NULL,PRIMARY KEY (`id`));
    INSERT INTO users (name,password) VALUES ('username','password'),('username','password');
    flush privileges;
               
    mysql -uUSERNAME -pPASSWORD          #测试上述创建的用户是否有效




    4、创建mysql的pam认证文件


1
2
3
    vim vsftpd.mysql   
    auth required /lib64/security/pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password cypt=0
    account required /lib64/security/pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password cypt=0




    5、修改vsftpd配置文件


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    vim /etc/vsftpd/vsftpd.conf   
    anonymous_enable=YES      #开启匿名用户访问
    local_enable=YES      #本地用户访问
    write_enable=YES      #用户的写权限
    local_umask=022
    ######################################################         
    dirmessage_enable=YES                           
    xferlog_enable=YES
    connect_from_port_20=YES
    xferlog_std_format=YES
    ######################################################         
    listen=YES
    user_config_dir=/etc/vsftpd/vuser_dir
    pam_service_name=/etc/pam.d/vsftpd.mysql      #这里与上面的hash认证是有区别的
    userlist_enable=NO
    tcp_wrappers=YES
    chroot_list_enable=YES      #不允许用户切换家目录
    ######################################################            
    guest_enable=YES      #开启匿名用户
    guest_username=vuser
    ######################################################         
    chown_uploads=YES       #是否允许上传的文件改变属主
    chown_username=root   #改变为哪个属主   




    6、为虚拟用户创建对应的文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    cd /etc/vsftpd/vuser_dir/   #创建两个虚拟用户的配置文件
    vim test
    anon_upload_enable=YES
    download_enable=YES
    anon_other_write_enable=NO
    anon_mkdir_write_enable=NO
    local_root=/some/to/path/
    ######################################################         
    vim admin
    anon_upload_enable=YES
    download_enable=YES
    anon_other_write_enable=YES
    anon_mkdir_write_enable=YES
    anon_world_readable_only=NO
    local_root=/some/to/path/




    7、重启vsftpd测试登陆


1
2
    service vsftpd restart   
    lftp -u username,password host      #测试




三、所有的针对于用户权限的配置都可以在包含的虚拟用户配置文件的路径下进行单独的配置选项。
如果其中配置好登陆不上,可以查看安全认证日志。


页: [1]
查看完整版本: vsftpd基于pam_mysql的认证和hash编码的方式配置虚拟用户