(k8s-king-king)vsftpd服务配置与使用
3.1 案例目标FTP服务配置-实操.mp4
(1)掌握vsftpd服务三种访问模式的配置方法;
(2)掌握FTP服务的连接使用方法。
3.2 案例分析
(1)规划节点
FTP服务器的节点规划,见表3-1。
表3-1 IP地址信息
设备 | IP地址 |
---|---|
FTP服务器 | 172.16.59.99/24 |
(2)基础准备
最小化CentOS 7.5虚拟机两台,CetnOS 7.5系统ISO镜像。
3.3 案例实施
(1)安装vsftpd软件服务包
[root@localhost ~]# curl -O http://mirrors.douxuedu.com/cloud/CentOS-7-x86_64-DVD-1804.iso
...
[root@localhost ~]# mkdir /opt/centos
[root@localhost ~]# mount -o loop CentOS-7-x86_64-DVD-1804.iso /opt/centos/
mount: /dev/loop0 is write-protected, mounting read-only
[root@localhost ~]# mv /etc/yum.repos.d/* /media/
[root@localhost ~]# vi /etc/yum.repos.d/local.repo
//按i进入编辑模式,输入以下代码
[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enanbled=1
//按ESC键输入:wq命令保存退出
[root@localhost ~]# yum install vsftpd -y
...
Installed:
vsftpd.x86_64 0:3.0.2-22.el7
Complete!
(2)进入主配置文档所在目录,并对其备份:
[root@localhost ~]# cd /etc/vsftpd/
[root@localhost vsftpd]# cp -p vsftpd.conf vsftpd.conf.bak
(3)接下来,开始vsftpd服务的配置:
① 配置匿名访问模式的FTP服务
我们编辑主配置文档,修改原来文件中所有内容,注意如下需要修改的配置参数:
[root@localhost vsftpd]# vi vsftpd.conf
//按i进入编辑模式,修改和添加以下代码(双斜杠后的注释内容不需要输入)
anonymous_enable=YES //允许匿名访问
local_enable=YES //允许本地用户进行访问
write_enable=NO //禁止写入
anon_upload_enable=NO //禁止匿名用户上传文件
anon_mkdir_write_enable=NO //禁止匿名用户进行写入操作
xferlog_enable=YES
listen=NO //关闭监听模式
listen_ipv6=YES //开启ipv4和ipv6的监听模式,与上二选一
//在后面添加以下两行代码(双斜杠后的注释内容不需要输入)
pasv_enable=NO //关闭被动传输模式
connect_from_port_20=YES //使用20端口传输数据
编辑完成后保存退出,在以上配置过程中,我们启用的是主动模式(Port模式),相关的参数主要是以下两个:
pasv_enable=no;
connect_from_port_20=yes;
随后,开始启动vsftpd服务,启动的是FTP的主动连接方式。
[root@localhost vsftpd]# systemctl start vsftpd
*(此步骤选做)如果是本地环境,接下来,我们可以在防火墙上开放FTP服务的访问,并重新加载防火墙策略,让刚才添加的新策略生效:
[root@localhost vsftpd]# firewall-cmd --add-service=ftp --permanent
success
[root@localhost vsftpd]# firewall-cmd --reload
现在,我们通过netstat命令查看一下vsftpd服务启动后的网络连接情况:
[root@localhost vsftpd]# netstat -anlp | grep vsftpd
tcp6 0 0 :::21 :::* LISTEN 1444/vsftpd
由上可以看出,当前FTP服务器开启的是21号端口,用于监听网络中发送的指令信息。
最后完成匿名访问FTP服务,首先下载FTP客户端:
[root@localhost ~]# yum install ftp -y
...
Installed:
ftp.x86_64 0:0.17-67.el7
Complete!
然后我们在连接的时候使用了-A参数,表示为使用匿名用户方式进行访问(IP为虚拟机实际地址),用户名默认为anonymous,无需密码,直接按Enter键运行,最后输入quit退出,如图3-1所示。
图3-1 匿名用户方式进行访问
② 配置本地用户模式
这种模式下,用户登陆FTP服务器时,需要提供用户名和用户密码进行必要的用户身份认证。相较于第一种匿名登陆方式而言,这种模式的安全性大大提高,下面我们还是看下参数上有什么变化。
首先,我们先把配置文件恢复初始状态,操作如下:
[root@localhost ~]# cd /etc/vsftpd/
[root@localhost vsftpd]# cp -p vsftpd.conf.bak vsftpd.conf
cp: overwrite ‘vsftpd.conf’? y
然后,编辑主配置文档,修改原来文件中所有内容,注意如下需要修改的配置参数:
[root@localhost vsftpd]# vi vsftpd.conf
//使用vi命令进入编辑器后,修改以下代码(双斜杠后的注释内容不需要输入)
anonymous_enable=NO //关闭匿名访问
local_enable=YES //允许本地用户进行访问
write_enable=YES //允许写入操作
xferlog_enable=YES
listen=NO //关闭监听模式
listen_ipv6=YES //开启ipv4和ipv6的监听模式,与上二选一
connect_from_port_20=NO //关闭20端口传输数据
pam_service_name=vsftpd //身份验证服务为vsftpd
userlist_enable=YES //限制root用户及系统用户登陆
//保存退出编辑器
从以上参数配置中,可以看出,这里删除了所有与匿名用户相关的参数(以anon开头的),并将anonymous_enable=YES的值修改为NO,并添加了以下参数内容:
pam_service_name=vsftpd;
userlist_enable=YES;
注意:由于将userlist_enable的参数值设为了YES,因此vsftpd主配置目录中的两个文件/etc/vsftpd/ftpusers和/etc/vsftpd/user_list中包含的用户,默认是不允许直接访问FTP服务器的。
修改完之后,重启Vsftpd服务。
[root@localhost vsftpd]# systemctl restart vsftpd
我们查看一下文件中的内容,其中包含root用户等系统用户在内,如图3-2所示:
图3-2 查看文件内容
如果需要这其中的用户也可以访问FTP服务器,则需要在这两个文件中将对应的用户名手动删除。
现在,我们需要添加对应可以访问FTP服务器的本地用户Jack并设置密码为123,操作如下:
[root@localhost vsftpd]# useradd jack
[root@localhost vsftpd]# echo 123 | passwd --stdin jack
更改用户 jack 的密码 。
passwd:所有的身份验证令牌已经成功更新。
我们现在用jack的身份来登陆FTP服务器:
[root@localhost vsftpd]# ftp 172.16.59.99 //IP地址根据实际情况修改为本虚拟机IP
Connected to 172.16.59.99 (172.16.59.99).
220 (vsFTPd 3.0.2)
Name (172.16.59.99:(none)): jack //此处输入用户名jack
331 Please specify the password.
Password : //此处输入用户名密码,按设置的密码123
230 Login successful. //提示成功登陆
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd //查看下用户当前所在目录位置
257 "/home/jack" //默认为该用户的宿主目录
ftp>
③ 配置虚拟用户模式:
相较于前面两种模式,此种模式下FTP服务器的安全性有了很大的提升,也是这三种模式中最为安全的一种认证模式,可以满足大量账户的访问需求。
在有大量用户需要访问FTP服务器时,依赖于通过创建本地用户的方式来满足用户访问需求,这种做法既不明智也不安全,就需要我们通过创建vsftpd虚拟账户来实现这种功能。
首先,我们需要创建一个明文方式存储密码的文件,并将用户名和密码记录在文件中,代码如下:
[root@localhost vsftpd]# vi ftplogin //此处文件名任意
//按i进入编辑模式,输入以下代码(双斜杠后的注释内容不需要输入)
mary //第一个虚拟用户mary
123 //密码为123
jones //第二个虚拟用户jones
456 //密码为456
//保存退出编辑器
然后,我们需要将这种明文存储用户认证信息的文件转为数据库文件,以此来提升系统安全性,操作如下:
[root@localhost vsftpd]# db_load -T -t hash -f ftplogin ftplogin.db
删除原先创建的明文用户认证信息文件,并将数据库文件权限更改为只有root用户才有读取和写入的权限:
[root@localhost vsftpd]# rm -rf ftplogin
[root@localhost vsftpd]# chmod 600 ftplogin.db
创建一个用于虚拟用户登陆认证的PAM文件,这里我们设定文件名为vsftpd.auth,并在该文件中指定和验证用户账号信息的数据库文件为ftplogin.db(这里数据库扩展名可以省略不写),操作及参数设定如下所示:
[root@localhost vsftpd]# vi /etc/pam.d/vsftpd.auth
//使用vi命令进入编辑器,输入以下代码
auth required pam_userdb.so db=/etc/vsftpd/ftplogin
account required pam_userdb.so db=/etc/vsftpd/ftplogin
//保存退出编辑器
现在我们需要修改/etc/vsftpd/vsftpd.conf文件中的参数设置,增加与虚拟用户访问相关的参数内容,主要为以下几项参数,见表3-2:
表3-2 虚拟用户访问相关的参数
参数 | 功能 |
---|---|
guest_enable=yes | 开启虚拟用户模式 |
guest_username=virtual | 指定虚拟用户账号名称 |
pam_service_name=vsftpd.auth | 指定账号认证文件 |
allow_writeable_chroot=yes | 允许用户登陆且支持对FTP根目录拥有写入权限 |
我们先把配置文件恢复初始状态,操作如下:
[root@localhost ~]# cd /etc/vsftpd/
[root@localhost vsftpd]# cp -p vsftpd.conf.bak vsftpd.conf
cp: overwrite ‘vsftpd.conf’? y
然后编辑修改主配置文档,参数设置如下:
[root@localhost vsftpd]# vi vsftpd.conf
//使用vi命令进入编辑器,修改以下代码
anonymous_enable=no
local_enable=yes
write_enable=NO
xferlog_enable=YES
listen=no
listen_ipv6=yes
pasv_enable=yes
connect_from_port_20=no
pam_service_name=vsftpd.auth
userlist_enable=yes
guest_enable=yes
guest_username=virtual //指定虚拟用户账号名称
allow_writeable_chroot=yes
//保存退出编辑器
修改完之后,重启Vsftpd服务。
[root@localhost vsftpd]# systemctl restart vsftpd
根据参数中虚拟用户账号名称,我们创建此用户,并禁止该用户使用bash shell环境且用户目录为/var/ftpuser:
[root@localhost vsftpd]# useradd -d /var/ftpuser -s /sbin/nologin virtual
最后,我们还需要排除SELinux对FTP服务的影响,并将虚拟账户对应的目录/var/ftpuser权限修改成“755”设置如下:
[root@localhost vsftpd]# setsebool -P ftpd_full_access=on
setsebool: SELinux is disabled.
[root@localhost vsftpd]# chmod -R 755 /var/ftpuser/
使用FTP命令行来验证我们FTP服务器的虚拟账户模式,操作如下所示:
[root@localhost vsftpd]# ftp 172.16.59.99
Connected to 172.16.59.99 (172.16.59.99).
220 (vsFTPd 3.0.2)
Name (172.16.59.99:(none)): mary //此处输入虚拟账户名
331 Please specify the password.
Password : //此处输入用户名密码,按密码123
230 Login successful. //提示成功登陆
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd //查看下用户当前所在目录位置
257 "/" //默认为该用户的宿主目录
ftp> dir
227 Entering Passive Mode (172,16,59,99,112,165).
150 Here comes the directory listing.
226 Directory send OK.
ftp>quit
在Linux平台上进行验证,命令格式为curl -u 用户名:密码 ftp://虚拟机IP
,如图3-3所示。
[root@localhost vsftpd]# cd /var/ftpuser
[root@localhost ftpuser]# ll
total 0
[root@localhost ftpuser]# vi 123.txt
This is a test of the Virtual-User mode
[root@localhost ftpuser]# curl -u mary:123 ftp://172.16.59.99/
图3-3 字符界面访问FTP服务器
(以下步骤选做)如果是本地环境,除了以上命令行的连接方式以外,FTP还可以通过Web方式直接登录访问。在另一台服务器中打开浏览器,并在地址栏中输入FTP服务器的IP地址,格式为ftp://172.16.59.99,并按提示输入对应的用户名和密码,就可以访问我们新架设好的FTP服务器了,如图3-4所示。
图3-4 Web方式访问FTP服务器
认证登录后,我们也可以查看并下载目录中的123.txt文件,访问成功,如图3-5所示。
图3-5 下载文件
- 点赞
- 收藏
- 关注作者
评论(0)