1.ftp工作原理

       FTP是一个客户机/服务系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机

2.安装ftp服务

yum install vsftpd  -y              ##安装服务

wKiom1mEg7iQgrolAABOV3tqpms760.png

systemctl start vsftpd              ##启动服务

systemctl enable vsftpd             ##开机自动启动

setenforce 0                        ##关闭selinux或者设置selinux不然会对试验造成影响

lftp ip                             ##能登陆并且显示,表示安装成功

vsftpd文件信息

/var/ftp                            ##默认发布目录

/etc/vsftpd                         ##配置目录

配置火墙策略

farewall-config                      ##使用图形界面配置

 @@配置的步骤为:先选中permannent,勾上ftp,点击options,选择reload完成配置

 

wKioL1mGl4uApfGcAAAr0YKCWRE888.png

wKioL1mFsj-RkGYDAADsvCLTRyY878.png

查看火墙是否配置成功

wKioL1mGmN6AbCXlAABT-Qljy6s611.png

改selinux的状态为disabled,因为selinux是内核级的加强型防火墙,如果他处于强制状态,系统很多功能将不被允许。

wKiom1mGiF2TEN55AAAe9jhtV_s792.png

@@更改完以后一定要记得重启,因为它是内核级的,必须重启才能重新加载

 vsftpd服务的配置参数

1)匿名用户设定

anonymous_enable=YES|NO                ##匿名用户登陆限制,设置为NO时匿名不能登录

 wKioL1mGm0bj8ILkAAAnDRiDwlQ698.png

2)匿名用户上传

vim /etc/vsftpd/vsftpd.conf

write_enable=YES                       ##设为YES匿名用户可以上传wKioL1mGm4iB5L0qAAA6WXFcU80175.pnganon_upload_enable=YES

chgrp ftp /var/ftp/pub

chmod 775 /var/ftp/pub                 ##修改权限

 

3)匿名用户家目录修改

anon_root=/direcotry                   ##修改以后,登陆进入以后都在修改的家目录下

 wKioL1mGnBiDRMDjAAALyfUgdGE634.png

wKioL1mGnQzBA4ugAABAH45O5Rw513.png

在westos下建立三个目录

wKiom1mGnbWQgNVTAAA1S5UhSsw977.png

lftp连接以后,使用ls命令会看到刚刚创建的三个目录

 

4)匿名用户上传文件默认权限修改

anon_umask=xxx

 wKioL1mGnxvQAeaeAAAMJtj9LHg747.png

@@设置完以后,lftp 172.25.254.150连接上主机,进入pub/目录下,使用put命令上传/etc/passwd,就会显示出上传结果

5)匿名用户建立目录

anon_mkdir_write_enable=YES|NO          ##设置为YES表示可以建立

wKioL1mGoFKDWBsTAAAVa-we6W8507.png

@@lftp 172.25.254.150连接上主机,进入pub/目录下,mkdir westos,结果显示mkdir ok

 

6)匿名用户下载

anon_world_readable_only=YES|NO         ##设定参数值为no表示匿名用户可以下载

 wKiom1mFj7aiuh5tAAAP-xFLpT8141.png

@@lftp 172.25.254.150连接上主机,进入pub/目录下,使用get命令,get passwd会立马显示下载情况

7)匿名用户删除

anon_other_write_enable=YES|NO            ##设置为YES表示可以删除

wKiom1mGogSAb4yaAAAXvQglQz0481.png

@@lftp 172.25.254.150连接上主机,进入pub/目录下,rm passwd,会出现rm ok,passwd就被删除了

 

8)匿名用户使用的用户身份修改

chown_uploads=YES

chown_username=student

wKioL1mGox2Q3dFhAAAnvyt61tM558.png

 

 @@lftp 172.25.254.150连接上主机,进入pub/目录下,put /etc/passwd,然后执行ll /var/ftp/pub/,会看到passwd用户变成了student

9)最大上传速率

anon_max_rate=102400                     ##单位为kb,102400表示100M

 

10)最大链接数

max_clients=2                             ##最多允许两台主机接入

 

11)本地用户设定

local_enable=YES|NO                        ##本地用户登陆限制

write_enable=YES|NO                        ##本地用户写权限限制

 wKiom1mGpF6gWJb2AAA0Tx4w0gw245.png

@@本地用户lftp 172.25.254.150连接上主机,使用ls命令,会出现x秒后重新连接,也就是本地用户也无法登录主机了

 

12)本地用户上传文件权限

local_umask=xxx

@@系统默认umask=022,修改umask=002,本地用户的权限将变为664

 

13)限制本地用户浏览/目录

所有用户被锁定到自己的家目录中

chroot_local_user=YES                       ##设置为YES将被锁在家目录下

chmod u-w /home/*

 @@lftp 172.25.254.150连接上主机,执行ls,看到的是自己的家目录,cd /,再次执行ls,依然自己能看到自己的家目录

 

14)用户黑名单建立

chroot_local_user=NO                        ##无法浏览

chroot_list_enable=YES                      ##启用名单

chroot_list_file=/etc/vsftpd/chroot_list    ##写入名单的用户无法浏览

 

15)用户白名单建立

chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list    ##用户白名单建立后,只有在名单中出现的用户才能登录ftp

wKioL1mGqGeB2wpHAAALUl9LPiQ052.png

##注意:白名单的权限更大,会覆盖黑名单,一旦设置,只有出现在白名单的用户才能够登录ftp,即使一个用户它不仅在白名单,也在黑名单,他依然能登录

 

 

限制本地用户登陆

vim /etc/vsftpd/ftpusers                     ##用户黑名单

vim /etc/vsftpd/user_list                    ##用户临时黑名单

添加westos用户到/etc/vsftpd/ftpusers 

wKioL1mGqbTwOjCCAAAa4OP2Aic476.png

@@lftp 172.25.254.150 -u westos,会出现login failed,登录失败

 

用户白名单设定

userlist_deny=NO

/etc/vsftpd/user_list                        ##参数设定,此文件变成用户白名单,只在名单中出现的用户可以登陆ftp

添加westos用户到白名单中

 wKiom1mGqpyxORB1AAAzTqwuTXQ374.png

@@westos用户同时在两个名单中,但是westos用户可以登录,这就说明了白名单权限大于黑名单,不在白名单的用户都登陆不了

ftp虚拟用户的设定

(创建虚拟帐号身份)

vim /etc/vsftpd/xxx                           ##文件名称任意

ftpuser1                                      ##用户名

123                                           ##密码

ftpuser2

123

ftpuser3

123

 

db_load -T -t hash -f /etc/vsftpd/loginusers loginusers.db

                                               ##hash加密

wKiom1mGq2zStHnwAAAuqGhV2qw779.png

vim /etc/pam.d/xxx                             ##文件名称任意

wKioL1mGq9TSPBDDAAA9qEBJ7xw425.png

@@第一行是检测是否有这个用户,第二行检测密码是否匹配

accountrequiredpam_userdb.sodb=/etc/vsftpd/loginusers

authrequiredpam_userdb.sodb=/etc/vsftpd/loginusers

 

vim /etc/vsftpd/vsftpd.conf

pam_service_name=ckvsftpd

guest_enable=YES

 

虚拟帐号身份指定)

guest_username=ftpuser

chmod u-w /home/ftpuser

 wKiom1mGrw7TQtycAAAuSCTp754546.png

##必须指定为已经存在可以登录的用户

虚拟帐号家目录独立设定

vim /etc/vsftpd/vsftpd.conf

local_root=/ftpuserhome/$USER

user_sub_token=$USER

 

mkdir /ftpuserhome

chgrp ftpuser /ftpuserhome

chmod g+s /ftpuserhome

mkdir /ftpuserhome/ftpuser{1..3}

wKioL1mGrOHAHA3bAADd4xvkjRU832.png

 

 

虚拟帐号配置独立)

vim /etc/vsftpd/vsftpd.conf

user_config_dir=/etc/vsftpd/userconf

mkdir -p /etc/vsftpd/userconf

vim /etc/vsftpd/userconf/ftpuser1

wKiom1mGrWOCafeCAAAtA5ebXQQ861.png

@@这里设置的用户是ftpuser{1..3},因此可以使用¥USER,我第一次实验时设置的为nice,good,clever三个用户,那么他们独立配置就和这个不同了,只需将$USER改为你的用户就可以了,格式为local_root=/vuserdir/nice\user_sub_token=nice,记住,三个都要写,否则他们进去都会在第三个里面