zoukankan      html  css  js  c++  java
  • 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来远程更新网页内容

  • 相关阅读:
    .NET实现Excel文件的读写 未测试
    权限管理设计
    struts1中配置应用
    POJ 2139 Six Degrees of Cowvin Bacon(floyd)
    POJ 1751 Highways
    POJ 1698 Alice's Chance
    POJ 1018 Communication System
    POJ 1050 To the Max
    POJ 1002 4873279
    POJ 3084 Panic Room
  • 原文地址:https://www.cnblogs.com/fina/p/5781853.html
Copyright © 2011-2022 走看看