vsftpd

vsftpd 是“very secure FTP daemon”,安全性是它的一个最大的特点,下面来看一下vsftpd的快速配置.

vsftpd主要的配置文件:

/etc/pam.d/vsftpd
               /etc/vsftpd
               /etc/vsftpd/ftpusers
               /etc/vsftpd/user_list
               /etc/vsftpd/vsftpd.conf

用户类别:

匿名用户:

anonymous 默认账户及家目录 ftp, /var/ftp
                            /var/ftp 目录属性不可更改
                            将其匿名子目录的属主属组ftp

anon_upload_enable=YES 开启匿名用户的上传
anon_mkdir_write_enable=YES 开启写权限
anon_other_write_enable=YES 上传文件的权限是600

系统用户:

至少禁止系统用户访问ftp服务,/etc/vsftpd/ftpusers,PAM(/etc/pam.d/vsftpd);
用户的account认证需要pam_unix.so与/etc/passwd相关
                       需要依赖于系统账户区别权限

local_umask=022

定义访问用户的黑名单:/etc/pam.d/vsftpd

auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed

锁定用户的根目录
虚拟用户:非系统用户,用户账号非为可登录操作系统的用户账号(非/etc/passwd);

一般的默认设定用户通过vsftpd服务访问到的默认路径,是用户自己的家目录;默认可以自己有权限访问的所有路径间切换;

禁锢用户于其家目录中;须将用户撤销对其家目录的读权限

        chroot_local_user=YES

上传下载速率:

                anon_max_rate=0
                local_max_rate=0

并发连接数限制:

                max_clients=2000
                max_per_ip=50

配置mysql与vsftp的认证:

1.安装开发环境:编译时要先安装与对应的开发环境

            yum install mariadb-server mariadb-devel  pam-devel

2.安装gcc,直接安装开发包组

            yum install  "Devlopment Tools" "Server Platform  Development"

3.编译安装pam_mysql

            ]# tar xf pam_mysql-0.7RC1.tar.gz
            ./configure  \
            --with-pam=/usr     \
            --with-mysql=/usr \
            --with-pam-mods-dir=/usr/lib64/security/  #指明模块的村饭路径
            make && make install

4.配置vsftpd.conf文件:

            pam_service_name=vsftpd.vusers   #指明pam文件名
            guest_enable=YES   #开启来宾模式
            guest_username=vuser #来宾用户

5.编写pam文件:README可查看

            auth required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=vsftpd host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
            account required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=vsftpd host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

6.创建msyql表:

            vim /etc/my.cnf
            [mysqld]
            skip_name_resolve=ON
            innodb_file_per_table=ON
            log_bin=mysql-bin

授权用户远程登录:

           GRANT ALL ON vsftpd.*  TO vsftpd@'127.0.0.1' IDENTIFIED BY 'vsftpd';
           FLUSH  PRIVILEGES;
           CREATE DATABASE vsftpd;
           use vsftpd;
           CREATE TABLE users(
           id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,name VARCHAR(100) NOT NULL ,password CHAR(48) NOT NULL UNIQUE KEY(name)
           );
           INSERT INTO users(    
           name,password) VALUES ('centos',PASSWORD('centos')),('redhat',PASSWORD('redhat'));

7.创建用户并创建根目录,虚拟用户映射

             mkdir -p /ftproot/vuser
             useradd -d /ftproot/vuser vuser
             将用户对家目录的写权限
             chmod a-w /ftproot/vuser/

8.编辑vsftpd.conf文件

           指明虚拟用户的配置文件路径
           user_config_dir=/etc/vsftpd/vusers_config/

9.对每个用户建立配置文件:

           vim /etc/vsftpd/vusers_config/centos
           anon_upload_enable=YES
           anon_mkdir_write_enable=YES

10.接下来对服务进行访问测试