• 使用FTP服务


    ftp 占用20   21两个端口

    安装vsftpd程序

     键入命令    yum install vsftpd -y

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

    [root@linuxprobe ~]# iptables -F

    保存清空后的防火墙规则表:

    [root@linuxprobe ~]# service iptables save

     分析ftp的主配置文件

    主配置文件长达123行,但大部分是以#号开始的,这些都是注释信息,我们可以过滤掉它们。
    备份vsftpd的主配置文件:

    [root@linuxprobe ~]# mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak

    过滤掉所有包含#号的行,并将过滤结果写回到vsftpd.conf文件中:

    [root@linuxprobe ~]# grep -v "#" /etc/vsftpd/vsftpd.conf_bak > /etc/vsftpd/vsftpd.conf

    此时再分析下vsftpd程序的主配置文件吧:

    [root@linuxprobe ~]# cat /etc/vsftpd/vsftpd.conf

     安装ftp服务

    接下来就是ftp的三种访问模式了   分别是  匿名访问模式   本地用户模式   虚拟用户模式 

    限免我们一一介绍

    匿名访问模式

     

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

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

    在客户端尝试登入FTP服务

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

    这里建议读者先不要往下看思考后用自己的方法解决下这个问题,长期这样你的Linux的排错能力一定会练出来的。

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

     

    2.本地用户模式

    键入命令   vim /etc/vsftpd/vsftpd.conf    更改参数

     

     然后重启vsftpd服务程序并设置为开机自启动

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

    在客户端尝试登入ftp

     

    3.虚拟用户模式

    因为虚拟用户模式的帐号口令都不是真实系统中存在的,所以只要配置妥当虚拟用户模式会比本地用户模式更加安全,但是Vsftpd服务配置虚拟用户模式的操作步骤相对复杂一些,具体流程如下:

    第1步:建立虚拟FTP用户数据库文件。

    第2步:创建FTP根目录及虚拟用户映射的系统用户。

    第3步:建立支持虚拟用户的PAM认证文件。

    第4步:在vsftpd.conf文件中添加支持配置。

    第5步:为虚拟用户设置不同的权限。

    第6步:重启vsftpd服务,验证实验效果。

    建立虚拟FTP用户数据库文件。

    切换至vsftpd程序目录:   [root@linuxprobe ~]# cd /etc/vsftpd/

    创建用于生成FTP用户数据库的原始帐号和密码文件

     使用db_load命令用HASH算法生成FTP用户数据库文件vuser.db

    查看数据库文件的类型:

    [root@linuxprobe vsftpd]# file vuser.db

    vuser.db: Berkeley DB (Hash, version 9, native byte-order)

    FTP用户数据库内容很敏感,所以权限给小一些:

    [root@linuxprobe vsftpd]# chmod 600 vuser.db

    删除原始的帐号和密码文件:

    [root@linuxprobe vsftpd]# rm -f vuser.list

    第2步:创建FTP根目录及虚拟用户映射的系统用户。

    创建用户virtual并设置为不允许登陆系统并定义该用户的家目录:

    [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/

    为保证其他用户可以访问,给予rwxr-xr-x权限:

    [root@linuxprobe ~]# chmod -Rf 755 /var/ftproot/

    第3步:建立支持虚拟用户的PAM认证文件:

    [root@linuxprobe ~]# vim /etc/pam.d/vsftpd.vu

    //参数db用于指向刚刚生成的vuser.db文件,但不要写后缀。

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

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

    第4步:在vsftpd.conf文件中添加支持配置。
    既然要使用虚拟用户模式,而虚拟用户模式确实要比匿名访问模式更加的安全,配置的同时也关闭匿名开放模式

    [root@linuxprobe ~]# vim /etc/vsftpd/vsftpd.conf

     第5步:为虚拟用户设置不同的权限

    指定用户独立的权限配置文件存放的目录:

    [root@linuxprobe ~]# vim /etc/vsftpd/vsftpd.conf

    user_config_dir=/etc/vsftpd/vusers_dir

    创建用户独立的权限配置文件存放的目录:

    [root@linuxprobe ~]# mkdir /etc/vsftpd/vusers_dir/

    切换进入到该目录中:

    [root@linuxprobe ~]# cd /etc/vsftpd/vusers_dir/

    创建空白的linuxprobe的配置文件:

    [root@linuxprobe vusers_dir]# touch linuxprobe

    指定blackshield用户的具体权限:

    [root@linuxprobe vusers_dir]# vim blackshield

    anon_upload_enable=YES

    anon_mkdir_write_enable=YES

    第6步:重启vsftpd服务,验证实验效果。

    然后客户端登入ftp  按照上边的步骤就好了

    一个非常严重的问题

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

    [root@linuxprobe ~]# getsebool -a | grep ftp

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

    [root@linuxprobe ~]# setsebool -P ftpd_full_access=on

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

    [root@linuxprobe ~]# ftp 192.168.10.10

    Connected to 192.168.10.10 (192.168.10.10).

    220 (vsFTPd 3.0.2)

    Name (192.168.10.10:root): blackshield

    331 Please specify the password.

    Password:此处输入虚拟用户的密码

    230 Login successful.

    Remote system type is UNIX.

    Using binary mode to transfer files.

    ftp>mkdir files

    257 "/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.

    我们只需要这样操作就好了

  • 相关阅读:
    window计时器函数
    日期函数
    字符的方法
    五大主流浏览器与四大内核
    向一个排好序的数组中插入一个数组。
    冒泡与排序
    数组去重方法1,2,3
    有执行语句:console.log(fn2(2)[3]),补充函数,使执行结果为"hello"
    面试题:一个函数的调用 fn(2)(3)(4) 得到的结果位24; 这个函数是柯里化函数运用了闭包原理
    python中append()与extend()方法的区别
  • 原文地址:https://www.cnblogs.com/hjt123/p/11791134.html
Copyright © 2020-2023  润新知