关闭
搜索
搜索
本版
帖子
用户
热搜:
程序员
简洁模式
高级模式
用户组: 游客
消息
提醒
新听众
我关注的
帖子
道具
勋章
任务
设置
退出
请
登录
后使用快捷导航
没有帐号?
立即注册
设为首页
收藏本站
开启辅助访问
切换到窄版
登录
or
立即注册
快捷导航
搜索
首页
论坛
BBS
MCU单片机技术
程序员交流
如何使用semanage和避免禁用SELinux?
[复制链接]
作者:
二马三水
版块:
›
嵌入式操作系统
›
linux
发布时间:
2021-4-13 23:09:59
1691
0
返回列表
二马三水
当前离线
中级会员
中级会员, 积分 316, 距离下一级还需 184 积分
中级会员
中级会员, 积分 316, 距离下一级还需 184 积分
积分
316
发消息
楼主
电梯直达
二马三水
发表于 2021-4-13 23:09:59
|
只看该作者
|
倒序浏览
|
阅读模式
SELinux颇具挑战性;当这个安全层阻止您的应用程序或服务时,您的第一个反应往往是将其设成“禁用”或“允许”。在安全至关重要的当下,您无法进行这种更改,否则您的整个系统或网络安全堪忧。您不想那样。
为何不使用可助您一臂之力的工具?这款工具就是semanage,它是SELinux策略管理工具。借助semanage,您可以调整文件上下文、端口上下文和布尔值,这将有助于您确保系统可使用,又不必禁用安全系统。
本文将介绍以下命令:
semanage boolean
semanage fcontext
semanage port
知道这些命令后,您应该能够在Linux系统上更好地使用SELinux。
您需要什么?
运行中的Linux实例(使用SELinux)
拥有sudo特权的用户
如何使用semanage boolean?
使用semanage boolean,您可以启用和禁用允许规则集,因而可以为不同的用例允许不同的规则集。假设您有一台Web服务器,必须允许读取用户内容,比如来自主目录的数据。SELinux默认情况下不允许这么做。使用semanage boolean命令,您可以启用该功能。
您可以使用semanage boolean命令,通过以下命令列出所有可用的HTTP相关策略:
sudo semanage boolean -l | grep httpd
httpd_read_user_content (
off
,
off
) Allow httpd
to
read
user content
每份列表含有布尔值的名称、布尔值的当前和持久状态以及布尔值描述。如上所示,httpd_read_user_content布尔值设为off。我们如何启用它?很简单:
sudo semanage boolean -m --on httpd_read_user_content
使用-m选项,我们指示SELinux使用后面的选项(--on)来修改记录(本例中是httpd_read_user_context)。
就是这样。您已完成了设置,SELinux将允许Web服务器读取用户内容。
如果想要列出所有布尔值,看看您还可以做些什么,执行以下命令:
sudo semanage boolean -l
如何使用semanage fcontext?
semanage fcontext命令用于管理文件上下文定义,这包含额外信息(比如SELinux用户、角色、类型和级别),以做出访问控制决策。文件上下文是管理员在SELinux上面临的最大问题之一。您可能已经创建了一个新目录来容纳SSH主机密钥,但是如果没有正确的文件上下文,SELinux不会允许通过SSH访问该目录。
您可以执行什么操作?
可以使用semanage fcontext更改新目录的文件上下文。
与boolean一样,fcontext也有可以使用的策略。想查看可用策略的完整列表,请执行以下命令:
sudo semanage fcontext -l
如果想列出所有与SSH守护程序有关的策略,请执行以下命令:
sudo semanage fcontext -l | grep sshd
在该列表中,您将看到以下条目:
/etc/ssh/primes regular file system_u:object_r:sshd_key_t:s0
/etc/ssh/ssh_host.*_key regular file system_u:object_r:sshd_key_t:s0
/etc/ssh/ssh_host.*_key\.pub regular file system_u:object_r:sshd_key_t:s0
假设您要将SSH主机密钥放在/data/keys中。创建目录,将所有键移动到新主目录中,并更改sshd_config文件以匹配新映射。尝试使用SSH时,它会失败。为什么?因为/data/keys没有正确的fcontext。可以使用以下两个命令解决该问题:
sudo semanage fcontext -a -t sshd_key_t '/data/keys/*.*'
sudo restorecon -r /data/keys
我们使用semanage fcontxt创建新策略之后,必须使用restorecon命令对新文件设置安全上下文。正则表达式*.*获取目录中的所有文件。
如何使用semanage port?
您可能猜到了,semanage port让您可以在自定义端口上运行服务。如果您尝试在自定义端口上运行服务,该服务会失败。假设您想在非标准端口上运行SSH守护程序。如果您仅为此配置sshd_config,会发现SELinux将阻止您获得访问权限,因为SELinux不知道您已进行了此更改。
如果想把SSH端口更改为2112:
semanage port -a -t ssh_port_t -p tcp 2112
sudo firewall-cmd --add-port=2112/tcp --permanent
sudo firewall-cmd --reload
至此,您终于可以使用非标准端口,通过SSH访问支持SELinux的服务器。
sudo semanage port –l
结论
SELinux是一种功能很强大的工具,擅长保护Linux服务器免受不必要的更改。这种功能带来了一定程度的复杂性。熟悉上述三个命令,可使管理工作变得更轻松,而不是禁用SELinux或将其设置为“许可”模式。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有帐号?
立即注册
收藏
0
相关帖子
•
Shell:用户使用Linux的桥梁
•
Linux查看环境变量当前信息和查看命令
•
简单架设LINUXVPS服务器
•
超详细的PyCharm教程,必须收藏!
•
Linux操作系统应用试题
•
DBA常用Linux命令
•
Linux用户宝典:值得一用的5款远程桌面应用程序
•
2021最新100GJava学习资料,从入门到精通!
•
Linux5.14内核主线预计可与RaspberryPi400兼容
•
《Linux内核编码风格》官方手册最新中译本
回复
使用道具
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
表情
@朋友
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
生活交流*灌水区*工程师滋润生活*
招聘&找工作
快速回复
返回顶部
返回列表