FTP服务器默认使用TCP协议的20、21端口与客户端进行通讯

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

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

FTP数据连接分为主动模式和被动模式

在主动模式:服务器主动发起数据连接

被动模式:服务器被动等待数据连接 !FTP主要用于在相同的网段内进行文件数据的传输!

实验步骤! (环境:centos7 win7。都是192.168.206.0网段的)

!首先记得yum安装

yum install -y vsftpd

cd /etc/vsftpd/

cp vsftpd.conf vsftpd.conf.bak ;对配置文件修改之前进行备份!(必做)

设置匿名用户访问的FTP服务(最大权限)

vim /etc/vsftpd/vsftpd.conf ;修改配置文件

anonymous_enable=YES ;开启匿名用户访问,默认情况下已开启

write_enable=YES ;开放服务器写的权限:默认已开启(如果想要上传,则必须开启此选项)

anon_umask=022 ;允许匿名用户上传数据的权限掩码(反掩码)

anon_upload_enable=YES ;允许匿名用户上传文件。默认已注释,需要取消注释

anon_mkdir_write_enable=YES ;允许匿名用户上传(创建)目录。默认已经注释,需要取消注释

anon_other_write_enable =YES :允许删除、重命名、覆盖等操作。需要添加。

(斜体部分是给匿名用户上传、写的权限。如果不需要这些权限的话,这几个可以不用写)

为匿名访问FTP的根目录下的pub子目录设置最大权限,以便匿名用户上传数据

chmod 777 /var/ftp/pub/

开启服务,关闭防火墙和增强安全功能

systemctl start vsftpd

systemctl stop firewalld

setenforce 0

匿名访问测试

在windows系统打开:开始-菜单,输入cmd命令打开命令提示符

建立ftp连接

ftp 192.168.80.10

匿名访问没用户为ftp,密码为空,直接回车即可完成登录

ftp>pwd ;匿名访问ftp的根目录为linux系统的/var/ftp目录

ftp>ls ;查看当前目录

ftp>cd pub ; 切换到pub目录

ftp> get 文件名 ,下载文件到windows本地目录

ftp> put 文件名 ;上传文件到ftp目录

ftp> quit ;退出

修改本地用户的验证访问ftp,并禁止切换到ftp以外的目录(默认登录的根目录为本地用户的家目录)

修改配置文件:vim /etc/vsftpd/vsftpd.conf ;

local_enable=YES ;启用本地用户

anonymous_enable=NO ;关闭匿名用户访问

write_enable=YES ;开放服务器写的权限(如果要上传,则必须开启)

local_umask=077 ;设置仅宿主用户拥有被上传的文件的权限(反掩码)

chroot_local_user=YES ;将访问禁锢在用户的宿主目录当中

allow_writebale_chroot=YES ;允许被限制的用户主目录拥有写的权限

之后重启服务:systemctl restart vsftpd

修改匿名用户、本地用户登录的默认跟目录

anon_root=/var/www/html ;anon_root 针对匿名用户

local_root=/var/www/html ; local_root 针对系统用户

使用user_list 用户列表文件(yes是黑名单、no时候是白名单!)

vim /etc/vsftpd/user_list

//末尾添加zhangsan用户

zhangsan

vim /etc/vsftpd/vsftpd.conf

userlist_enable=YES ; 启用user_list 用户列表文件

userlist_deny=NO ; 设置白名单,仅允许userlist用户列表文件的用户访问。默认为YES;表示黑名单

实验实操1:设置匿名用户访问的FTP服务(最大权限)

1、首先进行yum安装vsftpd的服务 1.png 2、其次进入/etc/vsftpd/目录内,cp备份ftp的配置文件vsftpd.conf.bak,以防不测! 2.png 3、vim /etc/ftp/vsftpd.conf中修改配置文件,主要修改项是如图所示的白色文件。修改完成后wq退出。下一步是chmod 777来赋予我们默认的共享文件夹/var/ftp/pub最高的匿名用户可读写权限。 这一切准备就绪后,我们systemctl start vsftpd服务器(如果报错就vi /var/log/messages里面报错)。最后就是关闭防火墙systemctl stop friewalld 以及关闭增强功能 setenforce 0 1配置文件.png 3.png 4、下面我们切换到同网段的win7,首先我们ping同网段的ftp服务端,确定是否连通。 4.png 最后我们ftp 192.168.206.3 (我们linux做的ftp服务器端),进入后输入ftp以匿名客户登录,passwd界面我们直接回车略过。就成功进入到了ftp服务当中。 5.png

实验实操2:改修本地用户验证登录ftp,并禁止切换到一切非ftp以外目录的行为

环境:我们以实验1的环境下修改! 1、vim /etc/ftp/vsftp.conf进入配置文件,如下图所示,框内的代码改成这样 11.png 2、之后我们systemctl restart vsftpd 服务 12.png

3、接着我们切换到win7界面,以实验1的方式进行一次登录尝试。会发现登录被拒绝 13.png 4、最后我们以test用户输入passwd登录,会发现成功登录(test用户是我linux系统中创建的一个测试用户) 14.png

5、之后我们让用户限制在各自登录的家目录中。首先vi /etc/vsftp/vsftpd.conf 之后如下图所示更改 151.png

之后我们wq保存退出,再restart一下vsftpd 16.png 返回win7,我们连接入ftp后,使用cd切换目录,发现失败了 17.png

实验实操3:操作白名单与黑名单

1、首先我们vim /etc/vsftpd/user_list,里面加入test 20.png 2、接着我们进入/etc/vsftp/vsftpd.conf,找到user_list =YES(表示设置黑名单) {ps:如果是NO,则是白名单;仅允许名单上的用户登录} 21.png 3、最后我们登录win7,在设置了用户黑名单的情况下。我们发现登录失败 23.png