• vsftp搭建


    FTP全名是File Transfer Protocol(文件传输协议) C/S架构

    简介:

    下面是关于FTP这个服务的属性

    1)FTP服务相关软件

       IIS Serv-U Vsftpd proftpd pureftpd

    2FTP客户端相关软件

       ftp命令 CuteFTP FlashFTP LeapFTP Filezilla gftp kuftp

    3VSFTP的守护进程

       /usr/sbin/vsftpd

    4FTP的启动脚本

       /etc/init.d/vsftpd

    5FTP的端口

       TCP协议的20,21端口与客户端进行通信

          20用于建立数据连接,传输文件数据。(数据端口)

          21用于建立控制连接,并传输FTP控制命令。(命令端口)

     (6)用户控制列表文件

    /etc/vsftpd/ ftpusers  文件中的用户禁止登录FTP服务器(黑名单)

    /etc/vsftpd/ user_list 文件中的用户可能被禁止或允许登录FTP服务器,具体看vsftpd.conf的设置

    7)工作模式

          主动模式:

               客户端想服务端21端口发送建立连接请求,需要传输数据时,客户端会通过port命令告诉服务器自己监听的端口,服务器会主动通过20端口与客户端建立数据连接。

     

         

         被动模式

               客户端想服务端21端口发送建立连接请求,需要传输数据时,

    服务器以pasv命令告诉客户我打开了某个端口(非20端口),你来连接我,客户端会像服务器的非20端口建立数据连接

      

     8)根据传输文件是否进行字符转换分为:

        文本模式(又称为ASCII)以文本序列传输数据,用的较多

        二进制模式(又称为Binary模式)以二进制序列传输数据

     

    主配置文件

    /etc/vsftpd/vsftpd.conf

     

     

     

    搭建FTP服务:

      1、搭建yum仓库

       1mount /dev/cdrom /mnt

       2cat /etc/yum.repos.d/rhel-debuginfo.repo

       [rhel-Server]

       name=Red Hat Enterprise Server

       baseurl=file:///mnt/Server

       enabled=1

       gpgcheck=0

       gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-beta,file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

     

       2、安装

          yum -y install vsftpd*

     

    配置选项讲解

    实验1

    1. 1.  创建测试文件
    2. 2.  匿名用户ftp对/var/ftp/pub有写入权限
    3. 3.  允许匿名用户浏览
    4. 4.  允许用户(匿名,本地,虚拟)有上传权限
    5. 5.  允许匿名用户有上传权限
    6. 6.  允许匿名用户有上传文件夹权限
    7. 7.  禁止匿名用户有删除,覆盖等权限

     

    (1)查看ftp的默认根路径,默认是有一个pub目录(默认的跟目录),

        [root@Centos2 ~]# ls /var/ftp/

       pub

    2)备份配置文件

    cd /etc/vsftpd/vsftpd.confg

       cp vsftpd.conf vsftpd.bak

       vim vsftpd.conf

       内容如下

    write_enable=YES

    anon_umask=022

    anonymous_enable=YES

    anon_upload_enable=YES

    anon_mkdir_write_enable=YES

    anon_other_write_enable=NO 是否允许匿名用户有其他写入权(改名,删除,覆盖)

    dirmessage_enable=YES

    xferlog_enable=YES

    connect_from_port_20=YES

    xferlog_std_format=YES

    listen=YES

    pam_service_name=vsftpd

    userlist_enable=YES

    tcp_wrappers=YES

    3)启动服务

       service vsftpd start

    (4)改变根目录的属主,如果不改变的话,只能访问,其他权限不能生效。因为我们是以ftp用户的身份访问的,而pub默认的属主属组是root

       chown ftp /var/ftp/pub

     

    验证:

       在网络或是计算中输入ftp地址:格式如下图。

       我们会看到默认的pub目录。

     

     

    进入到pub目录下,可以创建和上传测试目录了。如图2

    注意:(1)修改完配置之后需要重启完服务才能生效

          2)还需要从新从客户端登陆,否则修改后的配置看不到效果。

     

    实验2

    1.   创建测试帐号u1u2u3密码都为“user”
    2.  允许本地用户访问
    3.  将权限掩码设为077
    4.   将本地帐号禁锢在宿主目录中
    5.   只允许u1u2两个用户可以登录

     

    创建测试用户,并且设置密码

    [root@crushlinux ~]# useradd u1

    [root@crushlinux ~]# echo "user" |passwd --stdin u1

    [root@crushlinux ~]# useradd u2

    [root@crushlinux ~]# echo "user" |passwd --stdin u2

    [root@crushlinux ~]# useradd u3

    [root@crushlinux ~]# echo "user" |passwd --stdin u3

     

    在配置文件中加入红色部分内容

    [root@crushlinux ~]# vi /etc/vsftpd/vsftpd.conf

    local_enable=YES

    local_umask=077

    chroot_local_user=YES

    write_enable=YES

    dirmessage_enable=YES

    xferlog_enable=YES

    connect_from_port_20=YES

    xferlog_std_format=YES

    listen=YES

    pam_service_name=vsftpd

    userlist_enable=YES

    userlist_deny=NO

    tcp_wrappers=YES

     

     

     

    将允许登陆的用户加入到白名单中

    vi /etc/vsftpd/user_list

    u1

    u2

    service vsftpd restart

    登陆验证

       格式为:ftp://用户名:密码@ftpIP地址

     

    登陆上默认是空白的,因为这是用户的家目录。

     

    u3用户登陆,会报错误(windows不同系统报错不会完全一致):

     

     

    实验3

    构建基于虚拟用户的FTP服务

    创建账号数据

       1.建立虚拟FTP用户的帐号数据库文件

       2.创建FTP根目录及虚拟用户映射的系统用户

       3.建立支持虚拟用户的PAM认证文件

    添加虚拟用户支持

       4.在vsftpd.conf文件中添加支持配置

       5.为个别虚拟用户建立独立的配置文件

    启动服务并测试

       6.重新加载vsftpd配置

       7.使用虚拟FTP账户访问测试

    实验部分

    1.建立虚拟FTP用户的帐号数据库文件用到db_load工具先安装软件包

       rpm -ivh db4-utils-4.7.25-17.el6.x86_64.rpm

       cd /etc/vsftpd/

    2、创建虚拟用户文件

       vim user

       a

       1

       b

       1

       c

       1

      

       基数行代表用户名,偶数行代表密码

    通过db_load工具创建出Berkeley DB格式的数据库文件

      

       db_load -T -t hash -f user user.db

      

     

        -f 指定数据原文件

       -T 允许非Berkeley DB的应用程序使用文本格式转换的DB数据文件

       -t hash  读取文件的基本方法

    3、创建虚拟用户对应的系统用户

       useradd -s /sbin/nologin vu

    4建立支持虚拟用户的PAM认证文件

    vi /etc/pam.d/vsftpd.vu

    加入以下两行

    auth       required     /lib64/security/pam_userdb.so db=/etc/vsftpd/user

    account    required     /lib64/security/pam_userdb.so db=/etc/vsftpd/user

    对应刚才生成user.db的文件

    5、在vsftpd的配置文件中支持虚拟用户

    注意:在做虚拟用户的时候,一定要去掉userlist_deny=NO

    这个选项,否则会显示用户验证失败

    vi /etc/vsftpd/vsftpd.conf

    guest_enable=YES            启用用户映射功能

    guest_username=vu     指定映射的系统用户名称

    pam_service_name=vsftpd.vu   指定新的PAM认证文件

    local_enable=YES

    local_umask=077

    chroot_local_user=YES  如果红色3条配置没有的话就会报错:用户身份验证失败

    virtual_use_local_privs=YES

    如果没有这条配置的话上传将会显示错误.这条最重要

    还要注意每行配值的末尾不要有空行,否则也会有报错

     

     

    6.为个别虚拟用户建立独立的配置文件

    vi /etc/vsftpd/vsftpd.conf   加入下面一行

    user_config_dir=/etc/vsftpd/user_dir  用户配置目录支持

    为用户a、b建立独立的配置目录及文件 这一行也是必须有的

     mkdir /etc/vsftpd/user_dir

    cd /etc/vsftpd/user_dir

    vim a

    local_root=/test   规定了a用户的根目录  注意:一定要把目录的属主改为虚拟用户对应的系统用户。

    mkdir /test

    默认就是所有权限

     

    总结:本地用户和虚拟用户不能同时登录、因为认证方式只有一种

    本地是pam_service_name =vsftpd

    虚拟是pam_service_name =vsftpd.vu 

     

    实验4

    1    修改vsftpd服务的监听地址,端口

           1.1  IP为:192.168.200.129

            1.2  端口为:2121

    2    使用vsftpd服务的被动模式

         2.1  下限端口为24500

         2.2  上限端口为24600

    3    限制vsftpd服务的并发数,传输速度

          3.1  限制并发客户连接最多200

          3.2  限制每个IP地址的连接数最多50

          3.3  限制匿名用户传输速率为50KB/s

          3.4  限制本地用户传输速率为200KB/s

    [root@crushlinux ~]# netstat -naptu |grep "vsftpd"

    [root@crushlinux ~]# vi /etc/vsftpd/vsftpd.conf

    listen=YES

    listen_address=192.168.200.129

    listen_port=2121

    pasv_enable=YES

    pasv_min_port=24500

    pasv_max_port=24600

    max_clients=200

    max_per_ip=50

    anon_max_rate=50000

    local_max_rate=200000

    [root@crushlinux ~]# service vsftpd restart

    [root@crushlinux ~]# netstat -naptu |grep "vsftpd"

    tcp        0      0 192.168.200.129:2121        0.0.0.0:*                   LISTEN      3552/vsftpd   

     

     

  • 相关阅读:
    Windows环境下OpenLDAP安装配置
    jobcenter在Windows下连携LDAP
    OpenLDAP搭建
    Go 函数 #3
    Go 数组/多维数组/切片/map #2
    Go内置类型/变量/常量 #1
    git常用命令
    makefile基础_1
    kubernete的service
    配置开发环境
  • 原文地址:https://www.cnblogs.com/henglinux/p/9571486.html
Copyright © 2020-2023  润新知