• day1-Vsftpd


    FTP

    File Transfer Protocol

    基于c/s

    FTP会话属于复合TCP连接

    控制连接TCP21端口,发送FTP命令信息

    数据连接TCP20端口,上传/下载数据

    数据连接模式

    主动 20端口---->主动连接---->客户端

    被动 服务端??<----被动连接<----客户端

    传输模式

    文本模式 ASCII 模式,文本序列传输

    二进制模式 Binary模式,二进制序列传输

    FTP用户类型

    匿名用户:ftp或anonymous

    本地用户:Linux服务器本机的系统用户账号

    虚拟用户:账号信息存放在独立的文件或数据库内

    vsftpd

    Very Secure FTP Daemon

    非常案例的FTP守护程序

    服务程序/usr/sbin/vsftpd

    服务脚本/etc/init.d/vsftpd

    ftp工具

    wKioL1eu_AeT2DBAAABTtYfKUqA635.png

    匿名浏览 ftp://ip

    用户验证访问ftp://user:pass@IP/path

    主配置文件

    配置目录/etc/vsftpd

    主配置文件 vsftpd.conf

    黑名单文件 ftpusers

    黑/白名单文件 user_list

    [root@localhost test]# ls /etc/vsftpd/

    ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh

    帮助

    当我们忘记时可以查看帮助文档和MAN 配置文件

    /usr/share/doc/

    全局FTP配置

    listen 是否以独立运行方式监听服务

    listen_address 设置监听FTP服务的IP地址

    listen_port 设置监听FTP服务的端口

    write_enable 是否雇用写入权限

    download_enable 是否允许下载

    anonymous_enable 是否雇用匿名访问

    anon_root 匿名FTP的根目录

    local_enable 是否雇用本地用户

    local_root 本地用户的FTP根目录

    local_umask 本地用户上传的权限掩码

    chroot_local_user 是否禁锢在主目录

    用户访问控制

    黑名单文件 /etc/vsftpd/ftpusers

    列入其中的用户被禁止访问

    黑白名单文件 /etc/vsftpd/user_list

    userlist_enable=YES  决定是否启动些文件

    userlist_deny=YES|NO 当YES时为黑名单,否则白名单

    FTP连接及传输控制

    并发数限制 带宽限制

    max_clients 限制并发的客户端个数

    max_per_ip 限制每个客户机IP的并发连接数

    anon_max_rate 匿名最大速度(字节/秒)

    local_max_rate 验证用户最大速率(字节/秒)

    userlist_enable=YES

    userlist_deny=NO

    仅允许列表中的用户

    清空user_list添加需要访问FTP的用户

    -------------------------------------------------

    黑名单不允许登录FTP服务

    [root@localhost vsftpd]# cat ftpuser 

    # Users that are not allowed to login via ftp

    root

    bin

    daemon

    adm

    lp

    sync

    shutdown

    halt

    mail

    news

    uucp

    operator

    games

    nobody

    实验

    vsftpd + pam + mysql

    首先安装相应的软件包

    yum -y install vsftpd

    yum -y install mysql-server mysql-devel

    yum -y groupinstall "Development Tools" "Development Libraries"

    yum install pam-devel -y

    安装pam_mysql-0.7RC1

    首先去官网下

    http://nchc.dl.sourceforge.net/project/pam-mysql/pam-mysql/0.7RC1/pam_mysql-0.7RC1.tar.gz

    tar xf  pam_mysql-0.7RC1.tar.gz

    cd  pam_mysql-0.7RC1

    ./configure --with-mysql=/usr --with-openssl

    make

    make install

    pam包已装上

    [root@localhost pam_mysql-0.7RC1]# ll /lib/security

    total 140

    -rwxr-xr-x. 1 root root    876 Aug 14 23:11 pam_mysql.la

    -rwxr-xr-x. 1 root root 138564 Aug 14 23:11 pam_mysql.so

    安装后准备

    /etc/init.d/vsftpd start

    /etc/init.d/mysqld start

    chkconfig vsftpd on

    chkconfig mysqld on

    建立pam认证文件

    vim /etc/pam.d/vsftpd.mysql

    auth required /lib/security/pam_mysql.so user=user1 passwd=password1 host=localhostdb=vsftpd table=ftpuser usercolumn=user passwdcolumn=password crypt=0

    account required /lib/security/pam_mysql.so user=user1 passwd=password1 ost=localhost db=vsftpd table=ftpuser usercolumn=user passwdcolumn=password crypt=0

    进入mysql

    mysql> create database vsftpd;

    mysql> use vsftpd;

    mysql> create table ftpuser (

        id int AUTO_INCREMENT NOT NULL,

        user char(20) binary NOT NULL,

        password char(48) binary NOT NULL,

        primary key(id)

        );

    myssql> desc ftpuser;

    mysql> grant select on vsftpd.* to user1@localhost identified by 'password1';

    mysql> grant select on vsftpd.* to user1@127.0.0.1 identified by 'password1';

    mysql> flush privileges;

    新建两个虚拟用户

    mysql> insert into ftpuser(user,password) values('vuser1','1');

    mysql> insert into ftpuser(user,password) values('vuser2','1');

    mysql> select * from ftpuser

        -> ;

    +----+--------+----------+

    | id | user   | password |

    +----+--------+----------+

    |  1 | vuser1 | 1        |

    |  2 | vuser2 | 1        |

    +----+--------+----------+

    2 rows in set (0.01 sec)

    验证数据库

    mysql -uuser1 -ppassword1

    新建系统用户-->虚拟用户家目录

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

    chmod go+rw /var/vsftpdroot

    修改配置文件

    vim /etc/vsftpd/vsftpd.conf

    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

    以上配置VSFTPD虚拟用户 虚拟用户就是匿名用户

    注:配置文件系统不要写错,否则无法登录

    补充

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

    # vim vsftpd.conf

    添加如下选项

    user_config_dir=/etc/vsftpd/vuser_acl_dir

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

    mkdir /etc/vsftpd/vuser_acl_dir

    cd /etc/vsftpd/vuser_acl_dir

    touch vuser1 vuser2

    vim /etc/vsftpd/vuser_acl_dir/vuser1

    anon_upload_enable=YES

    anon_mkdir_write_enable=YES

    anon_other_write_enable=YES

    验证

    vuser2用户

    wKioL1ewZUCxNmLBAAAxz8alOzE379.png

    匿名用户

    wKiom1ewZWmx5F4BAAAYOqKpFBs373.png

    虚拟用户还有一种方法

    确认安装PAM服务相关部件

    yum -y install pam*

    这里要特别安装一个db4的包,用来支持文件数据库。

    yum -y install db4*

    建立文件 两个用户

    [root@localhost ~]# cat /etc/vsftpd/vuser 

         vu1    用户名

         1    密码

         vu2    用户名

         2    密码


    使用db_load命令生成虚拟用户口令认证文件

    db_load -T -t hash -f /etc/vsftpd/vsftpd.user /etc/vsftpd/vsuser.db

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

    vim /etc/vsftpd/vsftpd.conf

    pam_service_name=vsftpd

    anon_upload_enable=NO

    anon_mkdir_write_enable=NO

    chroot_local_user=YES

    guest_enable=YES

    guest_username=vu

    注释全部的行,添加以下内容

    vim /etc/pam.d/vsftpd

    auth        required    pam_userdb.so   db=/etc/vsftpd/vuser

    account     required    pam_userdb.so   db=/etc/vsftpd/vuser

    关于

    FTP并发及带宽限制

    实验

    将50M的文件共享

    匿名用户10KB/S

    普通用户50KB/S

    每个IP2个并发连接

    最多允许100个并发连接

    生成50M文件

    [root@localhost ftp]# dd if=/dev/zero of=file50M count=50000 bs=1000

    50000+0 records in

    50000+0 records out

    50000000 bytes (50 MB) copied, 0.961573 s, 52.0 MB/s

    配置文件加/etc/vsftpd/vsftpd.conf最后加

    限制IP并发连接

    max_clients=100

    max_per_ip=2

    wKiom1ewaj6y6SbNAAA_6mbDcOo526.png

    配置文件加/etc/vsftpd/vsftpd.conf最后加

    限制速率

    匿名用户10KB/S

    本地用户50KB/S

    注:默认单位是字节

    anon_max_rate=10000

    local_max_rate=50000

    此为匿名用户

    wKioL1ewezCQ2NVZAABPDe1szlw271.png

    本地用户

    wKiom1ewgEnxYLhWAABUg7W5eVc370.png

    加密方式 

    FTPS SSL

    SFTP SSH

    还有一个小技巧,可以和HTTP服务合起来

    HTTP家目录和VSFTPD目录设为相同

    我们可以通过FTP来远程更新网页内容

  • 相关阅读:
    精品教程Android程序的建立以及发布
    项目源码Android团购类客户端
    精品教程Android4.1开发环境搭建
    项目源码Android本地视频播放器
    精品教程Android组件详解
    精品教程NDK环境搭建(2)NDK的安装与配置
    ios 块语法的本质
    ios 属性易错点
    ios 打印结构体的方法
    ios开发 UITableCell 可重用问题
  • 原文地址:https://www.cnblogs.com/fina/p/5781853.html
Copyright © 2020-2023  润新知