• 演示vsftpd服务匿名访问模式、本地用户模式的配置


    文件传输协议(FTP,File Transfer Protocol

    即能够让用户在互联网中上传、下载文件的文件协议,而FTP服务器就是支持FTP传输协议的主机,要想完成文件传输则需要FTP服务端FTP客户端的配合才行。

    通常用户使用FTP客户端软件向FTP服务器发起连接并发送FTP指令,服务器收到用户指令后将执行结果返回客户端。

    FTP协议占用两个端口号:

    21端口:命令控制,用于接收客户端执行的FTP命令。

    20端口:数据传输,用于上传、下载文件数据。

    FTP数据传输的类型:

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

    被动模式:FTP服务端等待FTP客户端的连接请求。

    关于vsftpd的相关配置文件

    用户禁止登陆列表

    /etc/vsftpd/ftpusers
    /etc/vsftpd/user_list

    主配置文件

    /etc/vsftpd/vsftpd.conf

    vsftpd程序配置文件参数的作用:

    listen=[YES|NO]

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

    listen_address=IP地址

    设置要监听的IP地址。

    listen_port=21

    设置FTP服务的监听端口   21端口(ftp)  20端口(ftp-date)

     Vsftpd的验证方式

    vsftpd程序提供的FTP服务可选认证方式,分别为匿名访问本地用户虚拟用户

    匿名访问:任何人无需验证口令即可登入FTP服务端。

    本地用户:使用FTP服务器中的用户、密码信息。

    虚拟用户:创建独立的FTP帐号资料。

    顾名思义匿名访问就是所有人均可随意登入FTP服务,这样自然会产生安全问题,一般用于存放公开的数据。

    本地用户虚拟用户则需要用户提供帐号及口令后才能登入FTP服务,更加的安全,而虚拟用户则是最安全的。

     安装vsftpd服务程序

    # yum install vsftpd -y

     清空默认的防火墙默认规则:

    # iptables -F

    保存清空后的防火墙规则

    # service iptables save

     匿名访问模式

    FTP匿名访问模式是比较不安全的服务模式,尤其在真实的工作环境中千万不要存放敏感的数据,以免泄露。

    vsftpd程序默认已经允许匿名访问模式,我们要做的就是开启匿名用户的上传和写入权限,写入下面的参数:

    # vim /etc/vsftpd/vsftpd.conf

    参数

    作用

    anonymous_enable=YES

    允许匿名访问模式。

    anon_umask=022

    匿名用户上传文件的umask值。

    anon_upload_enable=YES

    允许匿名用户上传文件

    anon_mkdir_write_enable=YES

    允许匿名用户创建目录

    anon_other_write_enable=YES

    允许匿名用户修改目录名或删除目录

    确认填写正确后保存并退出vsftpd.conf文件,然后重启vsftpd服务程序并设置为开机自启动。

    # systemctl restart vsftpd

    # systemctl enable vsftpd

    如果重启vsftpd服务程序时没有报错,此时便可以使用FTP客户机(192.168.27.200)尝试登入FTP服务了

    客户机(192.168.27.200)系统中ftp命令默认没有安装,请执行”yum install ftp -y“即可安装完毕

     上面操作中已经将防火墙规则清空,在vsftpd.conf文件中也已经允许匿名用户创建目录与写入权限,那怎么会被拒绝了呢?

    回想前面的参数细节,匿名访问模式的FTP根目录为/var/ftp

     原来匿名用户的FTP根目录所有者/组都是root,所以匿名用户没有写入权限,那我们将所有者修改为ftp试试

    # chown  ftp /var/ftp/pub

    此时再用ftp命令尝试登入FTP服务并创建文件:

    ftp> mkdir files

    550 Create directory operation failed    还是错误

    查看所有与ftp相关的SELinux规则:

    # getsebool -a | grep ftp

    ftp_home_dir --> off

    ftpd_anon_write --> off

    ftpd_connect_all_unreserved --> off

    ftpd_connect_db --> off

    ftpd_full_access --> off

    ftpd_use_cifs --> off

    ftpd_use_fusefs --> off

    ftpd_use_nfs --> off

    ftpd_use_passive_mode --> off

    httpd_can_connect_ftp --> off

    httpd_enable_ftp_server --> off

    sftpd_anon_write --> off

    sftpd_enable_homedirs --> off

    sftpd_full_access --> off

    sftpd_write_ssh_home --> off

    tftp_anon_write --> off

    tftp_home_dir --> off

    设置SELinux服务对ftp服务的访问规则策略为允许

    # setsebool -P ftpd_full_access=on

    此时再来创建文件或目录就没有问题了:

    [root@guoxiaoyan-hbza ~]# ftp 192.168.27.100

    Connected to 192.168.27.100 (192.168.27.100).

    220 (vsFTPd 3.0.2)

    Name (192.168.27.100:root): anonymous

    331 Please specify the password.

    Password:敲击回车

    230 Login successful.

    Remote system type is UNIX.

    Using binary mode to transfer files.

    ftp>cd pub

    250 Directory successfully changed.

    ftp>mkdir files

    257 "/pub/files" created

    ftp>rename files database

    350 Ready for RNTO.

    250 Rename successful.

    ftp>rmdir database

    250 Remove directory operation successful.

    ftp>exit

    221 Goodbye.

    注意:当完成本实验后请还原虚拟机快照再进行下一个实验,否则可能导致配置文件冲突而报错

    本地用户模式

    既然要使用本地用户模式,而本地用户模式确实要比匿名访问模式更加的安全,所以本实验中会关闭匿名访问模式

    vsftpd服务程序默认已经允许本地用户模式,我们要做的是添加设置本地用户模式权限的参数:

    # vim /etc/vsftpd/vsftpd.conf

    参数

    作用

    anonymous_enable=NO

    禁止匿名访问模式。

    local_enable=YES

    允许本地用户模式。

    write_enable=YES

    设置可写入权限。

    local_umask=022

    本地用户模式创建文件的umask值。

    userlist_deny=YES

    参数值为YES即禁止名单中的用户,参数值为NO则代表仅允许名单中的用户。

    userlist_enable=YES

    允许“禁止登陆名单”,名单文件为ftpusers与user_list。

    确认填写正确后保存并退出vsftpd.conf文件,然后重启vsftpd服务程序并设置为开机自启动。

    # systemctl restart vsftpd
    # systemctl enable vsftpd

     重启vsftpd服务程序时没有报错,此时便可以使用FTP客户机(192.168.27.200)尝试登入FTP服务了

    我们先来看下ftpusersuser_list文件中禁止登陆用户名单:vim /etc/vsftpd/user_list

     vsftpd服务为了让FTP服务更加的安全,默认禁止以root身份登入,那么创建个普通用户吧:

    # useradd linuxprobe

    为linuxprobe用户设置密码:

    (我的没有问题  直接就出来了)如果再遇到了“操作被拒绝”,应该马上想到SELinux

    查看所有与ftp相关的SELinux规则:

    # getsebool -a | grep ftp

    ftp_home_dir --> off

    ftpd_anon_write --> off

    ftpd_connect_all_unreserved --> off

    ftpd_connect_db --> off

    ftpd_full_access --> off

    ftpd_use_cifs --> off

    ftpd_use_fusefs --> off

    ftpd_use_nfs --> off

    ftpd_use_passive_mode --> off

    httpd_can_connect_ftp --> off

    httpd_enable_ftp_server --> off

    sftpd_anon_write --> off

    sftpd_enable_homedirs --> off

    sftpd_full_access --> off

    sftpd_write_ssh_home --> off

    tftp_anon_write --> off

    tftp_home_dir --> off

    设置SELinux对FTP服务的规则为允许:

    # setsebool -P ftpd_full_access=on

     此时再来创建文件或目录就没有问题了:

     

  • 相关阅读:
    thinkphp 学习1-模型
    apache 2.4目录权限
    标头 header()函数的用法
    PHP面试题一
    php学习
    如何执行超过一百兆(100MB)的sql脚本?
    jquery-numberformatter插件
    xpath 获取父级,和同级
    Vue el-table 行编辑验证、重置
    Vue 弹窗一个新增编辑页面
  • 原文地址:https://www.cnblogs.com/7-58/p/11776469.html
Copyright © 2020-2023  润新知