一、实验环境
一台Linux客户端、一台Linux服务器、一台Windows客户端
二、实验内容
1、创建一个ftp服务器,提供文件下载和上传功能。 2、提供匿名登录功能,用户能够上传文件,但不能删除文件。 3、创建用户登录ftp服务,允许用户任意写操作。 4、ftp黑白名单。
三、实验步骤
1.软件安装
Linux系统中,是vsftpd提供的ftp的服务(没有依赖包,看直接使用yum安装,也可光盘安装)。
[root@localhost /]# yum install vsftpd -y
查询是否成功安装FTP服务。
[root@localhost ~]# rpm -q vsftpd vsftpd-3.0.2-22.el7.x86_64
FTP默认配置文件目录
etc/vsftpd/vsftpd.conf ftp服务器的配置文件 /etc/pam.d/vsftpd /etc/vsftpd/ftpusers 禁止登录用户名单,默认root不能登录 /etc/vsftpd/user_list 可以通过设置只有这个名单里的用户可以登录,如果同一用户同时出现在ftpusers和user_listname该用户也是被禁止登录,取最高权限 /var/ftp ftp的根目录,默认登陆位置 /var/ftp/pub
实验内容 1 :创建一个 f t p 服务器,提供文件下载和上传功能。 实验内容1:创建一个ftp服务器,提供文件下载和上传功能。 实验内容1:创建一个ftp服务器,提供文件下载和上传功能。
1、编辑etc/vsftpd/vsftpd.comf配置文件。确认以下状态为YES。
anonymous_enable=YES #开启匿名用户访问,默认已开启。 write_enable=YES #开放服务器的写权限(若要上传必须开启)。默认已开启。 anon_upload_enable=YES #允许匿名用户上传文件,默认是注释的,需要取消注释 。 anon_mkdir_write_enable=YES #允许匿名用户创建(上传)目录,默认是注释的,需要取消注释。
2、防火墙放行FTP服务
[root@localhost ~]# firewall-cmd --add-service=ftp --permanent success [root@localhost ~]# firewall-cmd --reload success
3、关闭selinux
临时关闭selinux,如未关闭可能导致服务访问不成功。
[root@localhost ~]# setenforce 0 [root@localhost ~]# getenforce Permissive
在/etc/selinux/config 文件下永久性关闭selinux
4、启动FTP服务
[root@localhost ~]# systemctl start vsftpd //启动服务器 [root@localhost ~]# systemctl enable vsftpd //开机自启服务 Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service. [root@localhost ~]# systemctl status vsftpd //查看服务器状态 ● vsftpd.service - Vsftpd ftp daemon Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled) Active: active (running) since 三 2022-11-16 22:08:50 EST; 1min 43s ago Main PID: 51249 (vsftpd) CGroup: /system.slice/vsftpd.service └─51249 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf 11月 16 22:08:50 localhost.localdomain systemd[1]: Starting Vsftpd ftp daemon... 11月 16 22:08:50 localhost.localdomain systemd[1]: Started Vsftpd ftp daemon.
5、Linux客户端测试服务,安装客户端工具
测试服务
[root@localhost ~]# ftp 192.168.137.128 //连接服务 Connected to 192.168.137.128 (192.168.137.128). 220 (vsFTPd 3.0.2) Name (192.168.137.128:root): anonymous //输入匿名用户 331 Please specify the password. Password: //无密码 回车 230 Login successful. //登录成功 Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 227 Entering Passive Mode (192,168,137,128,214,191). 150 Here comes the directory listing. drwxr-xr-x 2 0 0 6 Aug 03 2017 pub 226 Directory send OK. ftp> bye 221 Goodbye.
6、Windows客户端测试服务
匿名用户可以在/var/ftp/pub目录上传文件和创建目录
实验内容 2 :提供匿名登录功能,用户能够上传文件,但不能删除文件。 实验内容2:提供匿名登录功能,用户能够上传文件,但不能删除文件。 实验内容2:提供匿名登录功能,用户能够上传文件,但不能删除文件。
匿名用户主目录创建测试文件
root@localhost ~]# cd /var/ftp/ [root@localhost ftp]# touch pub/1.txt
修改配置文件,设置用户匿名用户权限。
重启FTP服务
[root@localhost ~]# systemctl restart vsftpd
Windows客户端测试服务
实验内容 3 :创建用户登录 f t p 服务,允许用户任意写操作。 实验内容3:创建用户登录ftp服务,允许用户任意写操作。 实验内容3:创建用户登录ftp服务,允许用户任意写操作。
编辑配置文件。将anonymous_enable=YES改为NO。即可使用用户账户登录。
设置访问账户与密码。
[root@localhost /]# useradd gd1 [root@localhost /]# passwd gd1 更改用户 gd1 的密码 。 新的 密码: 无效的密码: 密码未通过字典检查 - 它基于字典单词 重新输入新的 密码: passwd:所有的身份验证令牌已经成功更新。
重启服务
[root@localhost ~]# systemctl restart vsftpd
Linux客户端测试,使用用户登录。(测试成功)
[root@localhost /]# ftp 192.168.137.128 Connected to 192.168.137.128 (192.168.137.128). 220 (vsFTPd 3.0.2) Name (192.168.137.128:root): gd1 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> pwd 257 "/home/gd1" ftp> mkdir 1.txt 257 "/home/gd1/1.txt" created
Windows客户端测试
实验内容 4 : F T P 黑白名单 实验内容4:FTP黑白名单 实验内容4:FTP黑白名单
创建用户
编辑/etc/vsftpd/vsftpd.conf配置文件
文件末尾添加,命令说明:仅允许文件中的用户登录服务(反之如果开启此参数,那么就不能使用文件中的用户进行登录)
编辑用户名单文件,加入gd1用户。
重启服务
[root@localhost ~]# systemctl restart vsftpd
Linux客户端测试
使用文件中已有的用户登录测试,成功登录
使用文件中未出现的用户登录测试,登录失败