Linux系统工程师--(1)Vsftpd服务的部署及优化与linux中内核级加强型火墙的管理

本文详细介绍了如何在Linux系统上部署VSFTPD服务,并对其进行了优化配置,包括匿名用户、本地用户和虚拟用户的访问控制。此外,还探讨了SELinux的基本功能、状态管理、安全上下文修改等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux系统工程师

实验所用系统为Redhat-rhel8.2。

Linux的系统工程师–Vsftpd服务的部署及优化

实验环境:

  • server主机
selinux关闭(需重新开启虚拟机`reboot`)
172.25.254.109
vim /etc/sysconfig/selinux
///
disabled
///
getenforce		##查看selinix状态
火墙开启
dnf安装设定完成
  • client主机
172.25.254.9
selinux关闭
本地文件仓库配置完成
安装lftp			##ftp协议文本浏览器

一、ftp介绍

ftp:file transfer proto
互联网中最老牌的文件传输协议
是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。
默认情况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制信息。

二、vsftpd安装及启用

dnf install vsftpd -y		##server
dnf install lftp -y			##client
关闭selinux
systemctl disable --now firewall

vim /etc/vsftpd/vsftpd.conf	##启动匿名用户的访问功能
///
12 anonymous_enable=YES
///
systemctl restart vsftpd

测试:

ftp://ip
lftp ip			##此访问方式必须能列出资源才算访问成功
				##使用完成后exit退出

登录控制实验:

  1. 先测试,匿名用户不能登录ftp
  2. 指定用户登录成功
  3. 修改配置文件,重启服务,使匿名用户可以登录

实验步骤:

###server&client
dnf search ftp				
dnf install vsftpd.x86_64 lftp.x86_64 -y
rpm -ql vsftpd
systemctl enable --now vsftpd
netstat -antlupe | grep vsftpd		##查看端口
firewall-cmd --permanent --add-service=ftp	##在火墙永久开启的服务里加上ftp
firewall-cmd --reload				##重启火墙
firewall-cmd --list-all				##查看火墙永久开启的服务

###client测试
lftp 172.25.254.109
#`ls' at 0 [530 Login incorrect.]	##匿名用户访问失败,修改配置文件12:no->yes
###server
vim /etc/vsftpd/vsftpd.conf			##修改配置文件
///
anonymous_enable=YES
///
systemctl restart vsftpd			##重启服务
###client测试
lttp 172.25.254.109					##匿名用户访问成功

[注意] 在登录目录中可以查看,即ls,才是登录成功

请添加图片描述
#匿名用户登录被拒绝,指定用户登录成功
请添加图片描述

#修改配置文件
请添加图片描述

#匿名用户登录成功

三、vsftpd基本信息

服务名称:vsftpd.service
配置目录:/etc/vsftpd
主配置文件:/etc/vsftpd/vsftpd.conf
默认发布目录:/var/ftp
报错信息:
	550	##程序本身拒绝
	553	##文件系统权限限制
	500	##权限过大
	530	##认证失败

四、匿名用户访问控制

[注意] 修改完配置文件都要重启服务 systemctl restart vsftpd

在配置文件作修改
/etc/vsftpd/vsftpd.conf

lftp 192.168.0.10				##当访问ftp服务时没有加入用户认证为匿名访问
lftp 192.168.0.10 -u westos		##本地用户访问

1、登录控制和家目录控制

登录控制()						##有指的是,配置文件中有此配置
12 anonymous_enable=YES|NO		##具体在上文中有做此实验

家目录控制(没有)					##当没有时,需要手动添加
anon_root=/westosdir			##当添加了家目录之后,登录的位置即在指定的家目录中

请添加图片描述
#家目录控制
请添加图片描述
#家目录控制测试

2、上传控制

#可将上一个实验的家目录改回默认,即注释掉添加的内容

上传控制()
29 anon_upload_enable=YES|NO	##默认为YES,删掉注释符即可

chmod 775 /var/ftp/pub
chgrp ftp /var/ftp/pub			##ftp不可写则不能上传
###client
lftp 192.168.0.109
cd pub
put /etc/passwd					##上传文件
ls								##查看是否上传成功

请添加图片描述
#server

请添加图片描述
#client

[注意] 如果目标文件夹已经存在要上传的文件,也会报错553,需要在server删掉已经存在的文件

3、目录建立控制

目录建立控制()
anon_mkdir-write_enable=YES|NO	##默认为YES,删掉注释符即可
###client
cd pub
mkdir dir						##查看是否可以建立

请添加图片描述
#client,目录建立成功

4、下载控制

下载控制(没有)
anon_world_readable_only=NO		##匿名用户可以下载不能读的文件(默认为YES,匿名用户不能下载不能读的文件)
								##下载的东西在登陆ftp的位置

请添加图片描述
#client,下载成功

[注意] 匿名用户不能下载不能读的文件,并且下载的文件所有人和所有组要为默认用户ftp,否则下载失败

请添加图片描述
#server,建立文件,修改文件权限和所有人、所有组
请添加图片描述
#client,文件可读不可读但所有人所有组不符不可读但所有人所有组相符的情况对比

5、删除重命令控制

删除控制(没有)
anon_other_write_enable=YES|NO	##yes为可以删除

请添加图片描述

6、匿名用户上传文件权限设定

匿名用户上传文件权限设定(没有)
anon_umask=xxx					##默认预留权力
								##当设定chown_username之后上传文件权限将不受此参数设定控制
anon_umask=022					##上传文件权限为644(文件减去111)

请添加图片描述

7、匿名用户上传文件的用户身份设定

匿名用户上传文件的用户身份设定()
chown_uoloads=YES
chown_username=westos			##此用户必须已存在
chown_upload_mode=0644			##文件默认权力

请添加图片描述
#server,修改配置,查看已上传的文件的所有人和权力
请添加图片描述
#client,上传文件

8、登录数量控制

登录数量控制(没有)
max_clients=1					##此时可以ls的用户最多只有1名,其他都需要等待

请添加图片描述
#client,第二个登录的用户被拒绝

9、传输速率控制

传输速率控制(没有)
anon_max_rate=102400(字节=100k)	

测试:
dd if=/dev/zero of=westosfile bs=1M count=500	##建一个500M的文件
lftp 172.25.254.109
put westosfile					##上传

请添加图片描述
#修改过后,最开始上传的速度比较快是告知此源可用,之后会慢慢减速到设定的速度

五、本地用户的访问

[注意] 修改完配置文件都要重启服务
systemctl restart vsftpd

在配置文件作修改
/etc/vsftpd/vsftpd.conf

1、登录控制

登录控制(有)
local_enable=YES|NO			#YES为可登录,默认为yes

###server
useradd westos
useradd lee
echo westos | passwd --stdin westos
echo westos | passwd --stdin lee
###client
lftp 172.25.254.109 -u westos

请添加图片描述

2、写权限控制

写权限控制(有)
write_enable=NO|YES			##默认可写,写功能的总开关,关闭后匿名用户也不可写

请添加图片描述
#默认可写,修改后上传文件被拒绝

3、家目录控制

[注意] 将上一个实验的写权限恢复默认,即打开状态

家目录控制(没有)
local_root=/westosdir

请添加图片描述
#client,进入的目录为/westosdir

4、上传文件权限控制

[注意] 建议将家目录恢复默认,注释掉修改的内容即可

上传文件权限控制(有)
local_umask=077				##默认上传权限为644,即umask=022

请添加图片描述
#修改后上传的文件权限改变

5、用户登录控制

/etc/vsftpd/ftpusers		##永久黑名单(权限最大)
							#即改即生效
/etc/vsftpd/user_list		##临时黑名单(可能会因为设定变成白名单)
							#即改即生效
1)用户登录白名单
用户登录白名单(没有)
userlist_deny=NO			##设定/etc/vsftpd/user_list为白名单
							##不在名单中的用户不能登录ftp

请添加图片描述
#在配置文件中加入lee用户

请添加图片描述
#除lee用户以外的其他普通用户被拒绝登录

2)锁定用户到自己家目录中

[注意] 注释掉白名单

锁定用户到自己家目录中(有,是否能切换到/)
默认下用户可以浏览/,不安全,所以将其锁定在自己的家目录
chroot_local_user=YES		##YES=锁定
###server
chmod u-w /home/*			##显示权限过大时,删除写权限则不被锁定

请添加图片描述

3)文件当中指定用户被锁定在自己家目录(黑名单)
文件当中指定用户被锁定在自己家目录(黑名单)
chmod u+w /home/*			##恢复权限
chroot_local_user=NO		##默认为NO,用户不被锁定
chroot_list_enable=YES		##目录开启
chroot_list_file=/etc/vsftpd/chroot_list	##文件中的用户被锁定

请添加图片描述
#指定westos用户被锁定,则其他用户可以切到/,westos用户被拒绝

4)文件当中指定用户不被锁定(白名单)
文件当中指定用户不被锁定(白名单)
chmod u+w /home/*
chroot_local_user=YES		##默认为NO,YES指用户被锁定
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list	##文件中的用户不被锁定,即为白名单

请添加图片描述
##指定westos用户不被锁定,则其他用户不可以切到/,westos用户被允许

[注意] 报错no route to host

1、网络						##确保网络畅通,即虚拟机真机互通
2、服务						##确保服务开启
systemctl status vsftpd.service
systemctl start vsftpd.service
3、火墙						##确保火墙开启
firewall-cmd --permanent --add-service=ftp	##在火墙永久开启的服务里加上ftp
firewall-cmd --reload		##重启火墙
firewall-cmd --list-all		##查看火墙永久开启的服务
4、selinux					##确保selinux关闭
getenfoce-->disabled

六、虚拟用户访问

先检测用户登录环境(匿名用户和普通用户可用)
匿名用户登录需打开(anonymous_enable=YES)

1、建立虚拟用户过程

1)修改认证文件
cd /etc/vsftpd/
vim /etc/vsftpd/westos_pam		##建立认证文件模板,文件中的虚拟用户可以根据设定的密码登录ftp
///
westos1							##虚拟用户名
123								##对应的密码
westos2
123
///
2)对认证文件进行加密(系统不识别,需转换成hash)
db_load -T -t hash -f westos_pam westos_pam.db

##T-transfer;	t-type;	f-指定要转换的文件
3)修改认证策略
vim /etc/pam.d/westos 
///
account required        pam_userdb.so   db=/etc/vsftpd/westos_pam		##用户
		##用pam_userdb.so插件检测文件中的账号是否存在(westos_pam后的.db会自动补齐)
auth    required        pam_userdb.so   db=/etc/vsftpd/westos_pam		##密码
///

pam插件-用来做身份认证
rpm -qc vsftpd–> /etc/pam.d/vsftpd(认证策略)
required-当此认证不通过,整个认证失败
两个都配对则认证成功,任何一个认证失败则整个失败

4)修改配置文件
vim /etc/vsftpd/vsftpd.conf
///
pam_service_name=westos		##改变认证策略
guest_enable=YES			##开启虚拟用户登录
guest_username=ftp			##指定一个本地用户作为虚拟用户登录的身份
							##ftp进入的目录不能有写权限,否则会报错权限过大
///

[注意] 此时除了指定用户外,其他的本地用户都不能登录

5)重启服务
systemctl restart vsftpd.service 
6)测试
lftp 172.25.254.109 -u westos1
Password:123
ls(有正确输出)

请添加图片描述

2、虚拟用户家目录的独立设定

1) 实验准备
mkdir -p /ftphome/westos{1,2}		##与虚拟用户名相同才能使用$
touch /ftphome/westos1/westos1file
touch /ftphome/westos2/westos2file
mkdir /ftphome/westos{1,2}/pub
2)修改配置文件
vim /etc/vsftpd/vsftpd.conf
///
local_root=/ftphome/$USER	##指定家目录
user_sub_token=$USER		##变量声明
///
systemctl restart vsftpd
3)测试
lftp 172.25.254.109 -u westos1
Password:123
ls(pub;westos1file)

请添加图片描述

3、配置独立

  • 实验环境
注释掉匿名用户上传和建立目录可写
///
#anon_upload_enable=YES
#anon_other_write_enable=YES
#anon_world_readable_only=NO
#anon_mkdir_write_enable=YES
///
systemctl restart vsftpd.service
  • 实验准备
chgrp ftp /ftphome/westos{1..3}/pub
chmod 775 /ftphome/westos{1..3}/pub		##开启拥有者和拥有组权限
1)修改主配置文件
vim /etc/vsftpd/vsftpd.conf
///
user_config_dir=/etc/vsftpd/westos	##改变认证策略
///
2)建立配置目录
mkdir /etc/vsftpd/westos
3)写用户名称相同的文件为用户配置文件
vim /etc/vsftpd/westos/westos1
///
anon_upload_enable=YES		##只有westos1自己可上传
///
4)重启服务
systemctl restart vsftpd.service
5)测试
lftp 172.25.254.109 -u westos1
Password:123
ls
cd /pub
put /etc/passwd
#2754 bytes transferred
exit

westos2和3不可以上传

请添加图片描述

Linux的系统工程师–linux中内核级加强型火墙的管理

实验环境:

还原
rm -rf /etc/vsftpd
dnf reinstall vsftpd -y
systemctl restart vsftpd
需要开启一些功能
vim /etc/vsftpd/vsftpd.conf
///
anonymous_enable=YES
anon_upload_enable=YES
///
systemctl restart vsftpd

一、selinux的功能

selinux-disableselinux-enable
ftp uploadyes(可以上传)no
mv /mnt/file /var/ftpyes(可以被浏览)no
ps axZgrep vdftpd-
ls -Z /mnt/westoslee标签

实验准备:

touch /mnt/westosfile
mv /mnt/westosfile /var/ftp/
chgrp ftp /var/ftp/pub/
chmod 775 /var/ftp/pub/
  • selinux-disable状态
lftp 172.25.254.109
ls
cd /pub
put /etc/passwd

ps axZ | grep vdftpd

touch /mnt/westoslee
ls -Z /mnt/westoslee

请添加图片描述
#可以上传,可以浏览
请添加图片描述
##不可见

  • selinux-enable状态
vim /etc/sysconfig/selinux
///
enforcing
///
reboot
touch /mnt/westosfile1
mv /mnt/westosfile1 /var/ftp/

ps axZ | grep vdftpd
#unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 1644 pts/0 R+   0:00 grep --color=auto vdftpd

ls -Z /mnt/westoslee
#system_u:object_r:default_t:s0 /mnt/westoslee

请添加图片描述
请添加图片描述

给程序和文件加上标签,标签匹配才能访问

  • selinux对于文件的影响
    当selinux开启时,内核会对每个文件及每个开启的程序进行标签加载
    标签内记录程序和文件的安全上下文(context)
  • selinux对程序功能的影响
    当selinux开启会对程序的功能加载开关,并设定此开关的状态为关闭
    当需要此功能时需要手动开启功能开关
    此功能叫sebool

二、selinux的状态及管理

1、selinux的开启

vim /etc/sysconfig/selinux
disabled	##selinux关闭
enforcing	##selinux开机设定为强制状态(拒绝且警告)
		##不符合条件一定不能被允许,并且被警告
permissive	##selinux开机设定为警告状态(通过且警告)
		##不符合条件被允许,并且被警告

[注意] selinux开启或关闭需要重启系统

getenforce			##selinux状态查看

selinux开启后强制和警告级别的转换
setenforce 0	##警告
setenforce 1	##强制

请添加图片描述

selinux日志位置
/var/log/audit/audit.log

三、selinux的安全上下文

1、查看

ls -Z		##查看文件的安全上下文
ls -Zd		##查看目录的安全上下文
ls -axZ		##查看进程的安全上下文

2、修改安全上下文

  • 临时修改
    在selinux重启后会还原
chcon -t	标签					文件|目录
chcon -t	public_content_t	/var/ftp/westosfile1
chcon -Rt	public_content_t	/westosdir	##修改目录本身及子文件的安全上下文

请添加图片描述

  • 永久修改
    如果需要特殊指定安全上下文,需要修改内核安全上下文列表
semanage fcontext -l			##查看内核安全上下文列表
semanage fcontext -a -t public_content_t '/westosdir(/.*)?'
restorecon -RvvF /westosdir
touch /.autorelabel				##重启系统时selinux初始化文件标签开关文件

请添加图片描述
#永久修改
请添加图片描述
#初始化文件标签开关文件后,临时修改的安全上下文恢复默认,永久修改的没有改变

四、seport

selinux会限制端口的使用,enforcing下被拒绝,permissive下可以使用

semanage port -l | grep ssh					##列出端口
semanage port -a -t ssh_port_t -p tcp 1111	##添加端口
semanage port -d -t ssh_port_t -p tcp 1111	##删除端口

实验:

vim /etc/ssh/sshd_config
///
修改端口22->2222
///
getenforce(Enforcing)
systemctl restart sshd						##重启服务被拒绝
setenforce 0
getenforce(Permissive)
systemctl restart sshd						##可以重启
setenforce 1
systemctl restart sshd						##被拒绝
semanage port -l | grep ssh					##列出端口
semanage port -a -t ssh_port_t -p tcp 2222	##添加端口
semanage port -l | grep ssh					##添加成功
systemctl restart sshd						##可以重启
semanage port -d -t ssh_port_t -p tcp 2222	##删除端口
semanage port -l | grep ssh					##删除成功
systemctl restart sshd						##被拒绝
vim /etc/ssh/sshd_config					##将配置文件恢复
systemctl restart sshd

请添加图片描述

五、setrouble

/var/log/audit/audit.log	##selinux警告信息
/var/log/messages			##selinux问题解决方案
setroubleshoot-server		##此软件功能时采集警告信息先并分析得到解决方案存放到message中

六、sebool

getsebool -a						##显示服务的bool值
setsebool -P ftpd_anon_write on		##更改bool值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值