自学内容网 自学内容网

CentOS8.5.2111(9)FTP完整解决方案 --带不同权限虚拟用户登录情景

兰生幽谷,不为莫服而不芳;

君子行义,不为莫知而止休。

一、实验目标

1. 理解FTP服务器原理

2. 掌握FTP服务器的配置文件

3. 具备安装部署VSFTP的能力

4. 具备FTP的故障排除能力

二、实验拓扑

图9- 1

实验先决条件:每台主机内网192.168.100.0/24相通,且满足下列条件之一

(1)通过NAT与真实外网相连,构建基于Ali云的yum源;

(2)搭建本地yum源。

三、实训原理/流程

(一)FTP原理

FTP是文件传输协议(FileTransferProtocol)属于TCP/IP协议簇的一部分,工作于OSI七层模型的应用层、表示层和会话层,控制端口号为21,数据通信端口号为20。使用FTP服务需要拥有该FTP服务器授权的用户标识和口令进行登录,在远程主机上获得相应的权限后,才可以使用FTP服务器提供的服务。

在互联网中有一部分FTP服务属于“匿名(anonymous)”的,即匿名FTP服务器。匿名FTP服务器的目的是为公众提供文件下载服务,不要求用户必须是该FTP服务器的登记注册用户。

匿名FTP服务器访问时也是有用户名的。用户名是特殊用户名:anonymous。

FTP用于控制文件的双向传输,是Internet文件传送的基础,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。FTP支持跨路由的通信,能够在全互联网上提供服务。

FTP支持多种文件传输方式,这些格式通常由FTP系统决定。文本方式:在文本传输模式中,其传输方式会进行调整,主要体现为对不同操作系统的回车、换行、结束符等进行转译,将其自动文件转译成目的主机的文件格式。

二进制方式:在二进制传输中,保存文件的位序,以便原始和拷贝是逐位对应的,该传输方式不对文件做任何的修改。

FTP的工作模式分为两种:模式1:Standard(也为PORT,主动模式)FTP的客户端发送PORT命令到FTP服务器进行端口确认。

图9- 2

模式2:Passive(也为PASV,被动模式)FTP的客户端发送PASV命令到FTP服务器进行端口确认。

图9- 3

FTP:Standard模式与Passive模式的区别主动模式和被动模式的区别可概述为两个方面:主动模式传输数据是服务器连接到客户端的端口,被动模式传输数据是客户端连接到服务器的端口。

主动模式需要客户端必须开放端口给服务器,被动模式只需要服务器端开放端口给客户端连接即可。注意:很多客户端都是在防火墙内,开放端口给FTP服务器访问比较困难。

根据使用者的登录情况,FTP服务器的账号可分为实体用户、访客、匿名用户三种。实体用户(RealUser)FTP服务器默认允许实体用户(即系统用户)的登录。

以实体用户做为FTP服务器的身份登录时,系统默认不对实体用户进行任何限制,该用户可以针对整个文件系统进行自身权限的工作,即FTP服务器的管理员权限。

访客身份(Guest)在使用FTP服务器时,往往会给不同的部门或者某个特定的用户设置一个专属的帐户,创建一个访客身份就可满足。

匿名身份(Anonymous)匿名用户即不需通过账户密码就可登录访问FTP服务器资源的用户,这类用户在FTP服务器中没有确切的指定账户,但可以访问FTP服务器中开放的文件资源。

需要FTP服务器端允许匿名用户访问。

vsftpd(verysecureFTPdaemon,非常安全的FTP守护进程)是Linux系统下最为常用的FTP服务器软件,具有高安全性、带宽限制、良好的伸缩性、小巧轻快的特性。

vsftpd在安全性、高性能及稳定性三个方面都具有较好表现。vsftpd提供的主要功能虚拟IP设置、虚拟用户、Standalone、inetd操作模式强大的单用户设置能力及带宽限流等。

在安全方面vsftpd从原理上修补了Wu-FTP、ProFTP、BSD-FTP等大多数FTP服务器的安全缺陷,使用安全编码技术解决了缓冲溢出问题,并能有效避免通配符类型的拒绝服务攻击。

使用vsftpd作为官方网站FTP服务器的公司和团队有RedHat、SuSE、Debian、GNU、GNOME、KDE、Gimp、OpenBSD等。

(二)项目背景

你是某企业的网络技术员,公司内部现在有一台FTP服务器和Web服务器,FTP主要用于维护公司的网站内容,包括上传文件、创建目录、更新网页等。为了方便公司非计算机专业员工下载公司资源,故建立两个匿名用户和virftp 两个账户,匿名用户仅有下载权限;而virftp即能下载,也能上传文件,创建目录等权限。

操作系统

IP地址

FTP

CentOS8

192.168.学号.68(自定vmnet

DNS

CentOS8

192.168.学号.68(自定)(前面实验已经部署了)

Client1

CentOS8

192.168.学号.73自定

Client2

Win server 2012

192.168.学号.100自定

(三)任务要求

1. 安装vsftd服务器;

2. 基于虚拟用户模式配置FTP服务器;

3. 客户端验证两账户的不同权限;

4.*构建企业内部FTP文件服务任务目标;(选做)

某企业为了实现文件资源的共享,需要建设FTP文件服务。

基本需求:

    •         行政部、设计部、开发部有独立账号
    •         独立账号访问,默认目录为部门目录
    •         所有账号能够仅能够访问本部门目录,且具有读写权限
    •         提供公共账号,仅允许读取公共目录的资源
    •         禁止匿名账号访问

5. FTP故障排除。

(四)实验步骤

查看网络及yum源的情况:

[root@ftp ~]# cd /etc/yum.repos.d/

[root@ftp yum.repos.d]# ls

CentOS-Linux-AppStream.repo          CentOS-Linux-Debuginfo.repo  CentOS-Linux-FastTrack.repo         CentOS-Linux-Plus.repo

CentOS-Linux-BaseOS.repo             CentOS-Linux-Devel.repo      CentOS-Linux-HighAvailability.repo  CentOS-Linux-PowerTools.repo

CentOS-Linux-ContinuousRelease.repo  CentOS-Linux-Extras.repo     CentOS-Linux-Media.repo             CentOS-Linux-Sources.repo

[root@ftp yum.repos.d]# ping www.aliyun.com -c 1

PING www.aliyun.com.w.cdngslb.com (219.153.159.208) 56(84) bytes of data.

64 bytes from 219.153.159.208 (219.153.159.208): icmp_seq=1 ttl=128 time=8.80 ms

--- www.aliyun.com.w.cdngslb.com ping statistics ---

1 packets transmitted, 1 received, 0% packet loss, time 0ms

rtt min/avg/max/mdev = 8.801/8.801/8.801/0.000 ms

可见与外网连通,但尚未做yum源的本地化。这里选用Ali云构建yum源,删除原有的repo,用Centos-vault-8.5.2111.repo替代。

[root@ftp yum.repos.d]# rm -rf *.repo

[root@ftp yum.repos.d]# cp /cts8etc/yum.repos.d/Centos-vault-8.5.2111.repo  Centos-vault-8.5.2111.repo

[root@ftp yum.repos.d]# yum clean all

0 文件已删除

[root@ftp yum.repos.d]# yum makecache

CentOS-8.5.2111 - Base - mirrors.aliyun.com                                                                   2.3 MB/s | 4.6 MB     00:01

CentOS-8.5.2111 - Extras - mirrors.aliyun.com                                                                  72 kB/s |  10 kB     00:00

CentOS-8.5.2111 - AppStream - mirrors.aliyun.com                                                              2.6 MB/s | 8.4 MB     00:03

元数据缓存已建立。

任务1.匿名用户访问FTP服务

(1)安装启动vsftpd服务

[root@ftp ~]# dnf install vsftpd ftp  -y

//删除rpm -e vsftpd   ftp

查看

[root@ftp ~]# rpm -qa | grep ftp

ftp-0.17-78.el8.x86_64

vsftpd-3.0.3-34.el8.x86_64

(2)vsftpd服务启动、随系统启动,开放防火墙,开放SELinux

查看firewall运行状态

[root@ftp ~]# systemctl status firewalld

firewalld.service - firewalld - dynamic firewall daemon

   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)

   Active: active (running) since Mon 2024-10-28 06:02:33 EDT; 3 weeks 5 days ago

     Docs: man:firewalld(1)

 Main PID: 957 (firewalld)

    Tasks: 2 (limit: 2563)

   Memory: 19.7M

   CGroup: /system.slice/firewalld.service

           └─957 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid

10月 28 06:02:31 68 systemd[1]: Starting firewalld - dynamic firewall daemon...

10月 28 06:02:33 68 systemd[1]: Started firewalld - dynamic firewall daemon.

10月 28 06:02:33 68 firewalld[957]: WARNING: AllowZoneDrifting is enabled. This is considered an insecure configuration option. It will be re>

[root@ftp ~]# firewall-cmd --add-service=ftp --permanent

[root@ftp ~]# firewall-cmd --permanent  --add-service=ftp

[root@ftp ~]#  firewall-cmd --reload

[root@ftp ~]# systemctl start vsftpd

[root@ftp ~]# systemctl enable vsftpd

(3)开放SElinux

更改SElinux为permissive

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

#     enforcing - SELinux security policy is enforced.

#     permissive - SELinux prints warnings instead of enforcing.

#     disabled - No SELinux policy is loaded.

SELINUX=permissive

# SELINUXTYPE= can take one of these three values:

#     targeted - Targeted processes are protected,

#     minimum - Modification of targeted policy. Only selected processes are protected.

#     mls - Multi Level Security protection.

SELINUXTYPE=targeted

查看

Last login: Sat Nov 23 23:57:54 2024 from 192.168.100.99

[root@ftp ~]# getenforce

Permissive

(4)开启client1(~.)为客户端,安装客户端软件ftp

[root@squid ~]# yum install -y ftp

……

已安装:

  ftp-0.17-78.el8.x86_64

完毕!

(5)验证匿名账户能正常访问vsftp服务器。

Centos 8中FTP服务器中匿名访问已在主配置文件中禁用,可先修改为允许后再测试。

图9- 4

……

# Allow anonymous FTP? (Beware - allowed by default if you comment this out).

anonymous_enable=YES

#……

重启vsftpd服务

[root@ftp ~]# systemctl restart vsftpd

(6)客户端访问检测

[root@squid ~]# ftp 192.168.100.68

Connected to 192.168.100.68 (192.168.100.68).

220 (vsFTPd 3.0.3)

Name (192.168.100.68:root): anonymous

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> help

Commands may be abbreviated.  Commands are:

!               debug           mdir            sendport        site

$               dir             mget            put             size

account         disconnect      mkdir           pwd             status

……

ftp> mkdir wuzz

550 Permission denied.

表明匿名账户可以访问其默认目录 /var/ftp,在ftp服务器上新建wuzz目录,并作权限设置。

图9- 5

ftp> cd wuzz

250 Directory successfully changed.

ftp> pwd

257 "/wuzz" is the current directory

任务2. 配置不同虚拟用户访问vsftpd服务访问权限不同(ftp最安全的模式)

1.建立本地虚拟用户

[root@ftp ~]# useradd -d /home/ftp virtual

2、建立虚拟用户数据库

[root@ftp ~]# mkdir /etc/vsftpd

[root@ftp ~]# vi /etc/vsftpd/logins.txt

gavin
123
jimson
123
admin
admin

[root@ftp ~]# db_load -T -t hash -f /etc/vsftpd/logins.txt /etc/vsftpd/vsftpd_login.db

[root@ftp ~]# chmod 700 /etc/vsftpd/vsftpd_login.db

我们看看db文件是什么样的:vi vsftpd_login.db

图9- 6

结果是火星文!

3. 建立基于vsftpd_login的PAM授权文件

[root@ftp ~]# uname -m

x86_64

所以pam文件:

[root@ftp ~]# cat /etc/pam.d/vsftpd.vu

auth    required        /lib64/security/pam_userdb.so   db=/etc/vsftpd/vsftpd_login

account required        /lib64/security/pam_userdb.so   db=/etc/vsftpd/vsftpd_login

4、设置用户权限

建立用来存放用户权限设置文件的目录

[root@ftp ~]# mkdir /etc/vsftpd/virtual

并在该文件夹下依次建立与logins.txt对应的帐号名称相同的文件

write_enable=YES                    # 允许写入

anon_upload_enable=YES              # 允许虚拟用户上传文件

anon_mkdir_write_enable=YES         # 允许虚拟用户创建目录

anon_other_write_enable=YES         # 允许虚拟用户执行其他操作(如改名、删除)

anon_umask=022             # 上传文件的掩码,022时,上传目录权限为755,文件权限为644

local_root=/var/ftp/virftp/       # 指定虚拟用户的虚拟目录(虚拟用户登录后的主目录

创建:gavin(只能下载)/jimson(允许建立、修改、不得删除)/admin(全部权限

[root@ftp virtual]# vi gavin

anon_world_readable_only=NO

local_root=/home/ftp

[root@ftp virtual]# cat jimson

anon_world_readable_only=NO

write_enable=YES

anon_mkdir_write_enable=YES

anon_upload_enable=YES

local_root=/home/ftp

anon_world_readable_only=NO

write_enable=YES

anon_mkdir_write_enable=YES

anon_upload_enable=YES

local_root=/home/ftp

[root@ftp virtual]#vi admin

anon_world_readable_only=NO

write_enable=YES

anon_mkdir_write_enable=YES

anon_upload_enable=YES

anon_other_write_enable=YES

local_root=/home/ftp

5、设置vsftpd.conf

anonymous_enable=NO                                        

anon_upload_enable=NO

anon_mkdir_write_enable=NO

anon_other_write_enable=NO

local_enable=YES                                  #允许本地用户登录,                                      

guest_enable=YES                                   #启用虚拟账户

guest_username=virftp                              #把虚拟账户映射到系统账户virftp

chroot_local_user=YES                             #锁定账户的根目录

allow_writeable_chroot=YES                        #启用chroot时,虚拟用户根目录允许写入

pam_service_name=vsftpd                          #使用虚拟用户验证(PAM验证)

user_config_dir=/etc/vsftpd/vsftpd_viruser     #设置存放各虚拟用户配置文件的目录

anonymous_enable=NO

local_enable=YES

anon_upload_enable=NO

anon_mkdir_write_enable=NO

anon_other_write_enable=NO

write_enable=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_file=/var/log/vsftpd.log

xferlog_std_format=YES

ftpd_banner=Welcome to virtual FTP service.

chroot_local_user=YES

allow_writeable_chroot=YES

listen=YES

listen_ipv6=NO

guest_enable=YES

guest_username=virtual

pam_service_name=vsftpd.vu

user_config_dir=/etc/vsftpd/virtual

6、重新启动vsftpd

service vsftpd restart

7. 验证

客户端安装ftp

以gavin身份登录,可以查看,但无法创建和删除

[root@squid ~]# ftp 192.168.100.68

Connected to 192.168.100.68 (192.168.100.68).

220 Welcome to virtual FTP service.

Name (192.168.100.68:root): gavin

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> dir

227 Entering Passive Mode (192,168,100,68,36,13).

150 Here comes the directory listing.

drwx------    2 1007     1007           45 Nov 27 09:21 wuzz

drwx------    2 1007     1007            6 Nov 27 08:54 wuzz1

226 Directory send OK.

ftp> cd /wuzz

250 Directory successfully changed.

ftp> dir

227 Entering Passive Mode (192,168,100,68,112,187).

150 Here comes the directory listing.

-rw-r--r--    1 0        0             166 Nov 27 09:21 服务器期末考试题目.txt

226 Directory send OK.

ftp> rmdir wuzz

550 Permission denied.

以jimson身份登录,可以查看,创建,但不能删除

[root@squid ~]# ftp 192.168.100.68

Connected to 192.168.100.68 (192.168.100.68).

220 Welcome to virtual FTP service.

Name (192.168.100.68:root): jimson

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> mkdir wuzz2

257 "/wuzz2" created

ftp> rmdir wuzz2

550 Permission denied.

以admin身份登录,具有完全权限

[root@squid ~]# ftp 192.168.100.68

Connected to 192.168.100.68 (192.168.100.68).

220 Welcome to virtual FTP service.

Name (192.168.100.68:root): admin

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> rmdir wuzz1

250 Remove directory operation successful.

ftp> rmdir wuzz2

250 Remove directory operation successful.

ftp> mkdir wuzz3

257 "/wuzz3" created

ftp> dir

227 Entering Passive Mode (192,168,100,68,104,64).

150 Here comes the directory listing.

drwx------    2 1007     1007           45 Nov 27 09:21 wuzz

drwx------    2 1007     1007            6 Nov 27 10:36 wuzz3

226 Directory send OK.


原文地址:https://blog.csdn.net/wusam/article/details/144092479

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!