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]# lsCentOS-Linux-AppStream.repo CentOS-Linux-Debuginfo.repo CentOS-Linux-FastTrack.repo CentOS-Linux-Plus.repoCentOS-Linux-BaseOS.repo CentOS-Linux-Devel.repo CentOS-Linux-HighAvailability.repo CentOS-Linux-PowerTools.repoCentOS-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 1PING 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 0msrtt 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
|
我们看看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)!