• 使用VSFTPD传输文件


    使用VSFTPD传输文件

    一、文件传输协议

    FTP(File Transfer Protocol)是一种在互联网进行文件传输的协议,基于B/S模式,默认使用20、21端口,其中20端口(数据端口)用于数据传输,21端口(命令端口)用于

    接收客户端发出的相关FTP命令与参数。

    FTP协议的两种工作模式:

    主动模式:FTP服务器主动向客户端发起链接请求。

    被动模式:FTP服务器等待客户端发起链接请求(默认模式)。

     vsftpd(very secure ftp daemon)是一款运行在Linux上的FTP服务程序。

     二、vsftpd服务程序

    vsftp允许用户以三种模式登陆到FTP服务器上。

    1.匿名开放模式:任何人可以无需密码验证直接登陆到FTP服务器上。

    2.本地用户模式:通过Linux系统本地的账户密码进行认证登陆。

    3.虚拟用户模式:需要为FTP服务单独建立用户数据库文件,这些账户仅提供FTP服务程序认证。(最安全的模式)

    ftp是Linux系统中以命令行方式管理FTP服务的客户端工具。

    一)匿名开放模式

    vsftpd默认开启了匿名开放模式。

    [root@linuxprobe ~]# vim /etc/vsftpd/vsftpd.conf
    1 anonymous_enable=YES
    2 anon_umask=022
    3 anon_upload_enable=YES
    4 anon_mkdir_write_enable=YES
    5 anon_other_write_enable=YES 

    vsftpd 服务程序的匿名开放认证模式下,其账户统一为 anonymous,密码为空。

    而且在连接到 FTP 服务器后,默认访问的是/var/ftp 目录。接下来具体操作,注意root权限以及SELinux。

    三)本地用户模式

    开启方式:

    [root@linuxprobe ~]# vim /etc/vsftpd/vsftpd.conf
    1 anonymous_enable=NO
    2 local_enable=YES
    3 write_enable=YES
    4 local_umask=022

    重启:

    [root@linuxprobe ~]# systemctl restart vsftpd
    [root@linuxprobe ~]# systemctl enable vsftpd

    更改user_list:

    [root@linuxprobe ~]# cat /etc/vsftpd/user_list
    1 # vsftpd userlist
    2 # If userlist_deny=NO, only allow users in this file
    3 # If userlist_deny=YES (default), never allow users in this file, and
    4 # do not even prompt for a password.
    5 # Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
    6 # for users that are denied.
    7 root #删除它

    登陆:

    ftp 140.143.88.174

    三)虚拟用户模式

    步骤:

    1)创建用于进行 FTP 认证的用户数据库文件,其中奇数行为账户名,偶数行为密码。例如, 

    [root@linuxprobe ~]# cd /etc/vsftpd/
    [root@linuxprobe vsftpd]# vim vuser.list
    zhangsan
    redhat
    lisi
    redhat

    db_load 命令用哈希(hash)算法将原始的明文信息文件转换成数据库文件,并且降低
    数据库文件的权限(避免其他人看到数据库文件的内容),然后再把原始的明文信息文件
    删除。

    [root@linuxprobe vsftpd]# db_load -T -t hash -f vuser.list vuser.db
    [root@linuxprobe vsftpd]# file vuser.db
    vuser.db: Berkeley DB (Hash, version 9, native byte-order)
    [root@linuxprobe vsftpd]# chmod 600 vuser.db
    [root@linuxprobe vsftpd]# rm -f vuser.list

    2)创建 vsftpd 服务程序用于存储文件的根目录以及虚拟用户映射的系统本地用户。
    FTP 服务用于存储文件的根目录指的是,当虚拟用户登录后所访问的默认位置。

    由于 Linux 系统中的每一个文件都有所有者、所属组属性,例如使用虚拟账户“张三”
    新建了一个文件,但是系统中找不到账户“张三”,就会导致这个文件的权限出现错误。为此,
    需要再创建一个可以映射到虚拟用户的系统本地用户。简单来说,就是让虚拟用户默认登录
    到与之有映射关系的这个系统本地用户的家目录中,虚拟用户创建的文件的属性也都归属于
    这个系统本地用户,从而避免 Linux 系统无法处理虚拟用户所创建文件的属性权限。
    为了方便管理 FTP 服务器上的数据,可以把这个系统本地用户的家目录设置为/var 目录
    (该目录用来存放经常发生改变的数据)。并且为了安全起见,我们将这个系统本地用户设置
    为不允许登录 FTP 服务器,这不会影响虚拟用户登录,而且还可以避免黑客通过这个系统本
    地用户进行登录。

    [root@linuxprobe ~]# useradd -d /var/ftproot -s /sbin/nologin virtual
    [root@linuxprobe ~]# ls -ld /var/ftproot/
    drwx------. 3 virtual virtual 74 Jul 14 17:50 /var/ftproot/
    [root@linuxprobe ~]# chmod -Rf 755 /var/ftproot/

    3)建立用于支持虚拟用户的PAM文件

    PAM 是一组安全机制的模块,系统管理员可以用来轻易地调整服务程序的认证方式,而不必对应用程序进行任何修改 。
    新建一个用于虚拟用户认证的 PAM 文件 vsftpd.vu,其中 PAM 文件内的“db=”参数为
    使用 db_load 命令生成的账户密码数据库文件的路径,但不用写数据库文件的后缀:

    [root@linuxprobe ~]# vim /etc/pam.d/vsftpd.vu
    auth required pam_userdb.so db=/etc/vsftpd/vuser
    account required pam_userdb.so db=/etc/vsftpd/vuser

    4)vsftpd 服务程序的主配置文件中通过 pam_service_name 参数将 PAM 认证文件的名称修改为 vsftpd.vu

    1 anonymous_enable=NO
    2 local_enable=YES
    3 guest_enable=YES
    4 guest_username=virtual
    5 allow_writeable_chroot=YES

    5)为虚拟用户设置不同的权限。

    [root@linuxprobe ~]# mkdir /etc/vsftpd/vusers_dir/
    [root@linuxprobe ~]# cd /etc/vsftpd/vusers_dir/
    [root@linuxprobe vusers_dir]# touch lisi
    [root@linuxprobe vusers_dir]# vim zhangsan
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
    user_config_dir=/etc/vsftpd/vusers_dir

    6)设置 SELinux 域允许策略 

    Simple is important!
  • 相关阅读:
    渡一 20 date对象,定时器
    渡一 22 事件
    渡一 21获取窗口属性,dom尺寸,脚本化css
    渡一 18&19 选择器,节点类型&Dom基本操作
    渡一 16-2 dom操作初探
    渡一 16-1 try..catch,es5标准模式
    iOS 相关职位要求整理版
    Mac使用技巧
    issues about Facebook Login
    10_Segue Example
  • 原文地址:https://www.cnblogs.com/Shadowplay/p/9529440.html
Copyright © 2020-2023  润新知