CentOS配置FTP服务器

vsftpd

主动模式 由服务器创建连接

  命令

    Client <PORT> ---> Server 21/tcp

  数据

    Server 20/tcp ---> Client <PORT> + 1

被动模式 由客户端发起连接

  命令

    Client <PORT> ---> Server 21/tcp

  数据

    Client <PORT> + 1 ---> Server <random PORT>

 

 ftp服务器软件

Server

    wu-ftpd

    proftpd

    pureftp

    vsftpd

    ServU

    File Zilla Server

Client

    ftp

    lftp lftpget

    wget 

    curl

    filezilla

    gftp

    flashfxp

    cuteftp

 

响应吗

1XX 信息

2XX 成功

3XX 提示命令未完整

4XX 客户端错误

5XX 服务端错误

 

用户认证

虚拟用户

    仅用于访问某特定服务中的资源

    nsswitch 名称解析框架

        配置文件  /etc/nsswitch.conf

        模块  /lib64/libnss*, /usr/lib64/libnss*

    pam  用户认证框架

        配置文件 /etc/pam.conf, /etc/pam.d/*

        模块 /lib64/security/

系统用户

    /etc/passwd

匿名用户

    anonymous

 

软件包文件

用户认证配置文件

    /etc/pam.d/vsftpd

服务脚本

    /etc/rc.d/init.d/vsftpd

主配置文件

    /etc/vsftpd/vsftpd.conf

用户权限控制

    /etc/vsftpd/ftpusers

    /etc/vsftpd/user_list

主应用程序

    /usr/sbin/vsftpd

匿名用户资源路径

    /var/ftp

    # vsftpd不允许更改此目录权限

系统用户资源路径

    ~/

虚拟用户资源路径

    指定映射某个系统用户的家目录

 

vsftpd配置文件解析

# man vsftpd.conf

vim /etc/vsftpd/vsftpd.conf

    # 是否启动匿名用户
    anonymous_enable=YES

    # 默认不允许匿名用户上传
    #anon_upload_enable=YES

    # 默认不允许匿名用户创建文件、文件夹
    #anon_mkdir_write_enable=YES

    # 默认不允许匿名用户删除文件、文件夹
    #anon_other_write_enable=YES

    # 是否允许系统用户
    local_enable=YES

    # 默认允许本地用户拥有写权限
    write_enable=YES

    # 本地用户上传文件的默认权限
    local_umask=022

    # 默认不限制本地用户只能在家目录活动
    #chroot_local_user=YES

    # 默认不限制本地用户列表中的所有用户只能在家目录活动
    #chroot_list_enable=YES

    # 指定本地用户列表路径
    #chroot_list_file=/etc/vsftpd/chroot_list

    # 默认开启用户进入目录下会发出提示信息
    # 在指定目录下编辑 .message,将指定信息分行填入
    dirmessage_enable=YES

    # 默认打开FTP上传下载日志记录
    xferlog_enable=YES

    # 传输日志是否开启默认记录格式
    xferlog_std_format=YES

    # 默认日志文件路径
    #xferlog_file=/var/log/xferlog

    # 是否更改用户上传文件后的属主属组
    #chown_uploads=YES
    #chown_username=whoever

    # 定义空闲回话超时时长
    #idle_session_timeout=600

    # 定义数据连接超时时长
    #data_connection_timeout=120

    # 是否更改默认上传下载以二进制传输
    #ascii_upload_enable=YES
    #ascii_download_enable=YES

    # 是否开启ftp登录欢迎信息
    #ftpd_banner=Welcome to blah FTP service.

    # pam用户认证使用哪个文件名
    # 默认/etc/pam.d/目录下
    pam_service_name=vsftpd

    # auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
    # 是否启用用户登录列表文件
    userlist_enable=YES

    # YES代表黑名单、NO代表白名单
    userlist_deny=YES|NO

    # 最大并发连接数
    max_clients xxx

    # 每个IP可同时发起的并发请求数
    max_per_ip x.x.x.x

    # 匿名用户的最大传输速率,Byte/s
    anon_max_rate

    # 本地用户的最大传输速率
    local_max_rate

    # 虚拟用户会映射为指定的系统账号,目录为系统账号家目录

    # 虚拟用户能定义不同的访问权限

        # 通过匿名用户的权限控制参数进行指定

    # 虚拟用户账号的存储方式

        # 文件

            # 奇数行为用户名

            # 偶数行为密码

            # 需要被编译成二进制文件

        # 关系型数据库表

            # 查找数据库完成用户认证

            # 如果使用mysql,则依赖于pam-mysql模块,需要自己编译安装

            # yum install pam_mysql

            # 如下文配置

 

ftp服务器 + pam_mysql 模块做用户认证

  FTP服务器和mysql服务器不在一个节点上

    ftp 192.168.180.128

    mysql 192.168.180.130

1. 准备数据库及相关表

    create database vsftpd;

    grant select on vsftpd.* to vsftpd@192.168.180.128 identified by '123456';

    flush privileges;

    use vsftpd;

    create table users (
        -> id int AUTO_INCREMENT NOT NULL;
        -> name char(20) binary NOT NULL;
        -> password char(64) binary NOT NULL;
        -> primary key(id)
        -> );


2. 添加测试的虚拟用户

    # 密码为了安全,使用password函数加密后存储

    insert into users(name, password) values('tom', password('123456'));

    insert into users(name, password) values('bob', password('123456'));


3. 配置vsftpd

    # 建立pam认证所需文件

    vim /etc/pam.d/vsftpd.mysql 

        auth requried /lib/security/pam_mysql.so user=vsftpd passwd=123456 host=192.168.130 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0

        account requried /lib/security/pam_mysql.so user=vsftpd passwd=123456 host=192.168.130 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0

    # 修改vsftpd的配置文件,使其适应mysql认证

    # 建立虚拟用户映射的系统用户对应的目录

    useradd -s /sbin/nologin -d /var/ftproot vuser

    chmod go+rx /var/ftproot

    # 修改vsftpd配置文件参数

    anonymous_enable=YES

    local_enable=YES

    write_enable=YES

    anon_upload_enable=NO

    anon_mkdir_write_enable=NO

    chroot_local_user=YES

    guest_enable=YES

    guest_username=vuser

    pam_service_name=vsftpd.mysql


4. 启动vsftpd服务

    service vsftpd start 

    chkconfig vsftpd on 


5. 验证

    ftp 127.0.0.1


6. 配置虚拟用户具有不同的访问权限

    vim vsftpd.conf

        user_config_dir=/etc/vsftpd/vusers_config

    mkdir /etc/vsftpd/vusers_config

    cd /etc/vsftpd/vusers_config

    touch tom bob

    vim tom 

        # 默认不允许匿名用户上传
        anon_upload_enable={YES|NO}

        # 默认不允许匿名用户创建文件、文件夹
        anon_mkdir_write_enable={YES|NO}

        # 默认不允许匿名用户删除文件、文件夹
        anon_other_write_enable={YES|NO}

 

axel工具使用

  axel是通过打开多个 HTTP/FTP 连接来将一个文件进行分段下载,从而达到加速下载的目的的软件

 

下载源码包编译安装

tar xvzf axel-2.4.tar.gz

cd axel-2.4

./configure --strip=0

make 

make install

cp axel /bin

 

简单使用

1 axel -n 3 -o /root <OBJ_URL>

 

安全ftp服务器(密文传输)(未完待续)

ftps SSL

sftp SSH

 

posted @ 2018-04-10 16:24  前路~  阅读(160)  评论(0编辑  收藏  举报